我们有很多WCF服务只能由我们自己的代码使用;使用它们的代码主要位于包含服务的相同解决方案文件中。
但是,他们不为合同使用共享程序集,因此每次更改数据协定时,必须在使用该服务的所有项目中手动更新对服务的引用。 (然后代码需要手动修复)
那么如何进行简单的重构,例如在数据合同中重命名数据项呢?
有没有办法使用一个命令更新单个解决方案中对服务的所有引用,而不是必须单击每个项目中的每个引用?
答案 0 :(得分:1)
您可能已经在这里回答了自己的问题。
将您的数据合同移至共享的“合同”项目,这将允许您使用内置的重构 - >在Visual Studio中重命名选项以更改名称,更改将反映在解决方案中的所有项目中。
<强>更新强>
澄清一下,合同项目是合同的内部“组织”。它允许您的许多项目引用一组合同。例如......
WCF服务公开“List GetCustomerById(int id)”。
WCF服务可能会调用处理层,处理层可能需要使用其他项目等来计算某些内容。所有项目都可以使用合同项目中的单个“客户”定义。
WCF服务的任何使用者都将通过服务引用获得Customer的定义。您不会分享您的合同项目或发送dll供他们使用。
答案 1 :(得分:1)
使用当前设置无法执行此操作,因为您每次都在重新生成代理。从SOA的角度来看,这很好,因为数据契约不应经常更改。但是,如果您同时控制客户端和服务,那么它就像Shonee所建议的那样.Net。使用svcutil中的/ r选项从公共程序集生成代理。然后你可以轻松地重构。