2015-11-03 138 views
0

我剛開始設計一個將被應用程序或服務使用的.NET庫(但這與3層體系結構無關?)我正在努力找到適當的問題分離,同時將DAL與BL以適當的方式聯繫起來。我正在尋找教程等,但他們都指向ASP.NET和實體框架,但我想使用ADO.NET(DataSets,DataTables)爲桌面應用程序/ Windows服務構建一個庫用法。.NET桌面應用程序(服務)3層應用程序

任何人都可以通過提供任何示例/示例實用程序或教程/指南指向正確的方向嗎?

@EDIT

我在想這樣的事情:

DbManager - 抽象類 XDbManager - X是一個供應商,SQL等從DBManager派生,是一個單獨的類(我會喜歡靜態的,但這些都不能實現接口或從類派生) 的DbConnection - 通過DbManager方法返回的對象,包含用於查詢

BaseDbo方法 - 用於數據庫對象 抽象類XDbo - X是DBO的名稱,運用DbManager => DbConnection來查詢(保存,檢索,檢索集,保存集?這是我有點困惑,我需要幾個持久的數據集來保存,更新,從表中檢索數據 - 它們應該實現爲從數據集派生的數據庫對象?)

BaseBo - 業務對象的抽象類 XBo - 處理和處理數據的業務對象類等。

上面說過我無法找到「鏈接」兩個圖層的正確方法。

我還需要在這裏使用SOAP Web服務,應該在業務層上實現嗎?或者我應該引入一個新的子層?

回答

0

如果您的應用程序設計合理,那麼使用EF或ADO.Net應該沒什麼關係:這就是DAL抽象的要點。即你仍然有一個方法,如:

public IEnumerable<User> GetAllUsers() 
{ 
    .... 
} 

這將返回所有的用戶。它如何實現(即實體框架或ADO.Net)並不重要。唯一的區別是您的DAL將無法返回IQueryable<T>(即,延遲執行不起作用,或者您需要在ADO.Net之上另外提取一個抽象層)。

與ASP.Net和桌面應用程序相同:這應該不會有太大變化。你應該使用WCF服務而不是ASP.Net MVC控制器。而不是直接從您的控制器調用BL,您可以調用WCF生成的客戶端代理的方法。

您可以閱讀的有關3層應用程序的所有內容都應該適用於您的用例。