WCFとVisualStudio2008を使用して、大規模な分散アプリケーションを構築しています。WCFの経験はあまりないため、クライアントとサーバー間のWCF通信のプロトタイプ作成に時間を費やしています。サーバーサブシステム内のWCFサービスによってパラメーターまたはリターンタイプとして参照されるクラスは、生成されたコードを介してVisualStudioによってクライアントプロキシに「コピー」されることがわかりました。私が驚いたのは、これを行うと、VisualStudioがクラスの名前空間を変更することでした。たとえば、次のコードがあるとします。
namespace MyLibrary
{
class MyClass
{
//...
}
}
MyLibrary.dll
そして、それをにコンパイルして、WCFサービスが参照することを想像してみてください。一部のWCFサービスはMyLibrary.MyClass
、リターンタイプとして使用します。MyClass
生成されたクライアントプロキシコードを見ると、自動的に利用可能であることがわかります(これはすばらしいです)が、MyLibrary
名前空間ではなく、VisualStudioによって生成された名前空間にあります。
何百ものクラスが複数のアセンブリに分散された複雑なドメインオブジェクトモデルを計画しています。これが、VisualStudioが行うコード生成全体にどれだけうまく「移植」されるかを懸念しています。また、私たちが設計した名前空間のすべての優れた階層がおそらく失われるのではないかと心配しています。私たちの最初のビジョンは、このドメインオブジェクトモデルのクラスライブラリを作成し、サーバーとクライアントの両方でそれを削除することでした。しかし、WCFマジックは必要なクラスのコードを生成するように見えるので、クライアントに独自のライブラリをデプロイすると競合が発生することを想像します。
次に、2つの具体的な質問があります。
- クライアントプロキシコードを生成するときに、Visual Studioが独自の名前空間スキームではなく元の名前空間スキームを使用するようにする方法はありますか?そうでない場合、これはクライアント上の「コピーされた」ライブラリのユーザビリティに影響しますか?
- それでも、元のライブラリをクライアントにデプロイできますか?私は想像していませんが、それはどのような衝突を引き起こすでしょうか?
ありがとうございました。