1. 程式人生 > >Delphi COM程式設計技術六(DCOM技術)

Delphi COM程式設計技術六(DCOM技術)

在Delphi中能實現遠端呼叫的有DCOM或COM+,這兩種方式實現起來非常的相似。DCOM屬於舊版本的遠端呼叫技術,非常實用,所提供的服務儲存在應用程式工程中。COM+是新版本的遠端呼叫技術,所提供的服務儲存在動態庫所在的工程中。

一、DCOM技術介紹:

1、DCOM的定義

DCOM(分散式的COM伺服器):是指該伺服器可以處在網路的別處,並且可通過網路非常簡單和透明地啟用。

        一個程序外的伺服器令客戶和服務端的區分更明顯。該類伺服器作為一個獨立的可執行(EXE)程式執行,因此處在一個私有的程序空間中。EXE伺服器的啟動和停止在Windows中服務管理器中進行(SCM)。COM介面的呼叫通過內部的程序通訊技術來處理。伺服器可以執行在本地的機器,或者在一個遠端的計算機上。如果伺服器在一個遠端的計算機上,我們稱它為“Distributed COM,分散式的COM”,或者DCOM。

2、執行緒模式

1>、獨立執行緒(apartment-threade):看成的單執行緒。

      在獨立執行緒中,多個伺服器客戶的方法呼叫在伺服器端的COM物件中被序列化,也就是說,每個獨立的方法呼叫完成後,才會開始下一個的方法呼叫。因此獨立執行緒的COM物件天生就是執行緒安全的,

2>、自由執行緒(free-threaded):看成是多執行緒。    
      而自由執行緒的COM物件可同時在COM物件上有多個的方法呼叫執行。每個客戶的方法呼叫都在一個不同的執行緒中執行。因此,在一個自由執行緒的COM物件中,你必須要注意多執行緒的問題,例如同步。
      開始的時候你將更趨向於使用獨立的執行緒,因為它更加簡單,不過以後最好轉向到自由執行緒,因為它有著更多的優點。

3、COM和DCOM的區別和聯絡
DCOM伺服器與COM伺服器沒有區別,只是位於遠端電腦上;

1>、COM/DCOM元件模型是一種平臺獨立、分散式、面向物件的系統,用於建立可相互作用的二進位制軟體元件。COM/DCOM是微軟的OLE(複合文件)和ActiveX(可用於Internet的元件)以及許多其它技術的基礎技術; 
2>、COM/DCOM之所以被認為是一種二進位制標準,是因為它是一種在應用程式被編譯成二進位制機器碼之後才起作用的標準; 
3>、COM/DCOM不是一種面嚮物件語言,它也不指定一個應用程式如何構造,它是一種標準,它指明一種元件模型和使元件之間能夠相互操作的程式設計需求。COM/DCOM元件可以執行在單一程序、不同程序、甚至是遠端機器; 
4>、COM/DCOM元件可以通過許多程式語言來建立。許多面向物件語言,諸如C++,都提供可簡化COM/DCOM元件實現的程式設計機制; 
5>、COM/DCOM定義了一個COM/DCOM元件的核心實質。一般來說,一個軟體元件由一組資料以及管理這些資料的函式構成。一個COM/DCOM元件是這樣的一種軟體元件,它專門通過一組或多組相關的函式存取元件資料。這些函式集合稱為介面,而介面的函式稱為方法。對COM/DCOM來說,它需要的唯一的呼叫介面方法的途徑就是指向介面的指標; 
6>、編譯好的COM/DCOM元件是不能修改的,要增加新的功能只能由開發商對元件原始碼進行修改、更新,然後重新編譯生成新的COM/DCOM元件; 


4、DCOM伺服器的配置: 
DCOM的呼叫: 必須通過Proxy/Stub物件,並且是通過RPC協議; CoClass的CreateRemote方法(Create呼叫本地); 
Proxy: 遠端COM物件在應用程式執行中的影象(Image),封裝應用程式的呼叫資訊; 
Stub:接受Proxy呼叫資訊,再使用這些資訊呼叫真正的DCOM物件;然後呼叫結果回傳給Proxy,由Proxy回傳給應用程式; 
RPC(Remote Procedure Call): 通訊協議,使用DCOM時必須啟用; 
SCM(Service control Manager):Windows服務管理器,管理EXE伺服器的啟動和停止
執行緒模型: 同COM的模型;獨立模式和自由模式