2011-10-13 44 views
0

我建立WCF服务,我有一个关于WCF服务设计问题:建立更好的WCF服务

例如:

如果我有一个数据accass层有两个类产品

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

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

两个类有选择()方法。为了在WCF中使用这些类,我用两种方法在我以前的procjects

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()的代替选择()

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

谢谢。

回答

2

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

这个想法是保持倾向于单独改变的东西,所以改变一个不会影响另一个。