WCF コントラクト インターフェイスを 3 番目の DLL に移動し、手動でプロキシを生成しているときにクライアントからそれらの使用を開始したいと考えています。
[ServiceContract]
DLL 内のこれらのインターフェイスは、プロキシを生成するためにクライアントからそれらを使用するときに属性を持つ必要がありますか?
クライアントとサーバー間で共有するコントラクトと DTO のみを持つ Dll に最適な名前は何ですか。
WCFデータとサービス契約を別々のアセンブリに配置することは非常に一般的な方法です。以前のプロジェクトでは、のような命名を使用しCompany.OurProject.Contracts.dll
ました。既存のクラスを再利用してプロキシを生成するには、サービスコントラクト(でマークされているもの[ServiceContractAttribute]
)および対応するデータコントラクトのインターフェイスをそのアセンブリに配置する必要があると思います。私はそこにサービスの実際の実装を置くことを避けます。
これは、「参照されるアセンブリでタイプを再利用する」が選択されたときに何を再利用できるかについてのより深い洞察を備えたSOに関する別の優れた回答です。WCFサービスリファレンスは独自のコントラクトインターフェイスを生成し、私のものを再利用しません
これは一般的で、おそらく推奨されるアプローチです。
はい、コントラクトdllに存在するサービスインターフェイスにサービスコントラクトを配置する必要があります。
名前空間はdllの名前と一致する必要はないことに注意してください。CompanyName.Technology.Service.dll
現在のアセンブリが名前空間のようなものであると仮定すると、CompanyName.Technology.Service
別のアセンブリへのコントラクトを抽出する必要がありますが、名前空間を同じに保ち(それでも意味がある場合)、アセンブリ名を。にしCompanyName.Technology.Service.Contracts
ます。必要としないのは、「contracts」という名前の名前空間です。
システムに複数のコントラクトアセンブリが含まれることになったため、*。ServiceContracts.dllを使用します。たとえば、DataContracts.dllは、データストアへのアクセスに使用されます。