2011-05-09 133 views
4

我們正在創建與MS SQL Server的一個WinForms .NET4應用程序,我們兩個方案之間作出決定:遠程數據庫的良好做法

1)WinForms應用程序直接連接到MS SQL服務器。

2)使用3層體系結構並在兩者之間插入WebServices。

問題:

1)它是一個很好的做法,是對外打開SQL連接到「世界」?

2)你會推薦哪種情況。應用程序是面向數據的,非常簡單,沒有規劃任何其他客戶端,只有WinForms。

在此先感謝。

James

回答

1

肯定會選擇具有Web服務層的選項。這允許您:

  • 繼續使用您的域模型(POCO和序列化)。
  • 避免打開您的SQL Server到互聯網。
  • 在您的Web服務中應用高級業務邏輯。
  • 從您的客戶端應用程序中刪除SQL邏輯;所有數據訪問都屬於應用層。
  • 根據需要應用安全規則/約束。出於各種原因阻止客戶/用戶或IP地址。
1

當你說「很簡單,沒有規劃任何其他客戶端」,我會採取與一粒鹽,應用不斷生長,變身爲人們意識到他們可以做什麼和別的什麼,他們可以包括。您需要將其改爲「它最初將成爲一個簡單的小應用程序」

在這個時候,WebServices對您來說可能會有些過火,但是如果您遵循一個很好的n層體系結構,他們將很容易在稍後的日期添加,而重構最少。

至於向世界展示SQL - 這不是一個好的做法。您可以很好地保護它,並確保應用程序使用的登錄(或者如果用戶擁有自己的登錄名)具有最小權限 - 只需運行存儲過程或在他們需要訪問的表上執行CRUD語句。但是,如果在暴露於世界的時候搞砸了安全性,那麼親你的SQL Server及其數據再見。這本身就是一個複雜的主題,所以你最好在有問題時發佈個別問題。