質問

自己ホスト型のTCPベースのWCFサービスがあります。現在、そのサービスを使用するプロジェクトを構築していますが、プロジェクトにサービス参照を追加する方法は少なくとも2つあり、どちらも大幅に異なるプロキシを生成します。最初に<!> quot; Add service reference <!> quot;を使用しました。プロジェクトメニューからですが、これにより、かなりの数のファイルが生成され、コア.NetタイプのXMLスキーマも生成されました。次に、2つのファイル、1つのプロキシ、およびサービス参照とバインディングパラメータを保持する1つの構成ファイルのみを生成するSvcUtilを試しました。これははるかに優れていますが...

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

エンティティの種類を返すWCFサービスとそれらが従うベストプラクティスを利用する上で、何らかの団体が何らかのアドバイスを提供できれば幸いです。

役に立ちましたか?

解決

addサービス参照により、必要以上の邪魔になる不要なコードが多数作成されることがわかりました。

手動で設定する方法に移りました。この方法の紹介はこちらです:

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

他のヒント

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

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

データコントラクトなどの重複を本当に避けたい場合は、それらを独自のアセンブリにコンパイルし、svcutilを呼び出すときに/ r :(アセンブリ名)スイッチを使用して、コードを再利用するように指示できますそのアセンブリの契約。

マーク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top