DCOM

電腦通訊 9547 291 2014-11-23

DCOM(分佈式組件對像模型,分佈式組件對像模式)是一系列微軟的概念和程序接口,利用這個接口,客戶端程序對像能夠請求來自網絡中另一台計算機上的服務器程序對象。DCOM基於組件對像模型(COM),COM提供了一套允許同一台計算機上的客戶端和服務器之間進行通信的接口(運行在Windows95或者其後的版本上)。

Microsoft Distributed Component Object Model(DCOM)是Component Object Model(COM)的擴展,它支持不同的兩台機器上的組件間的通信,而且不論它們是運行在局域網、廣域網、還是Internet上。借助DCOM你的應用程序將能夠任意進行空間分佈。

由於DCOM是COM這個組件技術的無縫升級,所以你能夠從你現有的有關COM得知識中獲益,你的以前在COM中開發的應用程序、組件、工具都可以移入分佈式的環境中。DCOM將為你屏蔽底層網絡協議的細節,你只需要集中精力於你的應用。

例如,你可以為一個網站創建應該頁面,其中包括了一段能夠在網絡中另一台更加專業的服務器電腦上處理(在將它們發送到發出請求的用戶之前)的腳本或者程序。使用DCOM接口,網絡服務器站點程序(現在以客戶端對像方式發出動作)就能夠將一個遠程程序調用(RPC)發送到一個專門的服務器對象,它可以通過必要的處理,並給站點返回一個結果。結果將發送到網頁瀏覽器上。

DCOM還可以工作在位於企業內部或者除了公共因特網之外的其他網絡中。它使用TC/IP和超文本傳輸協議。DCOM是作為Windows操作系統中的一部分集成的。DCOM將很快在所有的主流UNIX平台和IBM的大型服務器產品中出現。DCOM替代了OLE遠程自動控制。

在提供一系列分佈式範圍方面,DCOM通常與通用對像請求代理體系結構(CORBA)相提並論。DCOM是微軟給程序和數據對像傳輸的網絡範圍的環境。CORBA則是在對像管理組織(OMG)的幫助下,由信息技術行業的其他商家提供贊助的。

DCOM概述

Microsoft的分佈式COM(DCOM)擴展了組件對像模型技術(COM),使其能夠支持在局域網、廣域網甚至Internet上不同計算機的對象之間的通訊。使用DCOM,你的應用程序就可以在位置上達到分佈性,從而滿足你的客戶和應用的需求。

因為DCOM是世界上領先的組件技術COM的無縫擴展,所以你可以將你現在對基於COM的應用、組件、工具以及知識轉移到標準化的分佈式計算領域中來。當你在做分佈式計算時,DCOM處理網絡協議的低層次的細節問題,從而使你能夠集中精力解決用戶所要求的問題。

為什麼要做分佈式應用

將應用分佈化並不是問題的結束。分佈式應用引入了一個全新的設計和擴展概念,它增加了軟件產品的複雜性,但是帶來了可觀的回報。某些應用本身就帶有分佈性,例如多人對戰遊戲、聊天程序以及遠程會議系統等等。因此,一種健壯的分佈式計算框架所帶來的好處是不言自明的。很多其它的應用也是分佈式的,即它至少有兩個組件運行在不同的計算機上,但是因為它不是為分佈性應用而設計的,所以它們的規模和可擴展性就有很大的局限性。任何的工作流或群件應用程序,大多數的客戶機/服務器應用程序一些桌面辦公系統本質上都控制著它們的用戶的通訊和協作。將這些系統作為分佈式系統並能夠在正確的地方運行正確的組件會給用戶帶來好處,並且使人們對網絡和計算機資源的運用更加充滿信心。設計應用程序時考慮到分佈性,能通過在客戶端運行組件使應用適用於具有不同性能的不同的客戶。

設計應用時考慮分佈性能夠使系統在擴展上具有很高的靈活性。

分佈式應用與它們的非分佈式版本比起來具有更大的可擴展性。如果整個複雜應用的邏輯結構可以用一個簡單的模型來表示,那麼僅僅只有一種方法來增加系統的工作效率:用更快的機器,而無需的應用本身進行調整。雖然現在的服務器和操作系統升級很快,但是買一個同樣性能的機器還是比將服務器的速度升級為原來的兩倍所花的錢少。有了一個設計適當的分佈式應用系統,一台功能不怎麼強大的服務器就能夠運行所有的組件。當負載增加時,可以將一些組件擴展到價格便宜的附加的機器上。

DCOM的結構

DCOM是組件對像模型(COM)的進一步擴展。COM定義了組件和它們的客戶之間互相作用的方式。它使得組件和客戶端無需任何中介組件就能相互聯繫。客戶進程直接調用組件中的方法。

在現在的操作系統中,各進程之間是相互屏蔽的。當一個客戶進程需要和另一個進程中的組件通訊時,它不能直接調用該進程,而需要遵循操作系統對進程間通訊所做的規定。COM使得這種通訊能夠以一種完全透明的方式進行:它截取從客戶進程來的調用並將其傳送到另一進程中的組件。

當客戶進程和組件位於不同的機器時,DCOM僅僅只是用網絡協議來代替本地進程之間的通訊。無論是客戶還是組件都不會知道連接它們的線路比以前長了許多。

組件和復用

