This記事では、WCFサービスソリューションを2つのプロジェクトに分割することを提案しています.1つは契約アセンブリ、1は実装アセンブリです。WCFサービスソリューションを2つのアセンブリに分割する利点は何ですか?1つは契約のため、もう1つは実装のためですか?
なぜこの利点がありますか?この分割から得られるものは何ですか?ありがとう。
This記事では、WCFサービスソリューションを2つのプロジェクトに分割することを提案しています.1つは契約アセンブリ、1は実装アセンブリです。WCFサービスソリューションを2つのアセンブリに分割する利点は何ですか?1つは契約のため、もう1つは実装のためですか?
なぜこの利点がありますか?この分割から得られるものは何ですか?ありがとう。
明白な利点は、あなたのクライアントにサービス契約のdllファイルを共有できることです。クライアントとサーバーの間で共通のサービス契約DLLを共有する場合、クライアントはChannelFactory
クラスのサービスを使用できます。
ChannelFactory<IHelloWorld> channel = new ChannelFactory<IHelloWorld>("tcp");
(二つの異なる方法WCFサービスは、クライアントによって消費することができます。(Using ChannelFactory Vs. Proxies in WCF)
一般的に(WCFサービスは特にありません)、デザインの観点からは、実装とインターフェイスを分離することをお勧めします。
ただし、WCFサービスでは、次の点に注意する必要があります。インターフェイスプロジェクトにサービスメソッドによって使用されるオブジェクトのインターフェイスが含まれている場合、WCFサービスインターフェイスはインターフェイスプロジェクトの一部ではなく、実装プロジェクトこの理由は、WCFサービス操作では、インターフェイスタイプを(相互運用可能な方法で)シリアル化できないため、メソッドシグネチャにインターフェイスタイプを使用しないでください。実装タイプを使用する必要があるため、実装プロジェクトに含める必要があります。そうしないと、インターフェイスプロジェクトから実装プロジェクトに参照を追加する必要があるためです。それは設計が貧弱であり、実装とインタフェースの分離を無駄にすることになります。
+1ああ、私はプログラム的にクライアントにサーバーをバインドするのではなく、悲惨なapp.configファイルを使用する方が好きなので意味があります。 – Sam