N層結構與中介軟體(zt)
當今世界,越來越多的應用系統採用分散式模型。然而,很少有管理人員、設計人員及開發人員能在設計、開發、管理中完全理解分散式應用中的底層元件。
N層模型
一個系統是否能獲得成功,最初常常依賴於對工具及管理方法的選擇。有些方案提供者並不真正瞭解專業的、企業級的需求,他們會有意無意地向使用者推薦專有系統模式,使得將來對應用系統的修改變得痛苦不堪或根本不可能。在這種情況下你只有兩種選擇:重新構建你的系統或購買更多的軟硬體。也許你會問:"為什麼我要修改系統?"很簡單,因為我們生活在一個劇烈變化的時代,如果你不能及時調整以適應業務的變化,你將很快被淘汰。然而,只要你擁有一個好的設計及清晰的模式,修改並不總是意味著你需要重新構建自己的系統。
N層結構的前提是一組網路、資料、應用的集合,Client和Server可以動態地建立或斷開連線以滿足使用者的需求。在這種模式下,使用者可以在任何時間、任何地點存取資料及應用邏輯,其優點是,無論何時,即使需要對元件或子件進行簡單或複雜的修改,都不會對其他元件造成影響。
1. 表示層
在N層結構中,表示層通常是指人機介面,也就是我們常常遇到的字元/圖形使用者介面(CHUI/GUI)。CHUI/GUI作為人機介面,是應用分析員/程式設計師設計的視窗介面,指導操作人員使用已定義好的服務或函式。 從理論上講,表示層並不擁有任何商業邏輯,但是考慮到有少量應用邏輯不會出現經常性的變化,因此在實際設計中,我們可以把這部分應用邏輯放在表示層.
2. 商業邏輯
商業邏輯與企業的實際應用密切相關,它包括公司的規則及運作方法。商業邏輯所做的,通常是接收輸入、處理和返回結果。這裡以一個描述支票賬戶取款過程的商業邏輯為例。對這類交易,某家銀行可能規定如果使用者賬號中沒有足夠的資金,其取款操作將不予執行。然而,另外一家銀行可能以允許使用者有限透支為前提,接受使用者的取款請求。如果應用系統設計得足夠靈活,就足以應付這樣的應用邏輯變化。
3. 資料處理邏輯
將資料處理邏輯與商業邏輯分開的原因之一是大多數DML (如 SQL)的程式碼相同。二者的分離將有助於資料處理邏輯的重用。當然,你可能已經認識到資料處理邏輯是商業邏輯與資料庫系統間的主要部分。
4. 管理
應用變得越來越大、越來越複雜,分佈越來越廣,使得對應用可用性的需求提高。管理服務就必須提供從開發到分佈直至維護的全面支援。
5. 安全性
安全性不僅限於使用者的登入檢查,還包括網路檢查、系統檢查、使用者賬號檢查、應用資料檢查和資料保密。例如,應用的安全性指通過存取控制表限制某類使用者對某些應用的存取,銀行的使用者不能通過Internet請求外部資金轉賬,因為他受到安全性控制。
6. 資料儲存庫
儲存庫是一種軟體機制,它負責儲存、管理元件,包括應用服務和商業邏輯。儲存庫也存放一些關鍵資訊,如物件建模(UML)和資料庫定義。如果沒有恰當的資料儲存庫,你便無法發現哪些應用邏輯是可用的,何人何時會修改它們?
儲存庫可有效地幫助開發人員更快地理解應用,去發現已存在的可用元件而無需重複開發,從而有效地控制開發費用。因此,在應用中的任何修改,都應該同時修改對應的儲存庫,以使其與之保持同步。
7. 中介軟體
中介軟體是分散式應用中的一個關鍵元件,它為N層元件結構中描述的服務提供介面。目前,中介軟體技術出現了多種走向,很多中介軟體因為沒有把效能作為頭等考慮因素而導致整個應用系統的開發陷入困境。在選擇中介軟體產品時,容易犯的一個錯誤是選擇的產品缺乏成熟度。諸如銀行、航空、鐵路交通等單位執行的關鍵任務應用是不允許失敗的,因此,選擇可信賴廠商的中介軟體產品是應用系統成功的基本保證。此外,中介軟體對其他產品的開放程度對於節省開發費用來講至關重要。你的應用是否能連線到Internet上?是否能實現與其他平臺的平滑連線?這些都與中介軟體密切相聯。
N層元件
上面分析了N層元件結構中的各個元件,現在我們來看一下如何把各個元件結合在一起,以滿足應用系統的需要。理論上講,現實世界中有4種拓撲結構:集中型、資料分佈型、資料集中型以及高可用型。你可以選擇其一,使得從一種拓撲結構可透明地,或者至少是簡單地轉變到另一種結構。
1. 集中型
在這種結構中,Client程式連線某臺指定的機器並通過其完成交易。資料庫放置在同一臺機器上,或指定一臺專門的機器充當資料庫伺服器。如果你的公司中只有一兩臺主伺服器,這種結構會給你帶來下列好處:集中式的管理、安全和簡易性。如果我們把資料庫引擎放在同一臺機器上,這將是最簡單的模式; 如果把資料庫引擎放在另一臺機器上,則儘管增加了複雜性,但也同時會帶來好處:當大量使用者連線到第一臺機器上時,另一臺機器的負擔將會減輕。在這兩種情況下,整個系統的前臺沒有任何變化,所有的變化都發生在後臺。
2. 資料分佈型
資料分佈型結構類似前一種結構,只是資料庫分佈在每臺Server上。它具有以下優點:無單點失敗且可獨立進行管理。我們可以將這種結構用於資料分割,例如邏輯分割和地理分割。
值得注意的是,交易的執行可以由一臺機器跨越另一臺機器,因此使用全程交易至關重要。例如,如果我們有一個交易需要跨越兩臺機器,那麼該交易在兩臺機器上,要麼全部提交,要麼全部放棄,否則,便會面臨資料不一致的威脅。完成全程交易的方法之一是使用中介軟體(如TUXEDO)提供的源於X/Open組織的XA協議,協調管理全程交易。
3. 資料集中型
這種結構是對集中型的一種增強,由其中的一臺機器作為資料存取伺服器,而在前臺提供更多的應用伺服器,共享一個資料庫伺服器。這種情況下,必須使用資料庫軟體提供的並行處理功能及硬體廠商提供的硬體叢集策略。
4. 高可用型
現在,所有使用者都希望在硬體出現錯誤時,應用的遷移能更加簡單,並且在遷移的同時能保證系統繼續執行且儘量減少人工干預。類似TUXEDO這樣的中介軟體可以提供這樣的功能,它可以幫助作業系統自動遷移關鍵元件到正常的機器上。對企業的關鍵型業務應用來說,在應用系統設計初期選擇一個可擴充套件的策略將有助於企業在需要時把應用系統的結構從一種模式轉移到另一種模式,並在系統擴充套件時節省大量費用(誰不希望如此呢!)。
N層模型
一個系統是否能獲得成功,最初常常依賴於對工具及管理方法的選擇。有些方案提供者並不真正瞭解專業的、企業級的需求,他們會有意無意地向使用者推薦專有系統模式,使得將來對應用系統的修改變得痛苦不堪或根本不可能。在這種情況下你只有兩種選擇:重新構建你的系統或購買更多的軟硬體。也許你會問:"為什麼我要修改系統?"很簡單,因為我們生活在一個劇烈變化的時代,如果你不能及時調整以適應業務的變化,你將很快被淘汰。然而,只要你擁有一個好的設計及清晰的模式,修改並不總是意味著你需要重新構建自己的系統。
N層結構的前提是一組網路、資料、應用的集合,Client和Server可以動態地建立或斷開連線以滿足使用者的需求。在這種模式下,使用者可以在任何時間、任何地點存取資料及應用邏輯,其優點是,無論何時,即使需要對元件或子件進行簡單或複雜的修改,都不會對其他元件造成影響。
1. 表示層
在N層結構中,表示層通常是指人機介面,也就是我們常常遇到的字元/圖形使用者介面(CHUI/GUI)。CHUI/GUI作為人機介面,是應用分析員/程式設計師設計的視窗介面,指導操作人員使用已定義好的服務或函式。 從理論上講,表示層並不擁有任何商業邏輯,但是考慮到有少量應用邏輯不會出現經常性的變化,因此在實際設計中,我們可以把這部分應用邏輯放在表示層.
2. 商業邏輯
商業邏輯與企業的實際應用密切相關,它包括公司的規則及運作方法。商業邏輯所做的,通常是接收輸入、處理和返回結果。這裡以一個描述支票賬戶取款過程的商業邏輯為例。對這類交易,某家銀行可能規定如果使用者賬號中沒有足夠的資金,其取款操作將不予執行。然而,另外一家銀行可能以允許使用者有限透支為前提,接受使用者的取款請求。如果應用系統設計得足夠靈活,就足以應付這樣的應用邏輯變化。
3. 資料處理邏輯
將資料處理邏輯與商業邏輯分開的原因之一是大多數DML (如 SQL)的程式碼相同。二者的分離將有助於資料處理邏輯的重用。當然,你可能已經認識到資料處理邏輯是商業邏輯與資料庫系統間的主要部分。
4. 管理
應用變得越來越大、越來越複雜,分佈越來越廣,使得對應用可用性的需求提高。管理服務就必須提供從開發到分佈直至維護的全面支援。
5. 安全性
安全性不僅限於使用者的登入檢查,還包括網路檢查、系統檢查、使用者賬號檢查、應用資料檢查和資料保密。例如,應用的安全性指通過存取控制表限制某類使用者對某些應用的存取,銀行的使用者不能通過Internet請求外部資金轉賬,因為他受到安全性控制。
6. 資料儲存庫
儲存庫是一種軟體機制,它負責儲存、管理元件,包括應用服務和商業邏輯。儲存庫也存放一些關鍵資訊,如物件建模(UML)和資料庫定義。如果沒有恰當的資料儲存庫,你便無法發現哪些應用邏輯是可用的,何人何時會修改它們?
儲存庫可有效地幫助開發人員更快地理解應用,去發現已存在的可用元件而無需重複開發,從而有效地控制開發費用。因此,在應用中的任何修改,都應該同時修改對應的儲存庫,以使其與之保持同步。
7. 中介軟體
中介軟體是分散式應用中的一個關鍵元件,它為N層元件結構中描述的服務提供介面。目前,中介軟體技術出現了多種走向,很多中介軟體因為沒有把效能作為頭等考慮因素而導致整個應用系統的開發陷入困境。在選擇中介軟體產品時,容易犯的一個錯誤是選擇的產品缺乏成熟度。諸如銀行、航空、鐵路交通等單位執行的關鍵任務應用是不允許失敗的,因此,選擇可信賴廠商的中介軟體產品是應用系統成功的基本保證。此外,中介軟體對其他產品的開放程度對於節省開發費用來講至關重要。你的應用是否能連線到Internet上?是否能實現與其他平臺的平滑連線?這些都與中介軟體密切相聯。
N層元件
上面分析了N層元件結構中的各個元件,現在我們來看一下如何把各個元件結合在一起,以滿足應用系統的需要。理論上講,現實世界中有4種拓撲結構:集中型、資料分佈型、資料集中型以及高可用型。你可以選擇其一,使得從一種拓撲結構可透明地,或者至少是簡單地轉變到另一種結構。
1. 集中型
在這種結構中,Client程式連線某臺指定的機器並通過其完成交易。資料庫放置在同一臺機器上,或指定一臺專門的機器充當資料庫伺服器。如果你的公司中只有一兩臺主伺服器,這種結構會給你帶來下列好處:集中式的管理、安全和簡易性。如果我們把資料庫引擎放在同一臺機器上,這將是最簡單的模式; 如果把資料庫引擎放在另一臺機器上,則儘管增加了複雜性,但也同時會帶來好處:當大量使用者連線到第一臺機器上時,另一臺機器的負擔將會減輕。在這兩種情況下,整個系統的前臺沒有任何變化,所有的變化都發生在後臺。
2. 資料分佈型
資料分佈型結構類似前一種結構,只是資料庫分佈在每臺Server上。它具有以下優點:無單點失敗且可獨立進行管理。我們可以將這種結構用於資料分割,例如邏輯分割和地理分割。
值得注意的是,交易的執行可以由一臺機器跨越另一臺機器,因此使用全程交易至關重要。例如,如果我們有一個交易需要跨越兩臺機器,那麼該交易在兩臺機器上,要麼全部提交,要麼全部放棄,否則,便會面臨資料不一致的威脅。完成全程交易的方法之一是使用中介軟體(如TUXEDO)提供的源於X/Open組織的XA協議,協調管理全程交易。
3. 資料集中型
這種結構是對集中型的一種增強,由其中的一臺機器作為資料存取伺服器,而在前臺提供更多的應用伺服器,共享一個資料庫伺服器。這種情況下,必須使用資料庫軟體提供的並行處理功能及硬體廠商提供的硬體叢集策略。
4. 高可用型
現在,所有使用者都希望在硬體出現錯誤時,應用的遷移能更加簡單,並且在遷移的同時能保證系統繼續執行且儘量減少人工干預。類似TUXEDO這樣的中介軟體可以提供這樣的功能,它可以幫助作業系統自動遷移關鍵元件到正常的機器上。對企業的關鍵型業務應用來說,在應用系統設計初期選擇一個可擴充套件的策略將有助於企業在需要時把應用系統的結構從一種模式轉移到另一種模式,並在系統擴充套件時節省大量費用(誰不希望如此呢!)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7364032/viewspace-366238/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 構件與中介軟體
- Redis中介軟體與Web中介軟體RedisWeb
- 使用SAP CRM中介軟體從ERP下載具有層級結構的equipmentUI
- RAC軟體架構——RAC概念(zt)架構
- 中介軟體之訊息中介軟體-pulsar
- Linux 硬連結與軟連結(zt)Linux
- 趣頭條 中介軟體架構師架構
- 中介軟體產品架構師招聘架構
- FD.io VPP軟體架構(一):vppinfra(基礎結構層)架構
- zt_weblogic在linux上的安裝_中介軟體WebLinux
- 基礎架構體系中介軟體學習架構
- Web中介軟體常見漏洞總結Web
- Mysql中介軟體 oneProxy的使用總結MySql
- 中介軟體漏洞攻防學習總結
- 深入 Linux PAM 體系結構(zt)Linux
- ROWID的結構與組成 zt
- 淺談中介軟體漏洞與防護
- Express 與 koa 中介軟體模式對比Express模式
- 訊息中介軟體與JMS標準
- 軟體架構分層方法論架構
- ThinkPHP 中介軟體PHP
- redux中介軟體Redux
- golang 中介軟體Golang
- 中介軟體整理
- django中介軟體Django
- Laravel 中介軟體Laravel
- Django——中介軟體Django
- MySQL中介軟體MySql
- 中介軟體-NginxNginx
- 中介軟體漏洞
- zt SE軟體
- 訊息中介軟體Notify和MetaQ-阿里中介軟體阿里
- MySQL中介軟體總結MySql
- 軟體體系結構:二維分層、模組化和開放平臺
- [Q]ROWID的結構與組成 zt
- Express與Koa中介軟體機制分析(二)Express
- Express與Koa中介軟體機制分析(一)Express
- 【Mysql】KingShard中介軟體的使用與配置MySql