如何在WCF中为多个服务配置一个端点?

时间:2011-08-14 03:46:57

标签: .net wpf wcf

是否可以以及如何在WCF服务应用程序中为多个服务配置一个端点?

谢谢

4 个答案:

答案 0 :(得分:3)

如果你的意思是:

Service1
Service2
Service3
.
.
.
Service n

所有服务都在一个端点,比如http://localhost/MyServices/Services,然后我相信答案是否定的。地址,绑定和合同(ABC)组成端点,每个端点必须具有唯一的地址。

所以即使你尝试过类似的东西:

终点1:

地址:http://localhost/MyServices/Services
绑定:wsHttpBinding
合同:服务1

终点2:

地址:http://localhost/MyServices/Services
绑定:wsHttpBinding
合同:服务2

您遇到端点2的问题,因为它与端点1具有相同的地址。

Specifying an Endpoint Address

Hosting Multiple Services

答案 1 :(得分:1)

每个服务/绑定/合同组合必须使用离散地址,因此必须是单独的端点

但是,就您的客户而言,只要您使用相同的传输协议,您就可以使用WCF 4路由服务来提供单个可寻址端点,然后使用其他条件(比如操作或其他SOAP标头)来路由到正确的服务

答案 2 :(得分:1)

一个解决方法是实现部分类,允许您在维护单个接口和端点的同时将各个cs文件中的内容分开。这不是最理想的方式,因为在一天结束时它仍然是由部分类组成的单个类,但至少看起来你有单独的服务,因为你有一个每个服务的类文件。

结构示例:

<强> IMyService.cs

[ServiceContract]
public interface IMyService
{
   [OperationContract]
   string GenericMethod()

   [OperationContract]
   string GetUsers(int companyId)

   [OperationContract]
   string GetMessages(int userId)

}

<强> MyService.cs

//Put any attributes for your service in this class file
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public partial class MyService : IMyService
{
  public string GenericMethod() 
  {
     return "";
  }
}

<强> UserService.cs

public partial class MyService
{
    public string GetUsers(int companyId) 
    {
       return "";
    }
}

<强> MessagingService.cs

public partial class MyService
{
      public string GetMessages(int userId) 
      {
          return "";
      }
}

答案 3 :(得分:0)

你可以做的是创建一个新的接口,公开你想要公开的所有接口,然后让一个类将请求委托给正确的类。