4

我想将 WCF 合同接口移动到第三个 DLL,并在我手动生成代理时开始从客户端使用它们。

[ServiceContract]当我从客户端使用它们以生成代理时,DLL 中的这些接口是否必须具有该属性?

知道什么是 Dll 的最佳命名,它将只有合同和 DTO 在客户端和服务器之间共享。

4

3 回答 3

5

将 WCF 数据和服务合同放在单独的程序集中是很常见的做法。在我之前的项目中,我们使用了类似Company.OurProject.Contracts.dll. 我认为要通过重用现有类来生成代理,您应该将服务合同(标有 的那些[ServiceContractAttribute])和相应数据合同的接口放入该程序集。我会避免将服务的实际实施放在那里。

这是关于 SO 的另一个很好的答案,可以更深入地了解选择“在引用的程序集中重用类型”时可以重用的内容:WCF 服务参考生成自己的合同接口,不会重用我的

于 2012-05-13T22:38:14.427 回答
1

这是常见的,也许是推荐的方法。

是的,您应该将服务合同放在将存在于合同 dll 中的服务接口上。

请记住,命名空间不必与 dll 的名称匹配。假设您当前的程序集类似于CompanyName.Technology.Service.dll命名空间,CompanyName.Technology.Service您应该将合同提取到另一个程序集但保持命名空间相同(假设它仍然有意义)并且程序集名称为CompanyName.Technology.Service.Contracts. 您不希望拥有一个名称为“contracts”的名称空间。

于 2012-05-13T22:39:12.930 回答
0

我使用 *.ServiceContracts.dll 因为我的系统中最终有多个合同程序集。例如,DataContracts.dll 用于访问数据存储。

于 2012-05-14T00:16:36.807 回答