2009-07-06 136 views
17

直接SQL訪問對於同時具有網絡和桌面客戶端版本的應用程序:最佳實踐:對Web服務

  1. 什麼是桌面客戶端,它需要一個接入的最佳做法SQL Server?
  2. 從應用程序與使用Web服務連接到數據庫的好處是什麼?
  3. 哪一個提供更好的安全性?
  4. 什麼類型的範圍會要求一個vs其他(企業內部網與網絡應用程序等)
  5. 在平臺上選擇時是否需要其他注意事項?

回答

13

需要訪問SQL Server的桌面客戶端的最佳做法是什麼?

如果您使用本地SQL Server,則直接訪問數據庫。如果客戶端必須在另一個系統上使用SQL數據庫,那麼首選使用Web服務以獲得額外的保護,並增加了擁有應該能夠處理多個用戶的業務層的優勢。

從應用程序連接到數據庫還是使用Web服務有什麼好處?

通過網絡服務連接總是會慢一點,對數據庫的修改會增加整個系統的難度。 (基本上,這意味着您需要創建更新版本的Web服務,同時保持舊版Web服務的向後兼容性。)

哪一個提供更好的安全性?

使用Web服務往往是更安全的,但安全性往往超過軟件問題上問題。但是通過用戶和數據庫之間的Web服務,與數據庫的連接更加安全,因爲用戶無法直接訪問它。 (除了通過Web服務提供的功能外)當客戶端和數據庫位於同一個系統上時,這一點是沒有意義的,因爲用戶可以獲得完全訪問權限。

會叫什麼類型的範圍爲一個VS其他(企業內網與Web應用程序等)

Web服務是客戶端 - 服務器應用中,用戶不應該直接訪問更好到數據庫。否則,直接的數據庫連接只會提高性能。 創建Web服務時,首先編寫一個通用(類)庫,它將提供Web服務的功能。圍繞這個(商業)庫創建一個Web服務,將重要的方法展現給外部世界。任何網站都可以在不使用網絡服務的情況下直接調用這個庫,儘管您可以隨時選擇讓網站代碼通過網絡服務訪問數據。 即使僅使用本地數據庫創建桌面應用程序,使用邏輯來編寫具有訪問數據庫的業務庫也是一件非常好的事情。您的客戶可以直接或通過Web服務調用此業務庫,具體取決於您的需求。

在平臺上選擇時是否需要其他注意事項?

大部分只是你願意用來設置硬件的數量。如果你有能力建立一個數據庫服務器,一個單獨的Web服務的服務和第三個爲您的網站,有十幾個客戶端系統,那麼你可以選擇最分層的版本,其中客戶端和網站調用調用數據庫的Web服務。但是,如果一切都需要在單個系統上運行,那麼應該堅持應用程序和業務層/庫。

儘管如此,添加圖層會降低單個用戶視圖的性能。但是,使用多個圖層可以提高整體性能,因爲資源在多個用戶中分配得更好。

15

一般的經驗法則是:

  1. 寫一個獨立的數據訪問組件將討論到數據庫中。
  2. 如果您正在尋找不同平臺/客戶端之間的互操作性,請將此程序集作爲SOAP Web服務公開。
  3. 如果您正在尋找性能,請直接在您的客戶端.NET應用程序中使用該程序集。
+1

+1簡明扼要的答案。 – 2010-06-01 07:00:53

+0

最後提到.NET應用程序的具體原因是什麼? – 2013-04-05 20:02:22

3

如果你可以從桌面訪問數據庫,那麼你應該這樣做。

您有多種客戶端。這意味着你的應用程序應該有多層。這並不意味着你需要多層。

如果您的圖層必須通過防火牆傳輸數據或者您擁有多種技術,則可能需要多個層。

7

我會保持簡單並減少層數。圖層會降低性能,增加複雜性,並且需要在更多位置進行更改。因此,如果應用程序和Sql Server之間的網絡連接是開放的(通常是TCP端口1433),那麼我會使用Sql連接。

3

鑑於上下文,客戶端訪問數據庫可能存在很大的安全隱患。它要麼要麼讓用戶訪問數據庫,要麼創建一個服務帳戶。給用戶直接訪問數據庫帶來了風險。這兩種方法爲利用桌面dll連接到應用程序上下文之外的數據庫打開了大門(多次我見過有所有功能操作都使用的公用數據訪問類的情況,當然,這些組件會初始化所有連接信息基於反射的訪問使得很容易獲得受保護的或私有的方法,除非你聲明安全特權)。

Web服務暴露了不公開任何基於SQL的操作的功能操作。這不僅更安全,而且還將您的客戶從數據存儲實施中抽離出來。

同樣,這取決於您的上下文。然而,在企業/ ISV領域,它通常是一個很大的禁忌。