当社はかなり大規模なSOAイニシアチブを開始しています。私たちは多くのことを正しくやっています。良いコミュニケーションがあります。必要に応じてツールの費用。そして、移行に役立ついくつかの優れた専門知識をもたらしました。
私たちはグループとして従うことができる標準を開発しようとしていますが、提案されている標準の1つが私をかなり悩ませています。
すべての操作が要求オブジェクトを受け取り、応答オブジェクトを返すパターンを標準化しました。
私はこれが多かれ少なかれ多くの人々にとって標準的なアプローチであることを理解していますが、なぜ私は気にする必要があるのでしょうか?(私は受け取った知恵があまり得意ではありません。なぜか必要です)。
私が提供するサービスのほとんどは、単純な組織メタデータの取得です。たとえば、特定のユーザーのセキュリティポリシーを見つけます。これにはユーザーIDのみが必要です。標準では、この要求をオブジェクトにラップし、返されたポリシーを応答オブジェクトにラップする必要があると説明されています。
私の不安は、契約から生成されるWSDLを見ると増幅されます。WCFは要求および応答メッセージを自動的に生成し、要求/応答オブジェクトもラップします。
複雑なリクエストを行う場合は、複雑な入力オブジェクトが必要であることを完全に理解しています。これは、サービスが関与していなくても行うことです。
私の質問は、次の場合に要求と応答を自動的にラップする必要がある理由です。
- シンプルなサービスの表現力が低下します
- とにかく複雑なサービスのためにそれをするでしょう
- とにかくWCFは要求/応答メッセージを作成します
このアプローチを支持する次の議論を見つけました。
オプションのパラメーターを要求オブジェクトに組み込むことにより、バージョン管理をサポートします。
当時、私はかなりの量のCOMを実行していましたが、これはバージョニングのほぼアンチパターンと考えています。いくつかの点で、私はそれが助けになると思いますが、それが助けになる場所では、とにかく既にパラメータオブジェクトを持っていると期待しています。
共通のデータと動作を基本クラスに分離できます
これは私にいくらかの重さをもたらします。
RPCスタイルの動作からメッセージング動作に人々を誘導します
マイクロソフトのサイトでこれを読んで、教祖から聞いたが、それが何を意味するのか、なぜそれが価値があるのか、まだはっきりとはわからない。自然に見えるインターフェースは、人々がリモートサービスを呼び出していることを忘れがちなのでしょうか?
おそらく300のメソッドのシグネチャをリファクタリングすることを検討しているので、これは些細なことではありません。私は実装における一貫性の大ファンですので、私は喜んで痛みを引き受けます。それは最終的にすべての価値があることを知るのに役立ちます。