是否可以在不重新生成的情况下更改WCF服务。重新编译客户端代理?

时间:2010-04-01 08:06:30

标签: wcf

假设我有一个WCF服务,它有一个返回对象Person的方法。在此服务的一个客户端中,我可以向服务添加服务引用并开始使用其方法。

现在,假设在服务器上更改了Person类,添加了新的DataMember。其他客户将使用这个新的DataMember,但我的客户不会。因此,该客户端甚至不应该意识到该服务比其需要的“更多”返回s / t。

有没有办法让我的客户端仍可以使用该服务而无需更新服务引用(据我所知,这意味着重新生成代理并编译它)?

1 个答案:

答案 0 :(得分:1)

对于DataContractSerializer(WCF使用的[通常])来说,这应该没问题。如果我使用4个属性序列化Person类,将其保存到文件中,从Person中删除几个属性,从文件中重新编译和反序列化Person对象,一切正常。在这种情况下,反序列化器获得的属性比预期的要多,而且它们只是被忽略了。

请注意,上面的示例仅使用DataContractSerializer,而不是完整的WCF。如果您指定了特定的顺序,则可能会在WSDL方面遇到一些问题;最好的方法是敲定一个简单的测试程序。