2009-09-23 148 views
0

我只是與ADO.net實體一起工作,並且需要您的意見。通常會創建一個解決方案來提供服務(WCF或Web服務)以允許通過實體框架訪問數據庫,但我正在研究一個內部運行且幾乎一直都具有域訪問權限的應用程序。問題在於是否爲應用程序創建數據服務以便從WPF應用程序進行接口或從WPF應用程序直接轉到實體框架是一種很好的做法。這種情況下的最佳做法是什麼,以及兩種不同方法的優點和缺點是什麼。Ado實體最佳實踐

回答

0

通過直接使用實體框架,你的意思是WPF應用程序將連接到數據庫,或者它仍然會使用服務但重用實體?

如果這是第一種方法,我傾向於反對這一點,因爲這意味着多個客戶端連接到數據庫,這是a)額外的安全問題,b)從許可角度可能使其更昂貴,以及c)意味着你沒有獲得連接池的好處。數據庫是最昂貴的事情,所以我試圖設計解決方案來使用服務並減少數據庫的壓力。但有些時候它是合適的。我注意到的一件事是,直接開始連接的應用程序往往會重構以後通過服務進行重構;很少發生相反的事情。但也可能是YAGNI的情況。

如果是第二種方法,我認爲沒關係。對於那些希望WCF思考「面向服務」的人來說,這是很常見的 - 也就是說,服務之間應該有一個嚴格的合同,而不應該共享事物。但是一個只有一個客戶端的「多層」應用程序也是一個完全有效的架構,不需要如此解耦。在這種情況下,重用服務邊界兩側的實體應該沒問題。不過,我不確定這是如何容易與EF具體做,因爲我沒有使用它,除了在實驗中。

0

它確實取決於複雜程度和所需的耦合/模塊級別。我認爲一個很好的折衷辦法是在簡單的抽象層次上在它自己的庫或類似的東西中創建一個EF模型。在這種情況下,如果您選擇更改模型以使用公開的服務而不是直接訪問,那麼重構現有代碼並不是什麼大事,新服務可以利用現有的庫。