如何在WCF服务中重构数据协定?

时间:2010-02-11 10:26:21

标签: c# vb.net wcf refactoring

我们有很多WCF服务只能由我们自己的代码使用;使用它们的代码主要位于包含服务的相同解决方案文件中。

但是,他们不为合同使用共享程序集,因此每次更改数据协定时,必须在使用该服务的所有项目中手动更新对服务的引用。 (然后代码需要手动修复)

那么如何进行简单的重构,例如在数据合同中重命名数据项呢?


有没有办法使用一个命令更新单个解决方案中对服务的所有引用,而不是必须单击每个项目中的每个引用?

2 个答案:

答案 0 :(得分:1)

您可能已经在这里回答了自己的问题。

将您的数据合同移至共享的“合同”项目,这将允许您使用内置的重构 - >在Visual Studio中重命名选项以更改名称,更改将反映在解决方案中的所有项目中。

<强>更新

澄清一下,合同项目是合同的内部“组织”。它允许您的许多项目引用一组合同。例如......

WCF服务公开“List GetCustomerById(int id)”。

WCF服务可能会调用处理层,处理层可能需要使用其他项目等来计算某些内容。所有项目都可以使用合同项目中的单个“客户”定义。

WCF服务的任何使用者都将通过服务引用获得Customer的定义。您不会分享您的合同项目或发送dll供他们使用。

答案 1 :(得分:1)

使用当前设置无法执行此操作,因为您每次都在重新生成代理。从SOA的角度来看,这很好,因为数据契约不应经常更改。但是,如果您同时控制客户端和服务,那么它就像Shonee所建议的那样.Net。使用svcutil中的/ r选项从公共程序集生成代理。然后你可以轻松地重构。