wcf服务通信服务数据合同

时间:2008-12-04 15:47:49

标签: wcf service datacontract

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

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

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

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

对我来说,在我的datacontract中说我需要这种类而不重复代码的最佳方法是什么?我可以在第二个类中添加服务引用,然后使用在我的数据协定中创建的代理类吗?

我无法理解这一点,即使这似乎是一个微不足道的问题!

欢呼任何帮助!

1 个答案:

答案 0 :(得分:2)

如果您试图避免重复类,请将您的类声明放在自己的程序集中,并在WCF服务中的所有各方之间共享该dll。创建服务引用时,可以选择共享哪些程序集(假设您使用VS GUI服务实用程序)。

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