軟件測試分布對象技術的新進展[1] 軟件測試工具
關鍵字:面向對象 分布對象
應該說,分布對象技術是伴隨網絡而發展起來的一種面向對象的技術。以前的計算機系統多是單機系統,多個用戶是通過聯機終端來訪問的,沒有網絡的概念。網絡出現后,產生了Client/Server的計算服務模式,多個客戶端可以共享數據庫服務器和打印服務器等等。隨著網絡的更進一步發展,許多軟件需要在不同廠家的網絡產品、硬件平臺、網絡協議異構環境下運行,應用的規模也從局域網發展到廣域網。在這種情況下,Client/Server模式的局限性也就暴露出來了,于是中間件應運而生。中間件是位于操作系統和應用軟件之間的通用服務,它的主要作用是用來屏蔽網絡硬件平臺的差異性和操作系統與網絡協議的異構性,使應用軟件能夠比較平滑地運行于不同平臺上。同時中間件在負載平衡、連接管理和調度方面起了很大的作用,使企業級應用的性能得到大幅提升,滿足了關鍵業務的需求。但是在這個階段,客戶端是請求服務的,服務器端是提供服務的,它們的關系是不對稱的。隨著面向對象技術的進一步發展,出現了分布式對象技術?梢赃@么說,分布式對象技術是隨著網絡和面向對象技術的發展而不斷地完善起來的。90年代初CORBA 1.0標準的頒布,揭開了分布式對象計算的序幕。
分布對象計算中,通常參與計算的計算體(分布對象)是對稱的。分布對象往往又被稱為組件(Component),組件是一些獨立的代碼的封裝體,在分布計算的環境下可以是一個簡單的對象,但大多數情況下是一組相關的對象復合體,提供一定的服務。分布環境下,組件是一些靈敏的軟件模塊,它們可以位置透明、語言獨立和平臺獨立地互相發送消息,實現請求服務。
問:您提到,分布對象技術隨著面向對象技術的發展而不斷地成熟與完善起來,那么,分布對象技術與傳統的面向對象的技術有什么本質不同?
答:我們知道,傳統的面向對象技術有兩個基本的特點:封裝性和繼承性,通常其強調的是代碼復用,對象往往僅存在于一個程序中,程序的外界并不可能感知和訪問這些對象。而分布式對象技術主要使用了面向對象技術的封裝性,組件可以分布在網絡的任何位置。對外界來說,它所需關心的只是組件的界面,至于內部是如何實現的則無需考慮,遠程客戶通過方法調用來訪問它。這是分布式對象技術和傳統的面向對象技術的最大的不同點。
此外,分布對象計算系統中都不支持跨站點的繼承性,例如,假設對象1是對象2的一個特例,而2個對象將要分布在不同站點上,如果完全按照面向對象的概念的話,對象1可以繼承對象2的代碼和數據;但是在分布式環境下,對象1要想繼承對象2的代碼和屬性是非常困難的,沒有任何一個分布系統能夠支持這種繼承性,因為實現代價太大。
另外,在分布式對象里我們一般不提對象,而提組件。那么,組件和對象有什么區別呢?我們知道,在面向對象技術里可以有很小的一個對象,比如說一個郵政編碼做一個對象;但在分布對象計算中,我們往往會把一些小的相關的對象組合在一起,形成一個相對比較大的組件,通過這個組件來提供一系列的服務。
問:我們知道,目前分布式對象技術有3種主流技術——COM、Java和COBRA,請您談一下這3種技術是如何發展起來的?各自的特點是什么?
答:目前國際上,分布式對象技術有三大流派——COBRA、COM/DCOM和Java。CORBA技術是最早出現的,1991年OMG頒布了COBRA 1.0標準,在當時來說做得非常漂亮;再有就是Microsoft的COM系列,從最初的COM發展成現在的DCOM,形成了Microsoft一套分布式對象的計算平臺;而Sun公司的Java平臺,在其最早推出的時候,只提供了遠程的方法調用,在當時并不能被稱為分布式對象計算,只是屬于網絡計算里的一種,接著推出的JavaBean,也還不足以和上述兩大流派抗衡,而其目前的版本叫J2EE,推出了EJB,除了語言外還有組件的標準以及組件之間協同工作通訊的框架。于是,也就形成了目前的三大流派。
應該說,這三者之中,COBRA標準是做的最漂亮的。COBRA標準主要分為3個層次:對象請求代理、公共對象服務和公共設施。最底層是對象請求代理ORB,規定了分布對象的定義(接口)和語言映射,實現對象間的通訊和互操作,是分布對象系統中的“軟總線”;在ORB之上定義了很多公共服務,可以提供諸如并發服務、名字服務、事務(交易)服務、安全服務等各種各樣的服務;最上層的公共設施則定義了組件框架,提供可直接為業務對象使用的服務,規定業務對象有效協作所需的協定規則?傊,CORBA的特點是大而全,互操作性和開放性非常好。目前CORBA的最新版本是2.3。CORBA 3.0也已基本完成,增加了有關Internet集成和QoS控制等內容。CORBA的缺點是龐大而復雜,并且技術和標準的更新相對較慢,COBRA規范從1.0升級到2.0所花的時間非常短,而再往上的版本的發布就相對十分緩慢了。
文章來源于領測軟件測試網 http://www.kjueaiud.com/