我正在設計一個訪問存儲在數據庫中的一些數據的WCF服務。正確設計訪問數據的WCF服務
實際對數據庫的訪問由一些ORM層處理(目前爲NHibernate,但這是一個實現細節)。
我想知道什麼是這種情況下適當的設計?
天真的做法是這樣的:
public class ServiceImplementation : IService
{
// NHibernate session
private ISession session;
// service methods that use *session*
}
這是專門耦合到NHibernate和強制服務類管理的初始化和擁有的ORM邏輯代碼。
我的問題是特別:
- 我如何實現解耦設計,其中業務從DB/ORM層分離?
- 當和誰應該初始化數據庫訪問/ ORM層?服務是否管理?
由於這是一個很常見的情況,我假設存在一些「模式」/最佳實踐。
大多數可在線獲得的示例演示瞭如何實現這一點(如何使用ORM訪問數據庫等),而不是從設計的角度來看,如何在更大範圍內正確地完成這些操作。
我已經將ContextMode設置爲單個(不確定它是否是最理想的選擇)。在我的服務中保持NHibernate的類實例如何實現分離設計? – 2013-03-07 18:08:21
如果您創建了一個類並將所有ORM初始化代碼放入其中,並根據需要進行查詢,則會實現解耦。 – 2013-03-07 18:15:10