我希望将WCF合同接口移动到第三个DLL,并在手动生成代理时从客户端开始使用它们。
当我从客户端消费它们生成代理时,这些DLL中的接口是否必须有 [ServiceContract]
属性?
您有什么最好的命名方式来命名只包含契约和数据传输对象(DTO)以在客户端和服务器之间共享的DLL吗?
这是一种常见且可能推荐的方法。
是的,您应该将服务合同放在服务接口上,该接口将位于合同dll中。
请记住,命名空间不必与dll的名称匹配。假设您当前的程序集类似于CompanyName.Technology.Service.dll
,具有类似于CompanyName.Technology.Service
的命名空间,则应将合同提取到另一个程序集中,但保持命名空间相同(前提是仍然有意义),并具有CompanyName.Technology.Service.Contracts
的程序集名称。您不希望在名称中包含“contracts”的命名空间。
我使用 *.ServiceContracts.dll,因为我的系统中最终会有多个契约程序集。例如,DataContracts.dll 用于访问数据存储。