构建更好的WCF服务

时间:2011-10-13 09:06:12

标签: c# wcf service-design

我正在构建WCF服务,我对WCF服务设计有疑问:

例如:

如果我有一个包含两个类 产品 的数据指南层:

public class Person
{
  public DataTable Select()
  {...}
}

public class Product
{
  public DataTable Select()
  {...}
}

这两个类都有 Select() 方法。要在WCF中使用这些类,我在之前的项目中使用了两种方法

1)创建两个服务类 PersonService ProductService

public class PersonService : IPersonService
{ 
   public DataTable Select()
   {
     Person person = new Person();
     return person.Select();
   }
}

public class ProductService : IProductService
{ 
   public DataTable Select()
   {
     Product product = new Product();
     return product.Select();
   }
}

在这种情况下,我必须单独创建/配置服务类。

2)创建一个服务类并使用不同的名称:

public class MyService : IMyService
{ 
   public DataTable PersonSelect()
   {
     Person person = new Person();
     return person.Select();
   }

   public DataTable ProductSelect()
   {
     Product product = new Product();
     return product.Select();
   }
}

在这种情况下,我必须只创建/配置一个服务类。但是方法有更大的名称(例如: PersonSelect() 而不是 选择()

哪种方式更好?为什么?

感谢。

1 个答案:

答案 0 :(得分:2)

首先,从服务返回DataTable / DataSet并不理想,但是根据Single-Responsibility原则回答你的问题,一个类应该只做一件事,所以如果ProductSelect和PersonSelect似乎只与一件事和一件事有关,把它们放在一起,否则它应该分开。

我们的想法是保持易于改变的东西,这样改变的东西不会影响另一个。