代码之家  ›  专栏  ›  技术社区  ›  Buu

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

wcf
  •  0
  • Buu  · 技术社区  · 15 年前

    假设我有一个wcf服务,它有一个返回对象person的方法。在这个服务的一个客户机中,我可以向服务添加服务引用并开始使用它的方法。

    现在,假设在服务器上更改了Person类,添加了一个新的DataMember。其他客户机将使用这个新的datamember,但我的客户机没有。因此,这个客户机甚至不应该知道服务返回的S/T比它需要的多。

    我的客户机是否仍然可以在不更新服务引用的情况下使用该服务(据我所知,这意味着重新生成代理并编译它)?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Graham Clark    15 年前

    这应该很好,只要 DataContractSerializer (通常由wcf使用)go。如果我序列化一个具有4个属性的Person类,将其保存到一个文件中,从Person中删除一些属性,重新编译并反序列化文件中的Person对象,那么一切都可以正常工作。在这种情况下,反序列化程序获得的属性比预期的要多,它们只是被忽略了。

    请注意,上面的示例只是使用 DataContractSerializer ,不是满的WCF。如果您指定了特定的顺序,您可能会在WSDL方面遇到一些问题;确保这一点的最佳方法是构造一个简单的测试程序。