2011-05-24 55 views
3


我有一個windows窗體應用程序(c#)和一個asp.NET web應用程序,它們都訪問Sql Server數據庫。我想集中數據庫訪問。我應該遵循哪些術語?這個問題的通用方法是什麼?來自多個應用程序的數據庫訪問

  • 寫入DAL和模型庫並在兩個應用程序中使用它們?
  • 編寫包含DAL模型的WCF服務,並將這個服務與這兩個應用程序一起使用?
  • 以上都不是?

你能告訴我任何想法嗎?
謝謝。

回答

0

我認爲使用SOA做法真是再好不過了(WCFWeb服務有DAL層),因爲這樣你就不需要與Windows發佈DAL dll窗體exe。然後,您的數據模型的所有更改將自動發生在您的兩個UI客戶端上。

請記住,這可能會導致其自身的問題:

  • 關注安全,使您的服務不能直接通過URL訪問,讓別人來運行你的方法。

  • 關注維護,因爲只需要影響一個接口的數據層更改將更難以控制,並且需要在創建特定的intercace特有的新方法之前進行更好的規劃。

  • 性能下降,因爲HTTP訪問總是比直接與dll通信成本更高。

  • 與服務器缺乏溝通的風險,這是ASP.NET所期望的,但在這些情況下需要Windows窗體客戶端的額外關注才能正常運行。

+0

謝謝埃裏克。使用SOA方法似乎更專業,但我應該考慮性能和安全性。 – Fer 2011-05-24 13:57:13

0

選項1似乎更簡單,我也會這樣做。
使用WCF的選項2將爲您的產品添加額外的代碼,從而維護。這也意味着一個額外的層。

2

我會用WCF的方法。請記住,如果(不是如果,何時)必須對一個應用程序進行更改,而不是其他應用程序,則必須在通用層中進行說明,因此使用界面可能會使您的生活變爲現實更容易一點。

0

公司程序員喜歡第二個選項(包括DAL的WCF服務)。

1

最簡潔的方法是用WCF服務包裝數據庫。

如果您一次不寫大量數據,則可以使用WCF數據服務;這直接封裝了實體框架模型,您可以通過各種方式配置對錶和方法的訪問。

你想要的是在一個地方訪問數據庫,這樣如果出現問題,你可以在一個地方修復它。例如,如果要將所有調用記錄到特定的表中,唯一的辦法就是將所有對數據庫的調用集中到這種方式,而不允許任何人直接訪問數據庫。

包裝服務,然後保持連接字符串的祕密。

+0

嗨,羅伊。我將詳細搜索WCF數據服務。它可能是有用的。 – Fer 2011-05-24 13:59:46

相關問題