私はこのような私のWCFソリューションを構築したい:
契約(クラスライブラリ)
は、すべてのサービス、オペレーション、障害、およびデータコントラクトが含まれています。
サービス実装(クラスライブラリ)の純粋な.NETツー.NETシナリオでは、サーバとクライアントの間で共有することができ
サービスを実装するためのコード、およびこれを達成するために必要な任意のサポート/ヘルパーメソッドが含まれています。他に何もない。
サービスホスト(複数可)(オプション - Winformsの、コンソールアプリケーション、NTサービスすることができます)
は、生産のための可能性、サービスのデバッグ/テスト用のホスト(複数可)、またはが含まれています。
これは基本的に私に物事のサーバー側を与えます。クライアント側では
:
クライアントプロキシ(クラスライブラリ)
私は、彼らは、複数の実際のクライアントアプリケーションで再利用できるように、別のクラスライブラリに私のクライアントプロキシをパッケージ化したいです。これは、svcutilまたは「サービスリファレンスの追加」を使用して、恐ろしいapp.configの結果を手動で調整するか、ClientBase<T>
またはChannelFactory<T>
構造を使用してクライアントプロキシを手動で実装することによって(契約アセンブリを共有する場合)行うことができます。
1-nは、実際それが共有されていた場合、クライアント(アプリのいずれかのタイプ)
は、典型的に、あまりにも、クライアントプロキシのアセンブリを参照するか、あるいは契約アセンブリます。これは、ASP.NET、WPF、Winforms、コンソールアプリケーション、その他のサービスにすることができます - 名前を付けます。
そうです。私は素敵できれいなレイアウトを持っています。私はそれを何度も何度も繰り返し使用しています。これは私のコードをよりきれいにして維持しやすくしたと思います。
これは、Carl FranklinとDotNet Rocks TVのMiguel CastroのExtreme WCF screen castにインスパイアされました。