WCFサービスインターフェイスの設計。手続き型とオブジェクト指向設計
-
29-09-2019 - |
質問
私たちは、他のシステムで使用できる製品を構築しています。 SOAがあるので、サービスのみを開発します(WCF)。そのサービスのインターフェースを設計する方法について、いくつかの物議を醸す議論がありました。私たちは、サービスのための手続きとOOの設計を選択しています。
私たちのサービスは.NETとJavaから使用されるため、OO設計があればサービスと統合するのは難しいと言う人もいます。その他は、サービスマストがOOアプローチを使用しないと考えています。 OOは完全に大丈夫だと言う人もいます。その結果、明確なうつ病はありません。
WCFは両方のデザインを簡単に使用する簡単な方法を提供しますが、最適なものは何ですか?
解決
使用している「オブジェクト指向」の定義は、「オブジェクト」を管理するプログラムの概念であり、これらの個々のオブジェクトが内部状態を管理し、呼び出される関数を公開すると仮定します。
これに最も近いWCF Parralelは、各サービスインスタンスの寿命がクライアントによって制御されているセッションベースのサービスです。
このサービスをJavaによって呼び出したい場合は、Classic Web-Serviceプロトコルを使用するため、Basichttpbindingを使用する必要があります。
このバインディングはセッションベースのサービスのサポートを提供しないため、文字通りセッションベースのサービスを使用することはできません。
したがって、サービス自体に関して「オブジェクト指向の」パラダイムを適用することはできません。
他のヒント
「私の質問は、スカラーパラメーターの代わりに複雑なタイプを受け取るべきサービスの方法についての質問です。」
以下を自問する必要があります。
a)サービスが非Oooクライアントによって使用される可能性はありますか? Dunno、Cobolバッチ?あなたの会社がOO Tech(Java/.NET)に標準化されている場合でも、この特定のサービスが将来、外部エンティティ(顧客、PHP Webサイトなど)が使用できる可能性があります。
b)過去にこのようなサービスをすでに多く作成しましたか(複雑なタイプでのマーシャル化/シリアル化/脱必要な問題がないことを完全に確信していますか、それとも少なくとも安全に使用できるものを認識していますか?
両方のポイントに完全に自信がある場合は、サービスの入力と出力の両方を設計する際に「OO」アプローチを自由に使用してください。それ以外の場合は、最も安全な(より原始的な)アプローチに移動し、スカラーのグループで「オブジェクト」を分解します。