2009-07-23 223 views
8

我是新來設置WCF,我有它在我的項目中,但我有一個WCF項目中有5個不同的'服務',我想知道如果我做正確的事情。我的服務現在是1-1我的數據庫表。我最終有類似的東西:WCF一個服務或多個服務

public class Projects : IProjects 
{ 
    public List<Project> GetAll() 
    { 
     return (from p in Connection.Data.Projects 
       select new Project {ID = p.id, Name = p.name}).ToList(); 
    } 

    public Project GetByID(int id) 
    { 
     return (from p in Connection.Data.Projects 
       where p.id == id 
       select new Project {ID = p.id, Name = p.name}).First(); 
    } 

    public Project AddProject(string name) 
    { 
     var project = new Data.Projects {name = name}; 
     Connection.Data.AddToProjects(project); 
     Connection.Data.SaveChanges(); 

     return new Project {ID = project.id, Name = project.name}; 
    } 

    public void DeleteProject(int id) 
    { 
     var project = (from p in Connection.Data.Projects 
         where p.id == id 
         select new Project {ID = p.id, Name = p.name}).First(); 

     Connection.Data.DeleteObject(project); 
     Connection.Data.SaveChanges(); 
    } 
} 

我有我的項目中的每個表的類相似。我是否應該找到一種方法使用1個子類的服務連接,或者每個表保留1個服務類?

回答

8

「這取決於!」 :-)所有IT和編程問題的標準答案:-)

我沒有看到有5個單獨的服務有什麼錯誤 - 你沒有真正獲得任何東西,把它們合併成一個大服務,我會說。我寧願讓他們分開,「傾斜」,「平均」。

如果您有五個獨立的服務,您還可以分別管理每個服務的訪問權限,例如,讓某些用​​戶組使用一項服務,而不是另一項服務。

再說一遍:我認爲你做得很好 - 我沒有看到有任何令人信服的理由,也沒有從一個巨大的服務與五個更小,更靈活的服務中受益。

想一想 - 我可能會建議的唯一真正改變是試圖設計您的服務,以便它們與您的應用程序想要執行的操作更緊密匹配(即您期望您的應用程序的操作以及您的服務句柄),而不是模擬它們與數據庫的距離太近。嘗試思考「面向任務」或者運營方面,而不是他們將存儲數據的底層商店。

Marc

+1

太棒了,謝謝你! – 2009-07-23 21:30:06