使用delphi 開發多層應用(二)為什么要使用多層開發?


     隨着各種應用系統越來復雜,用戶終端類型越來越多,傳統的C/S 系統面臨着越來越多的問題和挑戰,我們先看一下C/S 結構的

架構圖:

      

   客戶端系統一般通過數據庫的客戶端與數據庫連接,然后通過SQL 語句訪問數據庫服務器,數據庫根據客戶端的請求返回數據,在簡單的系統里面

這種方式基本上沒有什么問題,而且開發起來比較簡單。但是這種結構面臨這下面一些問題:

    1.一般商務邏輯都建立在客戶端,當出現不同的語言開發一個系統時,每種語言都必須寫同樣的商務邏輯,造成了重復開發,浪費人力物力;

       同時由於商務邏輯建立客戶端,每次邏輯的變化,都需要升級客戶端,當客戶端的數量超過上千台時,這種更新的代價會非常高。

    2. 一般C/S 的客戶端與數據庫的建立連接后,都是一直保持着,也就是說是有狀態的,這樣當客戶端非常多時,即就是不做數據庫操作,服務器為了

       保持這些連接,壓力也會非常大,甚至會消耗完系統資源而當機。

    3.由於C/S 系統是直接連接后台數據庫服務器的,因此對於后台服務器來說,客戶端基本上都是信任的,這樣就具有非常大的安全漏洞,尤其是當客戶端

      面向大眾,攻擊者在客戶端可以偽造訪問服務器的SQL 命令,造成數據庫信息的泄漏和丟失。

    4. 當后台數據庫服務器變化時,例如由MS SQLSERVER 換成 ORACLE時,客戶端必須進行非常大的改造。

    5. 對於一些最新的設備,例如Android,IOS, WMP 設備,根本就無法安裝數據庫客戶端,無法使用這種方式開發;

   

  基於以上幾個問題,當系統變得也來越復雜時,我們不得不使用多層開發來解決這些問題,我們先看看多層開發的架構圖:

   

 

 最直觀的差別就是在客戶端和數據庫之間多了中間層,也就是說客戶端是通過中間層來訪問數據庫服務器。

這種方式可以有效的解決上面遇到的問題:

 1.將商務邏輯建立在中間層,對客戶端提供一個統一調用的接口,可以是webservice、RESTful,RPC 等方式,

   目前各種語言及系統都基本上支持這些接口。這樣如果商務邏輯發生變化后,只需要更新中間層,客戶端不需要

   任何變化。更方便的是,對於一些變化非常頻繁的業務,我們可以在中間層用腳本來描述商務邏輯,這樣就可以隨時

   更新商務邏輯,保證了最大的可用性。

 2.中間層一般采用數據庫池,與數據庫建立一定的連接數,當大量的客戶端連接時,可以有效的保護數據庫服務器,

   同時為了提高服務器速度和效率,可以與客戶端采用無狀態連接,例如http 服務器就是無狀態連接的最好的例子。

3.由於客戶端訪問數據庫是通過中間層的,一次基本上不需要在客戶端使用SQL 語句,中間層與數據庫在安全區域,防止了

  偽造 SQL 語句破壞數據庫數據。

4.當后台數據庫反生變化時,只需要更新中間層,客戶端不受影響。

5.各種新的設備及系統都支持webservice、RESTful,RPC 等方式。

6. 由於采用了中間層,可以非常方便的在中間層實現負載平衡、失效恢復、性能統計等功能。大大提高了系統的可擴展性和可靠性。

 

綜上所述,多層架構可以解決很多C/S 架構的問題,有很多優點,但是也有一些缺點,例如,開發起來困難,數據傳輸效率在有的情況下比較低,

安裝、調試起來復雜等,但是瑕不掩瑜,同時現在各種開發工具和框架都對多層開發都又非常強的支持,我們一定可以利用多層開發技術

開發出優秀的系統的。

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM