假设我有一个wcf服务,它有一个返回对象person的方法。在这个服务的一个客户机中,我可以向服务添加服务引用并开始使用它的方法。
现在,假设在服务器上更改了Person类,添加了一个新的DataMember。其他客户机将使用这个新的datamember,但我的客户机没有。因此,这个客户机甚至不应该知道服务返回的S/T比它需要的多。
我的客户机是否仍然可以在不更新服务引用的情况下使用该服务(据我所知,这意味着重新生成代理并编译它)?
这应该很好,只要 DataContractSerializer (通常由wcf使用)go。如果我序列化一个具有4个属性的Person类,将其保存到一个文件中,从Person中删除一些属性,重新编译并反序列化文件中的Person对象,那么一切都可以正常工作。在这种情况下,反序列化程序获得的属性比预期的要多,它们只是被忽略了。
DataContractSerializer
请注意,上面的示例只是使用 DataContractSerializer ,不是满的WCF。如果您指定了特定的顺序,您可能会在WSDL方面遇到一些问题;确保这一点的最佳方法是构造一个简单的测试程序。