二層是 用戶端-伺服器
三層是 用戶端-中介軟體-伺服器
三層結構就是:使用者介面層,商業邏輯層,資料庫層
使用者介面層負責處理使用者的輸入和向使用者的輸出,但並不負責解釋其含義(出於效率的考慮,它可能在向上傳輸使用者輸入前進行合法性驗證),這一層通常用前端工具(VB,VC,ASP等)開發;商業邏輯層是上下兩層的紐帶,它建立實際的資料庫連接,根據使用者的請求產生SQL語句檢索或更新資料庫,並把結果返回給用戶端,這一層通常以動態連結程式庫的形式存在並註冊到伺服器的註冊簿(Registry)中,它與用戶端通訊的介面符合某一特定的組件標準(如COM,CORBA),可以用任何支援這種標準的工具開發;資料庫層負責實際的資料存放區和檢索。
不想說大的概念,就說現在實際中用的比較多的吧。前台用PB,DELPHI,做介面和一些必要的元素的組織和簡單的處理(不涉及資料庫);中介軟體(IBM CICS,或者BEA TUXEDO),處理那些需要操作資料庫的業務部分。比如計算一張申請單中涉及的費用,然後傳給前台;底層就是資料庫了,大型的很多用Oracle。當然最底層就是UNIX了,現在小型機中比較多的是SUN Solaris 和HP UX.在這種情況下,中介軟體提供的是一個個服務,組織成一個個程式。以CICS為例,前台有三類:C/C++,Java,PB/DELPHI/VB等。因為中介軟體服務本身就是用C/C++/COBOL混合SQL(Oracle中叫Pro C)寫成的,所以C/C++的介面很簡單,裝個CICS用戶端就可以。Java是用一些對象(沒用過),PB等是用OLE方式,也要聲明對象,就像在PB中聲明非sqlca的Transaction Object一樣簡單。中介軟體和資料間通訊遵循的是XA規範,是來往兩組C API,有興趣可以研究一下啊。不知道這樣說是不是說得很複雜?
接下來說一下為什麼要用中介軟體,這是我的理解。
1.效能問題 主要是指訪問資料庫,這是大系統中主要的瓶頸。直接連庫在終端少的時候沒有問題。但是想想銀行,電信的行業,幾百個終端程式,全連上去,一個程式會有很多串連,就算是強大的Oracle也會受不了。而且是很多短小的SQL語句的頻繁訪問,就會不斷開和斷很多串連。開銷很大。採用中介軟體後,它和資料庫之間保持固定數目(有得中介軟體按這個串連數收錢)的串連,而且從線路角度講,這種線路比各處的終端過來的好,短距離,而且高速穩定。所有關鍵區段都在中介軟體處理,它會批量和資料庫打交道。還有一個好處。資料庫server一般就一個,多了一致性就是問題。而中介軟體server可以很多個,可以動態均衡負載,多台連上一個DB server。畫個圖就很容易理解了,而且以後業務量大了,還可以增加。
2.安全問題 上述的行業很重要的。每個終端可以直接操作資料庫就意味這有許可權,象銀行和電信的資料,都是錢,這樣很危險的。而且中斷時的事務完整性也很要注意。
3.更新和維護 由於業務部分在中介軟體,是集中的,更新是很好更新。想一想幾百個中斷,一旦整個版本出問題或者更新,就是一項工程了。
4.可擴充性 上面已經談到可以增加server。
要說明的是多了一層不會慢的,因為中介軟體是用C/C++和SQL寫的,編譯後效率很高的。
以上只是我接觸的一些,肯定不是很全面,而且自己也在不斷學習,可以上網用CICS或者TUXEDO搜尋一下,可以找到很多中介軟體的文章,有些是有商業目的的,不要全信哦。