我有一個windows窗體應用程序(c#)和一個asp.NET web應用程序,它們都訪問Sql Server數據庫。我想集中數據庫訪問。我應該遵循哪些術語?這個問題的通用方法是什麼?來自多個應用程序的數據庫訪問
- 寫入DAL和模型庫並在兩個應用程序中使用它們?
- 編寫包含DAL模型的WCF服務,並將這個服務與這兩個應用程序一起使用?
- 以上都不是?
你能告訴我任何想法嗎?
謝謝。
我有一個windows窗體應用程序(c#)和一個asp.NET web應用程序,它們都訪問Sql Server數據庫。我想集中數據庫訪問。我應該遵循哪些術語?這個問題的通用方法是什麼?來自多個應用程序的數據庫訪問
你能告訴我任何想法嗎?
謝謝。
我認爲使用SOA
做法真是再好不過了(WCF或Web服務有DAL層),因爲這樣你就不需要與Windows發佈DAL dll
窗體exe
。然後,您的數據模型的所有更改將自動發生在您的兩個UI客戶端上。
請記住,這可能會導致其自身的問題:
關注安全,使您的服務不能直接通過URL訪問,讓別人來運行你的方法。
關注維護,因爲只需要影響一個接口的數據層更改將更難以控制,並且需要在創建特定的intercace特有的新方法之前進行更好的規劃。
性能下降,因爲HTTP訪問總是比直接與dll通信成本更高。
與服務器缺乏溝通的風險,這是ASP.NET所期望的,但在這些情況下需要Windows窗體客戶端的額外關注才能正常運行。
選項1似乎更簡單,我也會這樣做。
使用WCF的選項2將爲您的產品添加額外的代碼,從而維護。這也意味着一個額外的層。
我會用WCF的方法。請記住,如果(不是如果,何時)必須對一個應用程序進行更改,而不是其他應用程序,則必須在通用層中進行說明,因此使用界面可能會使您的生活變爲現實更容易一點。
公司程序員喜歡第二個選項(包括DAL的WCF服務)。
最簡潔的方法是用WCF服務包裝數據庫。
如果您一次不寫大量數據,則可以使用WCF數據服務;這直接封裝了實體框架模型,您可以通過各種方式配置對錶和方法的訪問。
你想要的是在一個地方訪問數據庫,這樣如果出現問題,你可以在一個地方修復它。例如,如果要將所有調用記錄到特定的表中,唯一的辦法就是將所有對數據庫的調用集中到這種方式,而不允許任何人直接訪問數據庫。
包裝服務,然後保持連接字符串的祕密。
嗨,羅伊。我將詳細搜索WCF數據服務。它可能是有用的。 – Fer 2011-05-24 13:59:46
謝謝埃裏克。使用SOA方法似乎更專業,但我應該考慮性能和安全性。 – Fer 2011-05-24 13:57:13