COM、COM+和DCOM的定義和區別

Web開發者發表於2016-05-23

  解釋COM、COM+和DCOM的定義和區別?

  COM是元件物件模型,是實現3/N層應用的基礎,它的目的就是元件化,應用程式分層。

  DCOM是分散式的COM,也就說可以遠端的建立,最初它利用遠端自動化來實現,用註冊VBR的方法來配置客戶端,來適應DCOM伺服器。

  COM+現在的概念不很清楚,因為它是一個擴充套件集,MS現在的MTS取代了遠端自動化這種原始的功能很弱的方法後,他們似乎已經都是一個集合體。

  何謂Mts?

  MTS(Microsoft  Transaction Server)是微軟為其Windows NT作業系統推出的一箇中介軟體產品,由於它具有強大的分佈事務支援、安全管理、資源管理和多執行緒併發控制等特性,使其成為在Windows平臺上開發大型資料庫應用系統的首選產品。由於MTS遮蔽了底層實現的複雜性,極大地簡化了這類應用的開發,程式設計師可以將精力集中在業務邏輯上,因而有效地提高了軟體的開發效率.

  元件物件模型(COM Componet Object Model),是微軟公司為了計算機工業的軟體生產更加符合人類的行為方式開發的一種新的軟體開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的元件,然後將它們按照需要組合起來,構成複雜的應用系統。由此帶來的好處是多方面的:可以將系統中的元件用新的替換掉,以便隨時進行系統的升級和定製;可以在多個應用系統中重複利用同一個元件;可以方便的將應用系統擴充套件到網路環境下;COM與語言,平臺無關的特性使所有的程式設計師均可充分發揮自己的才智與專長編寫元件模組。

  COM是開發軟體元件的一種方法。元件實際上是一些小的二進位制可執行程式,它們可以給應用程式,作業系統以及其他元件提供服務。開發自定義的COM元件就如同開發動態的,物件導向的API(應用程式呼叫系統功能的介面)。多個COM物件可以連線起來形成應用程式或元件系統。並且元件可以在執行時刻,在不被重新連結或編譯應用程式的情況下被卸下或替換掉。Microsoft的許多技術,如ActiveX(根據微軟權威的軟體開發指南MSDN(Microsoft Developer Network)的定義,ActiveX外掛以前也叫做OLE控制元件或OCX控制元件,它是一些軟體元件或物件,可以將其插入到WEB網頁或其它應用程式中), DirectX(DirectX並不是一個單純的圖形API,它是由微軟公司開發的用途廣泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多個元件,它提供了一整套的多媒體介面方案。只是其在3D圖形方面的優秀表現,讓它的其它方面顯得暗淡無光。DirectX開發之初是為了彌補Windows 3.1系統對圖形、聲音處理能力的不足,而今已發展成為對整個多媒體系統的各個方面都有決定性影響的介面)以及OLE(OLE是指與物件連結和嵌入有關的技術,包括容器、伺服器、就地編輯、拖放和彩單合併等。在應用程式之間共享的一大塊資料稱為一個OLE物件,能夠包含OLE物件的應用程式稱為OLE容器,而允許自己的資料被包含到其他應用程式中的程式稱為OLE伺服器)等都是基於COM而建立起來的。並且Microsoft的開發人員也大量使用COM元件來定製他們的應用程式及作業系統。

  COM所含的概念並不止是在Microsoft Windows作業系統下才有效。COM並不是一個大的API(用標準的定義來講,API就是Windows的32位應用程式程式設計介面,是一系列很複雜的函式,訊息和結構,它使程式設計人員可以用不同型別的程式語言編制出的執行在Windows95 和Windows NT作業系統上的應用程式。),它實際上象結構化程式設計及物件導向程式設計方法那樣,也是一種程式設計方法。在任何一種作業系統中,開發人員均可以遵循“COM方法”。

  一個應用程式通常是由單個的二進位制檔案組成的。當編譯器生成應用程式之後,在對下一個版本重新編譯併發行新生成的版本之前,應用程式一般不會發生任何變化。作業系統,硬體及客戶需求的改變都必須等到整個應用程式被重新生成。

  目前這種狀況已經發生變化。開發人員開始將單個的應用程式分隔成單獨多個獨立的部分,也既元件。這種做法的好處是可以隨著技術的不斷髮展而用新的元件取代以有的元件。此時的應用程式可以隨新元件不斷取代舊的元件而漸趨完善。而且利用已有的元件,使用者還可以快速的建立全新的應用。

  傳統的做法是將應用程式分割成檔案,模組或類,然後將它們編譯並連結成一個單模應用程式。(靜態的連結,副檔名為.obj,在程式內實現的)它與元件建立應用程式的過程(稱為元件構架)有很大的不同。一個元件同一個微型應用程式類似,即都是已經編譯連結好並可以使用的二進位制程式碼,應用程式就是由多個這樣的元件打包而得到的。單模應用程式只有一個二進位制程式碼模組。自定義元件可以在執行時刻同其他的元件連線起來以構成某個應用程式。在需要對應用程式進行修改或改進時,只需要將構成此應用程式的元件中的某個用新的版本替換掉即可(動態的連結,副檔名為.dll,是在程式外實現的)。

  COM即元件物件模型,是關於如何建立元件以及如何通過元件建立應用程式的一個規範,說明了如何可動態交替更新元件。

  COM是一種說明如何建立可動態互變元件的規範,此規範提供了為保證能夠互操作,客戶和元件應遵循的一些二進位制和網路標準。通過這種標準將可以在任意兩個元件之間進行通訊而不用考慮其所處的操作環境是否相同、使用的開發語言是否一致以及是否執行於同一臺計算機。

  COM的優點?

  首先:使用者一般希望能夠定製所用的應用程式,而元件技術從本質上講就是可被定製的,因而使用者可以用更能滿足他們需要的某個元件來替換原來的那個。其次,由於元件是相對應用程式獨立的部件,我們可以在不同的程式中使用同一個元件而不會產生任何問題,軟體的可重用性將大大的得到增強。第三,隨著網路頻寬及其重要性的提高,分散式網路應用程式毫無疑問的成為軟體市場上越來越重要的買點。元件價構可以使得開發這類應用程式的過程得以簡化。

  DCOM是微軟與其他業界廠商合作提出的一種分佈元件物件模型,它是COM在分佈計算方面的自然延續,為分佈在網路不同節點的兩個COM元件提供了互操作的基礎結構。DCOM增強COM的分佈處理效能,支援多種通訊協議,加強元件通訊的安全保障,把基於認證Internet安全機制同基於Windows NT的C2級安全機制整合在一起。但從系統內部的實現機制而言,DCOM所採用的技術仍符合圖1所示的COM模式。

  DCOM自動建立連線、傳輸資訊並返回來自遠端元件的答覆。DCOM在元件中的作用有如PC機間通訊的PCI和ISA匯流排,負責各種元件之間的資訊傳遞,如果沒有DCOM,則達不到分佈計算環境的要求。微軟通過納入事務處理服務、更容易的程式設計以及對Unix和其它平臺的支援擴充了DCOM。

  建立DCOM時和使用COM建立物件的方式是相同的,只需再加入一個機器名稱的引數。如果COM通過Windows API的CoGetClassObject建立物件,只需再輸入機器名稱的引數即可在遠端指定的計算機中建立物件,並且取得指定介面的資訊。它構造於RPC的技術之上,並且使用TCP/IP作為網路通訊協議。

  什麼是COM+ ?

  COM+並不是COM的簡單升級,COM+的底層結構仍然以COM為基礎,它幾乎包容了COM的所有內容,COM+綜合了COM、DCOM和MTS這些技術要素,它把COM元件軟體提升到應用層而不再是底層的軟體結構,它通過作業系統的各種支援,使元件物件模型建立在應用層上,把所有元件的底層細節留給作業系統,因此,COM+與作業系統的結合更加緊密。

  COM+不再侷限於COM的元件技術,它更加註重於分散式網路應用的設計和實現。COM+繼承了COM幾乎全部的優勢,同時又避免了COM實現方面的一些不足,把COM、DCOM和MTS的程式設計模型結合起來,繼承了它們的絕大多數特性,在原有的特性上增加了新的功能。

  COM+的新的優點?

  以下列出COM+的幾個主要特性:

  COM+不僅繼承了COM所有的優點,而且還增加了一些服務,比如佇列服務、負載平衡、記憶體資料庫、事件服務等。

  佇列服務對於分散式應用非常有意義,特別是在現在網路速度很慢的情況下,這種機制可以保證應用系統能夠可靠地執行。在應用系統包含大量節點但伺服器又繁忙的情況下,客戶應用程式可以把它們的請求放到佇列中,當伺服器負載比較輕的時候再處理這些請求;

  又如COM+提供了負載平衡服務,它可以實現動態負載平衡,而且COM+應用程式的負載平衡特性並不需要編寫程式碼來支援,客戶程式和元件程式都可以按通常的方式實現。獲得負載平衡特性並不是用程式設計的方式來實現的,而是通過配置實現分散式應用程式的負載平衡,如上所講的佇列服務,其實也反映了一種負載平衡。

  (1) 真正的非同步通訊。COM+底層提供了佇列元件服務,這使客戶和元件有可能在不同的時間點上協同工作,COM+應用無須增加程式碼就可以獲得這樣的特性。

  (2) 事件服務。新的事件機制使事件源和事件接收方實現事件功能更加靈活,利用系統服務簡化了事件模型,避免了COM可連線物件機制的瑣碎細節。

  (3) 可伸縮性。COM+的可伸縮性來源於多個方面,動態負載平衡以及記憶體資料庫、物件池等系統服務都為COM+的可伸縮性提供了技術基礎,COM+的可伸縮性原理上與多層結構的可伸縮特性一致。

  (4) 可管理和可配置性。管理和配置是應用系統開發完成後的行為,在軟體維護成本不斷增加的今天,COM+應用將有助於軟體廠商和使用者減少這方面的投入。

  (5) 易於開發。COM+應用開發的複雜性和難易程度將決定COM+的成功與否,雖然COM+開發模型比以前的COM元件開發更為簡化,但真正提高開發效率仍需要藉助於一些優秀的開發工具。

  COM+標誌著Microsoft的元件技術達到了一個新的高度,它不再侷限於一臺機器上的桌面系統,它把目標指向了更為廣闊的企業內部網,甚至Internet國際互連網路。COM+與多層結構模型以及Windows作業系統為企業應用或Web應用提供了一套完整的解決方案。

相關文章