2010-04-01 72 views
0

假设我有一个WCF服务,它有一个返回对象Person的方法。在此服务的其中一个客户端中,我可以将服务引用添加到该服务并开始使用其方法。是否可以更改WCF服务而无需重新生成客户端代理和重新编译?

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

有没有什么办法让我的客户端仍然可以使用服务而不必更新服务引用(据我所知,这意味着要重新编译代理&)?

回答

1

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

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

相关问题