2011-10-13 40 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似乎與一件事,一件事,把它們放在一起,否則它應該分開。

這個想法是保持傾向於單獨改變的東西,所以改變一個不會影響另一個。