サービスレイヤーAPI
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
すべてのサービスレイヤーAPIには、ECSと通信するための抽象メソッドと汎用メソッドが多数含まれています。情報は両方向に流れます。製品情報、価格、および在庫情報は、ユーザー インターフェイスで訪問者に表示できるように、ECSから読み取る必要があります。ショッピングカートの内容、顧客アカウント情報、および配送情報は、注文を作成できるようにECSで解析する必要があります。
デフォルトのサービス レイヤーは、カスタマイズまたは置換できます。
サービス層の各メソッドは、1つのRequestオブジェクトを受け取り、1つのResultオブジェクトを返します。RequestオブジェクトとResultオブジェクトの両方をメソッドごとに個別にカスタマイズして、柔軟性を最大限に高めることができます。サービス層のインターフェイスは、ドメイン モデル オブジェクトが顧客である場合でも、入力されるパラメーターと返される結果に加えて、同じままです。
メソッドのRequestオブジェクトまたはResultオブジェクトをカスタマイズした場合は、ジェネリックを受け入れる対応する拡張メソッドを使用できます。
例えば:
ショッピングカートに行を追加するためのデフォルトのメソッドシグネチャ:
同じメソッドのジェネリック バージョン:
サービス方法
サービス方法
可能であれば、サービス プロバイダーのすべてのメソッドに次の命名規則を使用します。
-
CreateEntityName (CreateCartなど)
-
GetEntityName (GetCartなど)
-
DeleteEntityName (DeleteCartなど)
-
UpdateEntityName (UpdateCartなど)
可能であれば、エンティティ上の関連項目を操作するすべてのメソッドに次の命名規則を使用します。
-
AddRelatedEntityName (例: AddLineItem)
-
RemoveRelatedEntityName (例: RemoveLineItem)
-
UpdateRelatedEntityName (例: UpdateLineItem)
要求パラメーター
要求パラメーター
サービスメソッドは1つのリクエストオブジェクトをパラメータとして取り、このリクエストオブジェクトはServiceProviderRequestから継承する必要があります。複数のパラメータの代わりに1つのリクエストオブジェクトを使用する場合、カスタマイズに関係なく、同じサービスメソッドが引き続き使用できます。サービス メソッドが機能するには追加のデータが必要なため、新しいパラメーターを使用して要求オブジェクトを拡張するだけで、サービス メソッドを変更しなくても、新しく必要なデータがプレゼンテーション層に公開されます。
リクエストオブジェクトのカスタマイズ
リクエストオブジェクトのカスタマイズ
リクエストオブジェクトを拡張してより多くのパラメータを処理する場合、2つのオプションがあります。最初のオプションは、次の例のように、適切なリクエストクラスを単純に拡張することです。
場合によっては、リクエストを延長できないことがありますが、代わりに、リクエストのプロパティバッグを使用して、必要なプロパティを渡すことができます。
結果オブジェクト
結果オブジェクト
結果オブジェクトは通常、要求オブジェクトをミラーリングしますが、ServiceProviderResultから継承し、システム・メッセージのコレクションを持つという違いがあります。可能であれば、例外ではなく、常にシステムメッセージを返してください。
次のパターンを使用して、結果にメッセージを設定できます。