簡介 一個三層或是多層信息系統架構的好處是
可將其焦點放在一些
信息
的處理工作上
另一方面
對於大部份信息技術專家而言
也是了解和體會此項新技術潛力的良機
然而
信息技術的工作人員在他們大量的信息系統產品中
常常會遺留一些令人感到惋惜的事實
例如
大部份產品裡並沒有運用
組件
的概念
或在無奈的壓力下繼續進行系統功能的加強
即使他們知道(這些系統)隨著使用年限的延長已經出現了問題也是如此
這篇報告將對該項議題展開討論
並且將會提供一些實際的建議
而不單單是將現有的系統進行組件化
多層架構化
另一方面也提供了如何以團隊開發的概念
將某些信息技術轉換到一個
以組件為基礎
的新程序開發境界
邏輯多層架構和實體分布式架構 在開始討論之前
必須先了解邏輯多層架構和實體分布式架構兩者的區別
了解邏輯多層架構和一個實體分布式系統的不同之處
將有助於說明移植現存系統的途徑
可持續地進行系統增強
而這則不會產生一個令人生畏的學習過程
邏輯多層架構 一個邏輯多層架構的設計是應用程序按邏輯工作
它可以分成三個獨特的服務領域
用戶服務
商務服務
和
數據服務
這種區域分隔方式允許開發人員在數據庫和用戶程序之間
引入抽象的彈性分層
每一層都負責不同的工作任務
當將它們結合在一起時
會變成一個具有凝聚性
合作性的系統
且具備了彈性
堅固性
及可成長擴充等特性
數據服務
主要負責數據的配置和常態性
下面我們以數據庫的關聯來典型的說明范例
數據服務需要包含所有的儲存過程
內含所有組件基本的數據訪問
譬如對一個客戶的搜索組件等
數據服務所處理的工作較為一般
例如
維護數據的常態性
恢復和保持數據完整一致性等工作
而並不是在數據中實際執行任何一條特定的事務規則
此外
商務服務
可以負責建立商務規則
它們在數據服務中
修復和保持數據的完整性
但它們新增了可實際執行有關應用商務規則的功能
而典型的商務服務范例組件包括
稅務計算
它運用了有用的商務數據
如
顧客
產品
訂單或授權契約等數據功能
而且還運用了如傳真與電話等商務功能
商務服務
雖然是不可見的
但由於它們可以將商務規則獨立出來
因此可以經常地更新商務規則
這些
商務服務
能讓用戶的工作內容數據具備有效性
或是在做計算和其它應用時
可以充分地運用商務規則
在信息系統中
用戶服務
是可見的
這些服務是將數據顯示給用戶
並允許用戶對這些數據進行操作
並且可以通過商務規則與商務服務鏈接在一起
進而確認和產生所需的數據
用戶服務
的范例如
窗體
控制
圖形及屏幕上所顯示的訊息
上述這些服務的好處是眾所周知的
由於不在此篇報告的范圍
這裡不再贅述﹝要了解關於多層設計優點的更多相關資料
請參閱在Visual Basic
到
企業版的文件集
其中記載了有關建立客戶端與服務器端的應用范例﹞
在這個可反應商務變化的系統中
以上所述功能足可以帶來更多的可維護性
分層性和可成長性
這些層次基本上是按邏輯區分的
並不表示在實際運作時
那些服務就一定會被分類的位置
其中必須注意的是
觀念上可將它們擺在
特定的分層
的設計裡
在這裡存放著所有可以被執行的服務
也就是說
這種方式允許共享和重復利用所有組件的設計技術
它是系統開發組件化中一項吸引人的優點
此項優點也意味著你將不再需要深入到組件的世界裡
即可獲得多層設計的好處
實體分布式架構 當一個系統在邏輯上被分成幾層時
它會被組件分化
組件是一個OLE項目
它提供OLE自動化接口的集合
可以使任何OLE自動化的用戶應用程序重復使用
這項組件是以二進制的格式進行編譯的
加以形態庫的包裹
最後以組件來呈現用戶接口
組件可以供許多客戶端共享
允許重復使用
並且可在任何一種支持OLE自動化服務器的計算機語言中進行開發
組件以下列以三種方式的產生在客戶端上
內部進程服務器
外部進程服務器或是遠程服務器
內部進程服務器
是動態連結﹝DLL﹞
並且在客戶端應用程序裡使用同一個進程及位置空間
外部進程服務器
則是在客戶端應用程序裡
使用不同進程和位置空間
遠程服務器
則是在完全分開的機器上執行
執行時使用其它機器的CPU和系統資源
以上每一種選擇均有其優缺點
而且在系統中每一個組件可選擇不同的分布式模塊
內部進程服務器
是在客戶端與服務器端之間
理想中高效率的重用組件模式
它們可以快速加載
並且由於占用相同的位置空間
因此在傳遞給客戶端應用程序或是從客戶端應用程序傳回數據時速度相當快
理所當然地
由於它們同樣為客戶端的應用程序
並且同屬於一個進程空間
因此它們必須位於同一個機器上
然而更新組件卻有潛在的困難
在Visual Basic中建立內部進程服務
也必須在相同的線程中執行客戶端程序
但如此一來
使它們不能同步執行客戶端程序代碼
如果在Visual C++中建立內部進程服務
則可產生如背景工作般的多重線程
外部進程服務器
是一種組件概念
其需要在分別的進程空間
或是線程中執行客戶端的應用程序
雖然這些服務器將會降低加載速度
當在客戶端和服務器端之間傳輸數據時
從一個地址空間傳輸到另一個地址空間將會造成延遲
但是外部進程自動化服務器仍具有可行性
因為外部進程服務器可以像一個獨立的應用程序方便了組件的使用
而且它們是在屬於它自己的線程中執行的
那是與客戶端應用程序不一樣的線程
在這個時候
外部進程服務器可使用定時器來配合背景或可執行異步的工作
遠程服務器
同樣也具可行性
因為它們在與客戶端應用程序不同的進程中執行
而且遠程服務器也可以在完全不相同的機器上執行客戶端應用程序
這是一個非常具有威力的特性
正如它可以讓你從客戶端機器中
從許多功能強大的服務器上脫線下載
特別是像廣域網中的另一個客戶端或像慢速連接的Internet
調用或執行
遠程服務器
的對象是上述三種方法中最慢的
而且數據傳輸和函數調用也是三者中最慢的
然而
當在遠程機器執行函數調用時
則客戶端的CPU將可以釋放系統資源
以讓其它工作使用
幸運地
Visual Basic的類模塊是完全獨立的
但它們會令人混淆
並且會讓你浪費時間來學習哪一種實體分散架構最適合現在的系統
通常我們需要一再嘗試
並且在內部進程
外部進程及遠程服務器之間移動類
有一則好消息
在實體分布式模塊間移動類時
客戶端程序和服務器端程序無需進行聯系
實際上
客戶端應用程序不須隨時使用
甚至開發人員可在執行時
將組件從外部進程服務器移到遠程服務器中
反之亦然
此項配置可獨立設置此種狀況
其目的是為了更容易將現有系統移植到一個多層架構的設計中
移植的步驟 如上所述
在真實的世界中
信息科技團隊持續地推動
維持和加強現存的系統
但是他們也了解到要延長其使用壽命
有賴於將這些系統移植到一個多層架構或是一個以分布式組件為基礎的系統中
在下一節中將會討論一些實際的建議
有關如何將現存系統朝向多層架構發展
卻不必將現在的項目完全拆開來等的問題
都有詳細討論
邏輯化設計 在准備一個三層次架構時
首先要做
邏輯化設計系統
然而
對那些方法論者也許會感到痛苦又加深了
但是這卻是建立以組件基礎系統的基本步驟
根據方法論者所提出理論來制作邏輯化設計
也許會很有幫助
但其並不需要一個嚴格的過程
而且你並不需要對這些過程作太多的服務或考慮
在邏輯化系統設計階段
組件的實體和它們最後的配置是有關系的
此項目是確認系統中實際的實體並了解它們之間如何交互
該實體通常是繁重工作的一部分
因為它有處理最近執行工作的能力
並且可以確認哪些事務是相關的
前述技術超出了本篇文章的討論范圍
下一節將提供一些建議
讓你了解如何哪些組件是需要先建構的
以及如何花一點時間就可以將你的系統組件化
請記住邏輯化系統是可增長的
並且要隨著系統發展進行更新與改進
它並不像一個項目團隊在第一次就要設計出完美的設計
甚至不像當有些情況改變時
仍然保持其完美性
該邏輯化設計必須延續下去且逐漸增長
正如系統一般
在做系統組件化後將會發現移植的發生率更加趨緩
從何處著手 一旦已確定有多個用戶
就應該決定系統中的
商務服務
和
數據服務
中
哪一項是應該首先建立的
然而對許多系統而言
這是個實際問題
當系統完全地變成組件編寫時
整個項目不可能隨時待命
然而對VB/OLE 服務器技術而言
你可以增加系統組件化程度
可以在項目允許情況下
從中移出一些組件先著手
第一個步驟是在系統中建立低層組件
由此可知
所謂的這些
低層組件
指的是被整個系統使用的
並且提供了操作系統擴充性的組件
正如你的數據訪問組件
登錄服務
傳送消息和網絡服務
還有電話集成服務和狀態管理服務等組件一樣
這些可重用組件並不限於只在你的項目使用
因為它們可以被整個系統使用
但是大部分系統均有相同的低層要求
當然
對其他項目而言
這些組件的功能
也是極具吸引力的
例如
一個組件允許你的應用程序寫入NT的事件日志
而且可能會被其它的應用程序使用
相對地
當你在現存的系統中開始拆開其它組件時
這些組件將需要低層服務
尤其在形成高層組件前
必須要先有低層的組件的存在
下一步要建立這些服務
它們將對在客戶端應用程序中
欲進入一個分開的地址空間
或是一個在實體上不同的機器有所幫助
這些服務的例子包括
信用卡驗證
傳真程序長時間運算及報表行生成程序
OLE服務器可以在客戶端應用程序中的同一個進程
或是在
From:http://tw.wingwit.com/Article/os/youhua/201311/10736.html