有没有办法通过单个端点公开多个WCF服务?

时间:2010-03-17 09:57:48

标签: wcf endpoint

我目前通过WCF提供了许多方法的服务。我想重构,所以单个服务被分成多个类,每个类提供一组不同的功能。但是,我宁愿仍然只有一个连接到客户端。这可能吗?

我猜答案是否定的,那么我应该如何解决这个问题呢?有解决方法吗?或者我的想法完全是愚蠢的,我应该改变应用程序的设计?

2 个答案:

答案 0 :(得分:4)

记住E = ABC(端点=地址,绑定,合同)。有了不同的合同,即使其他条件相同,你仍然有不同的终点。

但是,单个服务可以实施多个服务合同。这将允许单个.svc文件成为几个不同服务合同的目标,所有服务合同都配置为相对于.svc的URL。

答案 1 :(得分:0)

您可以实现部分类,允许您在维护单个接口和端点时将各个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 "";
      }
}