【问题标题】:Interfaces in WCF and Integration TestsWCF 和集成测试中的接口
【发布时间】:2013-12-20 12:43:11
【问题描述】:

那么,您是否不应该或不能在您公开的方法中或您在 WCF 服务中向客户端公开的 DTO 中使用接口?因为如果我有这个例如:

public class MyCustomDTO
{
    public ITransaction Transaction { get; set; }
}

IPaymentRequest SendTransaction(PreAuthorizeRequest request);

我注意到,当我尝试创建集成测试以证明可以使用 wsdl 并进行成功调用时,我的 ITransaction 和 IPaymentRequest 被序列化并通过服务客户端公开为“对象”,这可能是因为它不知道什么在合同中公开的对象是什么?

那么,作为向使用 WCF 服务的外部世界公开的合同的一部分,您是否不能创建带有接口的方法或 DTO?

【问题讨论】:

标签: wcf


【解决方案1】:

如果您使用 WCF 连接两个 .NET 实例,并且您将您的合同作为两者之间的通用合同程序集共享,而不是使用 wsdl 自动生成的客户端,那么它可以工作。但是,WCF 是关于互操作性的,您可能希望在未来添加一个非 .NET 客户端,因此您应该只使用实际类型,这样您的服务就可以与所有其他语言很好地兼容。

【讨论】:

  • 我不明白您将共享合同作为普通合同而不是使用 wsdl 自动生成的客户端是什么意思
  • 如果您将您的服务接口和它使用的所有 DTO 放在它自己的程序集中,您可以在您的客户端中引用此程序集并使用这些类与服务进行通信。从 wsdl 自动生成的客户端只是从 wsdl 生成的类的另一个副本。
猜你喜欢
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 2013-12-07
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
相关资源
最近更新 更多