基於消息驅動的面向對象通用C/S應用框架(一)

第1章

C/S應用框架介紹

        內容簡介:

        基於框架來開發具體的應用系統已然是軟件開發的主流模式,比如基於CORBA/ORB、J2EE/EJB、DCOM等來開發工業級和企業級分佈式應用軟件系統,基於ACE來開發複雜的應用服務器軟件,基於MFC框架來開發Windows窗口類應用軟件,等等。通用框架以及某類應用系統的應用框架,對應用系統軟件的設計和開發的影響無疑是巨大的,好的影響當然是可以減少工作量、提高開發效率和縮短開發週期,以及構建的系統更加健壯和可擴展;不好的影響則是開發人員必須強迫自己接受這些框架倡導的一些思想、抽象概念、方法以及工具,並且通常需要經歷較長時間的學習和實踐過程,即使有專門的培訓也不見得短期內就能夠掌握,所以要想熟練運用就需要開發人員付出額外的努力。

        本章將首先簡單地闡述一下應用框架的概念及其優點,然後具體介紹C/S(客戶機/服務器)類型的應用系統常用的且比較著名的幾個應用框架和技術,包括CORBA、DCOM和ACE,最後闡述它們各自的特點和優缺點。本章將作爲第二章“基於消息驅動的通用C/S應用框架設計和實現”的背景和鋪墊。

1.1    什麼是應用框架

1.2    C/S模型的演變

1.3    CORBA分佈式面向對象體系結構

1.4    COM/DCOM

1.5    ACE架構

 

1.1 什麼是應用框架

        爲什麼要開發和使用應用框架呢?這是因爲某些類型的應用軟件都具有一些基本的需求、特性以及方法,如需要人機交互界面、文件讀寫、網絡通信、事件處理、打印輸出等等;再如某些領域(比如金融、電信、保險、醫療衛生、石油化工等)的應用軟件系統也有各自共同的需求,除了人機界面、網絡通信等基本需求外,還需要通信安全性、跨平臺可移植、事務服務、併發服務以及構件可分佈性和動態遷移性,等等。如果將這些共性提取出來並加以整合,然後實現爲某類應用軟件的通用框架,就可以在此類應用系統的開發中重用這些框架,這將極大地簡化日後此類應用軟件的開發工作、減少工作量和加快開發速度,同時可提供統一的和標準化的軟件解決方案。額外的好處當然是編寫出來的軟件具有統一的架構、統一的風格和模式,可維護性和可擴展性將更好,而且由於框架必然要經過千錘百煉,所以基於這樣的框架編寫出來的程序將更加健壯(即使出現Bug也多是從你自己編寫的代碼中冒出來的J)。

        一般類型的應用程序雖然沒有具體應用領域的軟件那麼多高級而複雜的需求,但也可以針對基本需求提煉出通用的框架,例如多媒體應用程序、經典的客戶機/服務器(C/S)應用等。面嚮對象語言的出現(如Smalltalk、C++、Java等),使得應用框架的設計和實現成爲可能,並且很快就出現和發展了大量的應用框架,比如針對網絡服務類應用程序開發的架構有CORBA、J2EE和ACE等,針對一般窗口類應用程序開發的框架有MFC、OWL、OpenClass等,針對多媒體應用軟件的框架有Microsoft的DirectX系列,等等。我們很多人即使沒有使用過這些技術和應用框架,但也可能聽說過。

        那麼到底什麼是應用框架呢?它和類庫有什麼區別呢?什麼樣的類庫才能稱得上是應用框架呢?

        從原理上說,一個應用框架致力於爲一類應用程序提供統一的解決方案,它提供應用程序的基本結構、基本流程和骨架,但是需要用戶按照一定的規則和模式來補充具體應用的細節。應用框架指定了面向對象架構中軟件組件之間的關係、工作模式和接口。應用框架在最抽象一級上爲某類應用建立通用模型,所以應用框架爲用戶提供的是一套架構、模式和規則。當然,應用框架幾乎肯定是建立在一套類庫的基礎之上的,所以也可能會提供一些預定義好的通用組件,用戶可以直接使用這些組件,或者也可以擴展它們。此外,應用框架還會解決一類應用程序的基本性和通用性的問題並提供相應的基礎設施。

        具體地講,應用框架就是一組內聚性和邏輯性強、組織良好的類和類庫,但是它並不包含實際的對象。框架中的類彼此關聯或包含,並且彼此交互和合作,所以它們都不能單獨使用,而必須共同重用。此外,用戶不能修改框架中的任何類,而只能從框架中的基類派生出自己的具體應用類,當程序運行起來後由框架按需要自動創建這些類的對象並調用它們,或者由用戶手工創建並調用它們,這符合共同封閉原則。

        比如MFC,它不僅僅是個類庫,它提供了對基於窗口的人機交互界面的Windows API的封裝和麪向對象的模型,提供了消息映射、分發和傳遞以及處理的框架,提供了對運行時對象類型識別(RTTI)和動態創建對象的支持,提供了數據持久化機制,提供了Document/View框架來支持數據處理和展示,以及對COM開發的支持等等,MFC提供了幾組設計巧妙的宏來支持這些機制。此外,MFC還提供了基本控件封裝、繪圖支持、數據庫訪問支持以及Internet服務支持和一些基本的集合類等。MFC配合集成開發環境(IDE)中提供的嚮導工具就可以不費吹灰之力地製作出一個應用程序的初始框架代碼。隨着技術的不斷髮展,MFC還會加入更多的應用支持,並不斷演變爲更加完善和強大的工具。

        再如CORBA,它致力於解決網絡環境中異構平臺上的不同應用程序之間的互操作性問題,它將這種互操作性抽象爲CORBA對象的接口調用。它不僅規定了IDL接口標準以實現這種抽象的客戶機和服務器之間的調用協議,還制定了GIOP協議來完成用各種語言實現的CORBA對象之間的消息傳遞,各種平臺上的ORB實現更是屏蔽了底層硬件體系結構和操作系統以及網絡協議的細節,確保應用層的代碼具有最大的可移植性;而且它提供了很多公共服務如命名服務、安全通信服務、事務服務、事件通知、持久化服務等基礎設施以及它們的訪問接口。

        而普通的類庫中的類之間顯然沒有那麼強的耦合性,大多數類可能彼此獨立,無任何關係,只有少數的類之間存在一些簡單或鬆散的耦合關係。比如C++ STL庫中,容器和通用算法可以通過迭代器而在一起合作,但是具體一個容器類、一個算法和一個迭代器類之間卻沒有必然的關係;各種容器類之間也不存在任何關係;函數對象可用於通用算法,但是具體某個函數對象卻和任何通用算法之間不存在耦合;等等。STL庫中的各類組件之間是通過模板和標準接口適配在一起的,而不是耦合在一起的,所以它們可以獨立發展。另外一些類庫主要是解決某一類技術問題,而不是針對某一類應用軟件開發的,比如數學類庫、圖形類庫、XML文檔解析類庫等等。

        最後,應用框架把程序員從一些通用的和公共的但卻很繁瑣的工作中解放出來,從而可以讓他們把主要精力集中在應用層業務邏輯的設計和實現上,顯著地提高生產率。近年比較著名的ACE就是這樣的框架。

發佈了11 篇原創文章 · 獲贊 2 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章