单个WCF服务,用于所有功能

时间:2014-08-26 08:35:02

标签: c# wcf

我创建了wcf服务,我想为所有功能创建单一服务。

所以我使用了部分类并试图像这样实现它。

  

文件名:-IMainService.cs

[ServiceContract]
public interface IMainService
{       
    [OperationContract]
    void DoWork();
}
  

文件名:-MainService.svc

 public partial class MainService : IMainService
{
    public void DoWork()
    {
        throw new NotImplementedException();
    }
}
  

文件名:-IProductService.cs

[ServiceContract]
public interface IProductService
{       
    [OperationContract]
    void GetProducts();
}
  

文件名:-ProductService.svc

 public partial class MainService : IProductService
    {
        public void GetProducts()
        {
            throw new NotImplementedException();
        }
    }

当我在应用程序中引用该服务时,我可以看到两个客户端,MainServiceClient& ProductServiceClient。我猜这些名称基于文件名,并且都包含属于那些文件的方法,例如:MainServiceClient有Dowork& ProductServiceClient有GetProducts。

我相信自己错了,有人可以建议我如何实现单一服务理念。

编辑:

  • 多个接口和服务文件背后的想法是 maintainablity。
  • 我们有很多方法(100多个)所以我不想把所有东西放在一个上面 服务文件所以我把它分开了。

2 个答案:

答案 0 :(得分:4)

我只想创建一个包含其他服务接口的新服务接口。然后服务类实现连接接口。

类似的东西:

public interface IJoinedService : IProductService, IMainService
{
}

public class JoinedService : IJoinedService
{
   private ProductService _productService;
   public void GetProducts()
   {
     _productService.GetProducts();
   }
}

答案 1 :(得分:0)

为什么不是这样的:

public class MainService : IProductService, IMainService
{
  MainService mMain = new MainService();
  ProductService mProduct = new ProductService();

  public void ImplementedMainServiceFunction()
  {
    mMain.DoSomething();
  }

  public void ImplementedProductServiceFunction(string s)
  {
    if (!string.IsNullOrEmpty(s))
      mProduct.DoSomething();
  }
}
像这样,有一个实现类负责参数检查,实际的逻辑可以假设参数已被检查,已经给你更清晰/更短的代码。逻辑也分为多个文件。