什麼是分散式元件物件模型 (DCOM)?
DCOM 是元件物件模型 (COM) 的擴充套件。元件物件模型解釋了元件及其客戶端如何互動。這種互動方式是客戶端和元件能夠連線而無需任何中間系統元件。
假設當客戶端和元件存在於不同的機器上時,DCOM 會用網路協議替換本地程序間通訊。
客戶端和元件都不會意識到連線它們的線纜只是變長了一點。
COM 執行時為客戶端和元件提供面向物件的的服務,並使用 RPC 和安全提供程式生成符合 DCOM 線路協議標準的標準網路資料包。
上述架構支援軟體匯流排。
為了支援此可重用軟體元件,完整的物件模型完全基於面向物件程式設計模型。
由於其無法提供繼承,因此選擇使用物件模型,這意味著上述架構成功地避免了存在於不同模型中的脆弱基類綜合徵。
當一個類繼承另一個類的成員和行為時,就會出現脆弱基類綜合徵。
提供行為和成員函式的類被稱為基類,將被識別為派生類。當基類的成員和功能發生修改時,派生類的行為和成員函式也將發生改變。
最終導致必須更改基類,進而需要編譯所有依賴類。
DCOM 的工作原理
如果要使 DCOM 工作,首先必須在兩臺計算機上正確配置 COM 物件,並且可能需要多次解除安裝和重新安裝物件才能使其正常工作。
Windows 在三個識別符號中包含 DCOM 配置資料:
CLSID - 類識別符號 (CLSID) 被稱為全域性唯一識別符號 (GUID),Windows 在其中為程式中安裝的每個類儲存一個 CLSID。假設您想執行一個類,我們必須使用正確的 CLSID,Windows 就會知道在哪裡找到該程式。
PROGID - 程式識別符號 (PROGID) 是可選識別符號之一,程式設計師可以使用它來替代更復雜和嚴格的 CLSID。PROGID 更易於閱讀和理解。+
APPID - 應用程式識別符號 (APPID) 用於識別並需要許可權才能訪問它以及屬於同一可執行檔案的所有類。假設 APPID 不正確,則 DCOM 將無法工作。根據我的經驗,我們需要獲取建立遠端物件時出現的許可權錯誤。
DCOM 事務
通常,DCOM 事務如下所示:
首先,客戶端系統請求遠端計算機使用其 CLSID 或 PROGID 建立一個物件。假設客戶端傳遞了 APPID,則遠端計算機將使用 PROGID 查詢 CLSID。
然後,遠端計算機檢查 APPID 並驗證客戶端是否具有建立物件的許可權。
DCOMLaunch.exe 或 DLLHOST.exe 將建立客戶端計算機請求的類的例項。
通訊成功!
客戶端現在可以訪問遠端計算機上類中的所有函式。
如果客戶端沒有正確的許可權,或者 CLSID 指向 exe 的舊版本,或者 APPID 未正確配置,或者任何其他問題,我們將收到“無法建立物件”訊息。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP