单个WCF服务的多个接口?

Pet*_*one 32 .net wcf interface

单个WCF服务可以提供多个接口,如果是这样,您将如何表达这一点app.config

我的意思是一个服务在一个端点上提供多个接口.

blo*_*art 52

首先,您需要明确服务是什么.您是指同一主机中的单个端点或多个端点吗?

假设你的意思是单个端点,那么是的,但稍微有点工作.端点只能实现单个接口; 所以你需要做的是将你想要实现的所有接口组合到一个接口中

public interface IMyInterface : IInterface1, IInterface2
Run Code Online (Sandbox Code Playgroud)

然后在实现类中实现它们.你不能做的是有多个接口,多个实现神奇地合并到一个端点.


Jos*_*son 23

以下看起来更接近原始目标,并且不涉及一个大型界面......

单个ListenUri上的多个端点:http://msdn.microsoft.com/en-us/library/aa395210.aspx


上面链接的示例解释了可以在同一物理地址(listenUri)上注册多个端点,每个端点实现不同的接口(合同),例如:

<endpoint address="urn:Stuff"
        binding="wsHttpBinding"
        contract="Microsoft.ServiceModel.Samples.ICalculator" 
        listenUri="http://localhost/servicemodelsamples/service.svc" />
<endpoint address="urn:Stuff"
        binding="wsHttpBinding"
        contract="Microsoft.ServiceModel.Samples.IEcho" 
        listenUri="http://localhost/servicemodelsamples/service.svc" />
<endpoint address="urn:OtherEcho"
        binding="wsHttpBinding"
        contract="Microsoft.ServiceModel.Samples.IEcho" 
        listenUri="http://localhost/servicemodelsamples/service.svc" />
Run Code Online (Sandbox Code Playgroud)

这是可能的,因为传入消息基于地址和合同过滤器的组合路由到适当的端点.


cru*_*zer 5

使用WCF,您可以:

  • 有一个服务实现类,实现多个服务接口
  • 有一个服务实现类通过多个端点公开,例如一个服务端点使用BasicHttpBinding实现最大的互操作性,另一个端点使用NetTcpBinding实现最大性能(使用WCF客户端).