WCF 服务中的 WCF 服务。我能对 DataContract 做些什么?

WCF service inside a WCF service. What can I do about the DataContracts?

我正在制作一个 WCF 服务,它的存在只是为了帮助调用者到达另一个 WCF 服务。换句话说,我的服务接收数据并将(相同的数据)发送到其他服务。我会将我的服务称为服务 A,将其他服务称为服务 B。

[ServiceContract]
public interface ServiceB
{
    [OperationContract]
    string SendComplexData(ComplexData data);
}

[DataContract]
class ComplexData { ... }

在服务 B 中,我调用了一个以复杂类型作为参数的方法,由 DataContract 向我公开。问题是,我是否应该在我的服务 A 中请求相同 B 类型的数据?而且,如果是,我怎样才能将这个现有类型公开给调用者?

[ServiceContract]
public Interface ServiceA
{
    [OperationContract]
    string SendComplexDataToServiceB(ComplexData data);
}

Should I request the data ...

这是选项之一,比较简单。另一种选择是在您的代理服务 A.

中公开两者之间的不同合同和 cincert

您选择哪个选项取决于您和您的客户要求。

How can I expose the type to the caller?

通过在您的方法签名中重复使用完全相同的类型。客户端如何在技术上使用该类型取决于客户端。基本上就三个选项:

  • 客户端依赖 WSDL 元数据并在 his/her 端生成 class 代码
  • 客户端获取包含类型
  • 的程序集
  • 客户端获取类型的源码