WCF契約の設計(操作 /データ)
-
30-09-2019 - |
質問
私は現在、いくつかのWCFサービスの設計を検討しており、運用 /データ契約を処理する最良の方法についてコミュニティの意見を得たいと考えています。
2つの基本的な操作契約があります 引用を作成します そして2番目 引用にアイテムを追加します (そして、舞台裏で合計を計算します)。
最初は取り入れます 顧客情報 と 店舗情報 と 見積もりを返します.
2番目のテイク 引用 と アイテムオブジェクト, 、合計を計算します アイテムで見積もりを返します.
私の質問は、このシナリオでデータ契約を設計する方法についてです。
のために CreateQuote, 、顧客プロパティとストアプロパティセットで見積物オブジェクトを渡す必要がありますか、それとも顧客とストアオブジェクトを含むが、見積もりオブジェクトが渡されないある種のquoterequestオブジェクトがある必要がありますか?
のために addquoteitem, 、QUOTEEMオブジェクトを引用オブジェクトを含む必要なプロパティを設定した場合、または引用符オブジェクトとアイテムオブジェクト(関係なし)を備えたQuotitemRequestオブジェクトがある場合、および引用符のあるオブジェクトを使用した再計算された引用が返される必要がありますか?
言い換えれば、彼らはこのようなものになるべきですか?
Quote CreateQuote(Quote quote);
Quote AddQuoteItem(QuoteItem quoteItem);
それとも彼らはこのようなものになるべきですか?
Quote CreateQuote(QuoteRequest quoteRequest);
Quote AddQuoteItem(QuoteItemRequest quoteItemRequest);
解決
リクエスト/応答ラッパーでそれらを包むことは、少し余分なものであることが証明されるかもしれないと主張します。 WCFサービスメソッドへのパラメーターは「リクエスト」であり、リターンタイプが「応答」であるといつでも推測できます。
シナリオでは、顧客タイプとストアタイプをCreateQuoteメソッドに合わせて、見積もりタイプを返します。次に、見積もりタイプに合格し、見積もりタイプのいずれか、または代わりに成功を示すブールをAddQuoteItemメソッドに返します。
繰り返しますが、シナリオでは、リクエスト/応答のクラスは、単一のタイプの1レベルのラッパーになります。メソッドの単一戻り値に複数の異なるタイプをラップするために、応答風のクラスを返すシナリオのみを想定できました。