2011-12-19 177 views
0

我將以下面的情況爲例。公司開發部署在客戶端的組件A(該組件位於客戶端區域,該客戶端可能不被公司信任)。組件需要訪問存儲在位於公司區域(可信區域)的數據庫服務器中的數據。該公司開發的核心模塊之一是數據模型,使用Hibernate作爲ORM。直接訪問數據庫與間接訪問數據庫

一種方法是組件A直接依賴數據模型模塊並直接訪問數據庫(通過Hibernate)。第二種方法是間接訪問數據庫,使用連接組件A和數據庫服務器的中間模塊。

將組件直接連接到數據庫服務器可能會出現哪些問題?使用API​​的優點是什麼?你有什麼建議?

謝謝

回答

2

第二種方法通常稱爲3層或n層架構。它們之間的許多優點是可擴展性(通過在許多服務器甚至雲上分發API模塊),緩存,集中式更新和版本管理,安全等。在許多公司中,數據庫受到客戶端機器的防火牆限制,甚至無法連接到它。
這個問題是更復雜的系統,更多的組件開發和支持等。你應該谷歌在N層架構的更多細節,並判斷它是否適合你。

+0

我知道多層架構的存在,但對我來說似乎不同,因爲這裏並不意味着單個物理機器。你認爲數據訪問層必須分發給客戶端嗎?通常,數據訪問層直接訪問數據庫(有時通過ORM工具),但直接從客戶端訪問數據庫(使用數據訪問層)會讓我認爲可能會出現安全問題。 – 2011-12-19 10:00:26

+0

如果客戶端機器不受您的控制,並且客戶端計算機可以直接連接數據庫,則安全性可能會受到影響。 API模塊(即使它處於與客戶端應用程序不同的進程中)可能會被篡改,反向設計等。使用N層體系結構,可以使用訪問數據庫的API層,並且客戶端只能使用API​​層訪問一個定義良好的API,適當的安全性可能審計,讓它只執行明確定義的行爲,沒有什麼比這更少的了。 DAL將成爲您的API層的實現細節。 – softveda 2011-12-19 10:57:09

+0

順便說一句當我說API時,我的意思是某種形式的遠程API使用低層傳輸,比如套接字,RMI/.Net遠程處理,或者更高級別的SOAP,REST等。 – softveda 2011-12-19 10:59:39