0

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

例如:

如果我有一个具有两类PersonProduct的数据访问层:

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

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

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

1)创建两个服务类PersonServiceProductService

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()而不是Select()

哪个是更好的方法?为什么?

谢谢。

4

1 回答 1

2

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

这个想法是将倾向于改变的事物分开,以便改变一个不会影响另一个。

于 2011-10-13T09:27:24.717 回答