大多數分佈式應用都不是憑空產生的。現存的硬件結構、軟件、組件以及工具需要集成起來,以便減少開發和擴展時間以及費用。DCOM能夠直接且透明地改進現存的對COM組件和工具的投資。對各種各樣組件需求的巨大市場使得將標準化的解決方案集成到一個普通的應用系統中成為可能。許多熟悉COM的開發者能夠很輕易地將他們在COM方面的經驗運用到基於DCOM的分佈式應用中去。

任何為分佈式應用開發的組件都有可能在將來被復用。圍繞組件模式來組織開發過程使得你能夠在原有工作的基礎上不斷的提高新系統的功能並減少開發時間。基於COM和DCOM的設計能使你的組件在現在和將來都能被很好到使用。

位置獨立性

當你開始在一個真正的網絡上設計一個分佈式應用時,以下幾個相互衝突的設計問題會很清楚地反映出來:

相互作用頻繁的組件彼此間應該靠得更近些。

某些組件只能在特定的機器或位置上運行。

小組件增加了配置的靈活性,但它同時也增加了網絡的擁塞。

大組件減少了網絡的擁塞,但它同時也減少了配置的靈活性。

當你使用DCOM時,這些設計上的限制將很容易解決,因為配置的細節並不是在源碼中說明的。DCOM使得組件的位置對你來說完全透明,無論它是位於客戶的同一進程中或是在地球的另一端。在任何情況下,客戶連接組件和調用組件的方法的方式都是一樣的。DCOM不僅無需改變源碼,而且無需重新編譯程序。一個簡單的再配置動作就改變了組件組件之間相互連接的方式。

DCOM的位置獨立性極大地簡化了將應用組件分佈化的任務,使其能夠達到最合適的執行效果。例如,設想某個組件必需位於某台特定的機器上或某個特定的位置,並且此應用有許多小組件,你可以通過將這些組件配置在同一個LAN上,或者同一台機器上,甚至同一個進程中來減少網絡的負載。當應用是由比較少的大組件構成時,網絡負載並不是問題,此時你可以將組件放在速度快的機器上,而不用去管這些機器到底在哪兒。

相同的「有效性檢查組件」在兩種不同情況下是如何分別配置的。一種情況是當「客戶」機和「中間層」機器之間的帶寬足夠大時,它是怎樣配置在客戶機上的;另一種情況是當客戶進程通過比較慢的網絡連接來訪問組件時,它又是怎樣配置在服務器上的。

有了DCOM的位置獨立性,應用系統可以將互相關聯的組件放到靠地比較近的機器上,甚至可以將它們放到同一台機器上或同一個進程中。即使是由大量的小組件來完成一個具有複雜邏輯結構的功能,它們之間仍然能夠有效到相互作用。當組件在客戶機上運行時,將用戶界面和有效性檢查放在客戶端或離客戶端比較近的機器上會更有意義;集中的數據庫事務應該將服務器靠近數據庫。

語言無關性

在設計和實現分佈式應用系統時,一個普遍的問題就是為開發一個特定的組件而選擇語言以及工具的問題。語言選擇是一個典型的在開發費用、可得到的技術支持以及執行性能之間的折衷。作為COM的擴展,DCOM DCO具有語言獨立性。任何語言都可以用來創建COM組件,並且這些組件可以使用更多的語言和工具。Java,Microsoft Visual C++,Microsoft Visual Basic,Delphi,PowerBuilder和Micro Focus COBOL都能夠和DCOM很好地相互作用。

因為DCOM具有語言獨立性,應用系統開發人員可以選擇他們最熟悉的語言和工具來進行開發。語言獨立性還使得一些原型組件開始時可以用諸如Visual Basic這樣的高級語言來開發,而在以後用一種不同的語言,例如Visual C++和Java來重新實現,而這種語言能夠更好地支持諸如DCOM的自由線程/多線程以及線程共用這些先進特性。

連接管理

網絡連接本身就比同一台機器中的連接更脆弱。當一個客戶不再有效,特別是當出現網絡或硬件錯誤時,分佈式應用中的組件需要被加以注意。

DCOM通過給每個組件保持一個索引計數來管理對組件的連接問題,這些組件有可能是僅僅只連到一個客戶上,也有可能被多個客戶所共享。當一個客戶和一個組件建立連接時,DCOM就增加此組件的索引計數。同理,當客戶釋放連接時,DCOM就減少此組件的索引計數。如果索引計數為零,組件就可以被釋放了。

DCOM使用有效的地址合法性檢查(pinging)協議來檢查客戶進程是否仍然是活躍的。客戶機週期性地發送消息,當經過大於等於三次ping週期而組件沒有收到ping消息時,DCOM就認為這個連接中斷了。一旦連接中斷,DCOM就減少索引計數,當索引計數為零時就釋放組件。從組件的這一點看來,無論是客戶進程自己中斷連接這種良性情況,還是網絡或者客戶機崩潰這種致命情況,都被同一種索引計數機制處理。

在很多種情況下,組件和它的客戶進程之間的信息流是沒有方向性的:組件需要在客戶端進行某些初始化操作,例如一個長進程的結束,用戶所觀看數據的更新,或者諸如電視以及多用戶遊戲這些協作環境中的下一條信息等。許多協議使得完成這種對稱性的通迅十分困難。使用DCOM,任何組件都既可以使功能的提供者,有能是功能的使用者。通迅的兩個方向都用同一種機制來管理使得完成對



,