使用 Visual Basic 建立 DCOM 用戶端/伺服器應用程式
本文說明如何使用 Visual Basic 建立、封裝及部署分散式元件物件模型 (DCOM) 用戶端/伺服器應用程式。
原始產品版本: Visual Basic
原始 KB 編號: 266717
摘要
本文說明如何使用 Visual Basic 建立、封裝及部署 DCOM 用戶端/伺服器應用程式。 若要建立 DCOM 用戶端/伺服器應用程式,您需要 Visual Basic 的 Enterprise Edition。 Microsoft 假設讀者已經熟悉如何建立在相同電腦上執行的用戶端/伺服器應用程式。
其他相關資訊
您不需要變更程式碼,即可讓用戶端應用程式使用DCOM具現化遠端伺服器。 差異在於您封裝和部署用戶端的方式。 此外,在安裝客戶端和伺服器之後,您還需要進行一些安全性設定。 您可以使用名為 Dcomcnfg 的公用程式來進行這些設定。
下列步驟說明如何散發和設定用戶端/伺服器應用程式。 將伺服器 命名DCOMDemo_Svr,並將客戶 端命名為DCOMDemo_Cli。 為每個資料夾建立個別的資料夾。 基於本文的目的,請呼叫這些資料夾 c:\DCOMDemo\Server and c:\DCOMDemo\Client
。
建立伺服器
啟動新的 Visual Basic 專案。 在 [ 新增專案] 對話框中,選取 [ActiveX EXE],然後按兩下 [ 開啟]。 依預設會建立 Class1。
將下列程式代碼新增至 Class1 模組:
Public Function ServerTime() As String ServerTime = Time End Function
在 [ 專案] 功能表上,按兩下 [ 項目屬性 ] 選項,然後選取 [ 一般] 索引標籤。
在 [ 項目名稱] 欄 位中,輸入 DCOMDemo_Svr。
在 [ 專案描述] 欄位中,輸入 DCOMDemo_Svr - 伺服器]。 檢查 [ 自動執行] 選項。
注意事項
此選項應一律簽入沒有任何UI的伺服器,以確保伺服器執行時不會顯示任何類型的對話框。 如果您在伺服器以非互動式使用者的身分識別執行時,有任何類型的用戶互動,您的伺服器可能會停止回應。
選取 [ 元件] 索引 標籤,然後選取 [ 遠端伺服器檔案 ] 選項。
注意事項
檢查此選項可讓 Visual Basic 編譯程式產生封裝使用此伺服器的用戶端應用程式所需的 VBR 和 TLB 檔案。 這些檔案包含需要包含在用戶端電腦上的登錄專案。
關閉 [ 項目屬性] 對話框。
在 [ 檔案] 選單上,選取 [ 另存新檔],然後將此項目儲存至
c:\DCOMDemo\Server folder
。在 [ 檔案] 功能表上,選 取 [建立DCOMDemo_Svr 並編譯伺服器。
在 [ 專案] 功能表上,選取 [ 項目屬性 ] 選項,然後選取 [ 元件] 索引卷 標。
在 [ 元件] 索引 標籤上,選取 [版本相容性],選取 [ 二進位相容性 ] 選項,然後讓專案二進位檔與您 (DCOMDemo_Svr.exe) 建立的伺服器可執行檔相容。 藉由選取此選項,您可以確保在重新編譯伺服器時,所有 GUID 都會維持不變。
建立用戶端
在 [ 檔案] 功能表上,選取 [ 新增專案] 選項,選取 [標準 EXE],然後按兩下 [ 確定]。 根據預設,會建立 Form1。
在 [ 專案] 功能表上,按兩下 [ 項目屬性 ] 選項,然後選取 [ 一般] 索引標籤。
在 [ 項目名稱] 欄 位中,輸入 DCOMDemo_Cli。
在 [ 專案描述] 字段中,輸入 DCOMDemo_Cli Project - Client] 。
在 [ 專案] 功能表上,選取 [ 參考]。 從可用的參考清單中,選 取 [DCOMDemo_Svr - 伺服器]。
在 Form1 上放置命令按鈕,並將按鈕的 標題 變更為 [執行]。
將下列程式代碼放在按鈕的 click 事件中:
Dim MyObj As DCOMDemo_Svr.Class1 On Error GoTo err1 Set MyObj = CreateObject("DCOMDemo_Svr.Class1") MsgBox "Server Time=" & MyObj.ServerTime & " Client Time=" & Time Exit Sub err1: MsgBox "Connection failed: Error " & Err.Number & " - " & Err.Description
在 [ 檔案] 選單上,選取 [ 另存新檔],然後將專案儲存至客戶端的資料夾
c:\DCOMDemo\Client
。按 F5 鍵以在 IDE 中執行用戶端並進行測試。
在 [ 檔案] 功能表上,選 取 [DCOMDemo_Cli ] 以編譯客戶端,然後關閉 Visual Basic。
封裝伺服器
使用 [封裝和部署精靈] 封裝您的伺服器以如往常般散發。 伺服器會使用 DCOM 由遠端用戶端具現化。 建立伺服器的套件時,您會收到一個對話框,詢問此伺服器是否將作為遠端自動化伺服器,以及您是否要包含此用途的支持檔案。 只要按下 [ 否] 按鈕,因為DCOM不是遠端自動化。 遠端自動化是由 DCOM 取代的較舊技術。
封裝用戶端
封裝用戶端時,需要採取一些特定步驟,並考慮伺服器不會在與用戶端相同的計算機上執行。 對用戶端套件所做的變更可確保只會安裝類型連結庫 (.tlb 檔案) ,並包含一些額外的登錄專案,而不是伺服器的可執行檔,這在用戶端計算機上並非必要,因為它不會在該處執行。
使用下列步驟封裝用戶端:
啟動 [套件和部署精靈],然後選取用戶端的專案。
按兩下 [ 封裝] 按鈕。 在 [ 封裝類型 ] 對話框中,選取 [ 標準安裝套件],然後按 [ 下一步]。
在 [ 封裝資料夾 ] 對話框中,選取要儲存套件的資料夾,然後按 [ 下一步]。 在此情況下,它是 c:\DCOMDemo\Client\Package。
注意事項
您可能會收到對話框,指出伺服器沒有相依性資訊。 按兩下 [確定 ],因為此伺服器沒有任何相依性。
您現在應該位於 [包含的檔案] 對話框中。
取消選取伺服器的可執行檔,DCOMDemo_Svr.exe,因為您不想散發伺服器的可執行檔,然後按兩下 [新增] 按鈕。
將 [類型檔案] 下拉式方塊變更為 [遠端伺服器檔案 (*.vbr) 。
指向您在此案例
c:\DCOMDemo\Server
中 (伺服器項目的資料夾) ,然後選取相關的 VBR 檔案 DCOMDemo_Svr.VBR。 按兩下 [開啟],[ 新增檔案 ] 對話框隨即關閉。注意事項
其中包含兩個檔案, DCOMDemo_Svr.VBR 和 DCOMDemo_Svr.TLB。 按兩下 [ 下一步] 按鈕。 在 [ 遠端伺服器 ] 對話框中,您可以 (伺服器執行所在的 [網络位址]) 定義計算機的名稱。 通常您會將此欄位保留空白,因為您可能事先不知道伺服器的安裝位置。 如果您將它保留空白,當您安裝用戶端時,系統會提示您輸入。 在此範例中,請將它保留空白。
按 [下一步 ] 繼續進行。 您現在可以繼續進行套件和部署精靈的標準程式。 在此情況下,只要按兩下其餘所有對話框的 [下一步 ]。
安裝伺服器
使用您稍早建立的散發套件,在您要執行它的計算機上安裝伺服器。 如果您想要使用開發計算機來執行伺服器,則不需要安裝它,因為 Visual Basic 會在編譯伺服器時為您進行註冊。
安裝用戶端
使用您稍早建立的散發套件,在您要執行它的計算機上安裝 Client。 由於此用戶端會使用 DCOM 伺服器,而您在建立散發套件時,將伺服器的實際位置保留空白,因此您現在必須提供此位置。 當安裝程式提示您輸入此位置時,請提供您安裝伺服器的計算機名稱。
設定伺服器的安全性
如果您將伺服器安裝在 Windows NT 或 Windows 2000 計算機上,則必須為其設定安全性。 若要這麼做,請使用 Dcomcnfg,如下列步驟所示,假設客戶端和伺服器電腦都是網域的一部分,且登入用戶端電腦的使用者會以網域使用者身分登入。 建議的設定只是一個可能的組態。 它們是泛型的,可提供伺服器的廣泛存取權。 請記住,這隻是範例。 當您部署實際的應用程式,而安全性是您環境的考慮時,您應該選取更嚴格的選項。 此外,如果您用來測試此範例伺服器的計算機是用來執行其他伺服器,請先記下目前的設定,再進行下列變更,並在完成測試后立即返回原始設定。
- 在伺服器計算機上,按兩下 [ 開始 ] 按鈕,然後選取 [ 執行]。 在 [ 執行] 對話框中,輸入 Dcomcnfg,然後按兩下 [ 確定]。 您必須具有系統管理員許可權,才能執行 Dcomcnfg。
- 選取 [ 預設屬性] 索引標籤,並確認已核取 [在此計算機上啟用分散式 COM]。
- 將 [預設驗證層級 ] 設定為 [連線],並將 [ 預設模擬等級 ] 設定為 [識別]。
- 選取 [ 預設安全性] 索引 標籤。
- 按兩下[預設存取權限] 面板中的 [編輯預設] 按鈕。
- 確認 [所有人] 和 [系統] 都包含在具有 [允許存取權] 的清單中。 如果不是,您可以使用 [ 新增 ] 按鈕將它們新增至清單。 清單完成時,按兩下 [ 確定 ]。
- 按兩下[預設啟動權限] 面板中的 [編輯預設] 按鈕。
- 確認 [所有人] 和 [系統] 都包含在具有 [允許啟動] 權限的清單中。 如果不是,請使用 [ 新增 ] 按鈕將它們新增至清單。 清單完成時,按兩下 [ 確定 ]。
- 選取 [ 應用程式] 索引 標籤,反白顯示您的伺服器,DCOMDemo_Svr.Class1,然後按兩下 [ 屬性] 按鈕。
- 選取 [ 一般] 索引標籤,將 [驗證層級 ] 設定為 [ 預設],然後選取 [ 位置] 索引標籤 。核取的唯一選項應該是 [在此計算機上執行應用程式]。
- 選取 [ 安全性] 索 引標籤,並確認已核取 [使用預設訪問許可權] 和 [使用預設啟動許可權] 選項。
- 選取 [ 身分識別 ] 索引標籤,核取 啟動的使用者 選項,按兩下 [ 確定 ] 關閉 [伺服器的屬性] 對話框,然後再按兩下 [ 確定 ] 以關閉 Dcomcnfg。 如您所見,測試伺服器會使用所有預設設定。 部署您自己的伺服器時,您應該定義應用程式專屬的設定。 所有自訂設定的優先順序高於預設設定。
您現在已準備好測試您的伺服器。 在用戶端電腦上啟動客戶端,然後按下 [ 執行] 按鈕。 您應該會看到指出伺服器時間的消息框。 如果您無法成功測試此範例,請參閱一節中所列的疑難解答文章Q269330。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應