2009-06-25 20 views
1

私はTCPベースのWCFサービスをホストしています。私は現在、そのサービスを利用するプロジェクトを構築していますが、プロジェクトへのサービス参照を追加する方法は少なくとも2つあり、どちらも大きく異なるプロキシを生成します。最初に私はプロジェクトメニューから "Add service reference"を使用しましたが、これはかなりの数のファイルを生成しました。次に、サービス参照とバインディングパラメータを保持する1つのプロキシと1つの設定ファイルの2つのファイルしか生成しなかったSvcUtilを試しましたが、これははるかに優れていますが...WCFサービス参照を作成する正しい方法は?

どちらの場合でも、VSツールは型定義サービスとそれが使用するすべての型を含むアセンブリへの参照を提供しましたが、たとえば、私のサービスメソッドの中には、Entityクラスのジェネリックコレクションを返すものがあります。すべてのEntityクラスは、消費しているプロジェクトから直接参照しているアセンブリ内で定義されているので、なぜそれらの型を再度定義し直すのですか?

エンティティタイプとそれに従うベストプラクティスを返すWCFサービスの消費に関するアドバイスをいくつか提供できるのであれば、感謝します。

答えて

2

私たちは、追加サービス参照が、それ以上に役立つ不要なコードをたくさん作成することを発見しました。

我々がそれを設定するためのマニュアルの方法に乗り越えてきた、このメソッドへの導入がここにあります:

http://perseus.franklins.net/dnrtvplayer/player.aspx?ShowNum=0103

+1

はい - しかし、再び - * ONLY *今まであなたがコミュニケーションの* BOTH *終了を制御し、両端に.NETとWCFを使用するシナリオで動作すること。それが事実なら - それを行う優れた方法!しかし、ちょうど覚えている - これは "現実の世界"で非常に限られたシナリオです。 –

+0

本当に良いビデオをありがとう、WCFサービスを開発している人はまずこれを見て、VS通行料はひどいです。 – James

2

はい、あなたの具体的な場合には、これは重複のように見えるかもしれません - しかし、これを考慮して:WCFも相互運用可能に設計されていますが、MOSTシナリオでは、特に、コードを呼び出す非.NETクライアントがある場合は、契約のあるアセンブリと使用可能なインターフェイスを使用できません。

したがって、すべての可能な状況で動作するように、すべての情報を含む完全なプロキシを作成することは実際にはありません。

実際にデータコントラクトの重複などを避けたい場合は、それらを自分のアセンブリにコンパイルし、svcutilを呼び出すときに/ r:(アセンブリ名)スイッチを使用して、コードおよび契約書を作成します。

マルク・

関連する問題