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

WCF:我应该如何在客户机和服务器中维护契约类?

  •  5
  • Hemant  · 技术社区  · 15 年前

    合同 属性。

    现在,当服务器准备就绪时,我添加了服务引用,它为我创建了代理。我用过它,它确实很好用。

    部署场景是这样的:在一个安全的intranet中,客户端的数量是有限的(很少),只要服务器发生变化,就可以更新现有的客户端。

    4 回复  |  直到 15 年前
        1
  •  2
  •   John Saunders Andrey Morozov    15 年前

    如果您唯一关心的是不将集合转换为数组,那么您不必走这么远。“添加服务引用”对话框上的“高级”按钮允许您指定用于此类情况的类型。您可以让它使用列表而不是T[]。

        2
  •  2
  •   Marc Gravell    15 年前

    这种方法很好(我经常使用这种方法) 只要

    svcutil.exe和IDE都可以选择重用现有程序集中的类型来完成此操作。

    IDataErrorInfo

        3
  •  2
  •   Cheeso    15 年前

    在单独的通用程序集中维护契约类型是一个非常好的主意。它让你有机会添加 Adapters

    使用公共类型是有意义的 即使您不能控制所有客户端 . 假设您拥有一项服务,该服务由使用.NET的内部应用程序以及合作伙伴公司中受信任的第三方使用。合作伙伴应用程序使用Java、Ruby或Python。在这种情况下,合作伙伴将无法访问共享类型,但依赖于WSD/XSD,可以滚动他们自己的客户端类型库。这不应妨碍您向内部开发人员提供一个很好的共享类型包。

    当您使用REST接口而不是WS/SOAP时,共享类型的建议也适用。对于REST,虽然缺少WSDL,但XSD(或类似的)仍将用于描述服务器及其客户机交换的消息类型。因此,无论您是使用SOAP还是REST,Advice都没有变化。

        4
  •  1
  •   David Walschots    15 年前

    创建单独的程序集以保存合同后,可以引用这些程序集并使用它们创建通道(使用 ChannelFactory

    ChannelFactory<IContract> factory = 
        new ChannelFactory<IContract>("endpointName");