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

WCF服务对服务通信和数据合同

  •  1
  • Nick  · 技术社区  · 16 年前

    我最近参与开发了一个wcf服务,它充当一种多播中继(即接受一些传入数据,进行一些处理,然后将其发送给其他多个外部服务)。此服务(我将称之为“我的服务”)由第二个内部服务提供数据。

    这些数据将以XML格式从我的服务中以字符串形式传递。因此,我的服务可以简单地接受一个字符串作为方法请求的参数,但这并不理想,因为我们失去了类型安全性。

    第二个服务有一个类,该类封装了我的服务需要处理的所有信息,并最终中继到外部服务。

    第二个服务在其数据协定中公开这个类。理想情况下,为了维护类型安全,并且不需要对第二个服务的实现进行大量更改,我应该接受这种类型的类作为我的服务操作的参数。

    在我的datacontract中,什么是最好的方式来表示我需要这种类型的类而不需要复制代码?我可以向第二个类添加一个服务引用,然后使用在我的数据契约中创建的代理类吗?

    我只是不能让我的头在这附近,即使它看起来像一个小问题!

    为任何帮助干杯!

    1 回复  |  直到 16 年前
        1
  •  2
  •   Chris Porter    16 年前

    如果要避免类的重复,请将类声明放在自己的程序集中,并在wcf服务的所有参与方之间共享该dll。创建服务引用时,可以选择共享哪些程序集(假设使用vs gui服务实用程序)。

    使用代理类可能也是一个很好的途径。如果将主数据类公开为数据协定,然后创建其代理,则该代理将具有可供其他服务使用的公开类的版本。