【问题标题】:Is there a way to expose multiple WCF services through a single endpoint?有没有办法通过单个端点公开多个 WCF 服务?
【发布时间】:2010-03-17 09:57:48
【问题描述】:

我目前通过 WCF 提供具有多种方法的服务。我想重构,以便将单个服务拆分为多个类,每个类都提供一组不同的功能。但是,我更愿意与客户端保持单一连接。这可能吗?

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

【问题讨论】:

  • 好问题,这里有类似的问题 - 请注意,这不是类,而是更多基于接口(服务是接口)。

标签: wcf endpoint


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以实现部分类,允许您在单独的 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 "";
          }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      相关资源
      最近更新 更多