使用 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

建立伺服器

  1. 啟動新的 Visual Basic 專案。 在 [ 新增專案] 對話框中,選取 [ActiveX EXE],然後按兩下 [ 開啟]。 依預設會建立 Class1。

  2. 將下列程式代碼新增至 Class1 模組:

    Public Function ServerTime() As String
        ServerTime = Time
    End Function
    
  3. 在 [ 專案] 功能表上,按兩下 [ 項目屬性 ] 選項,然後選取 [ 一般] 索引標籤。

  4. 在 [ 項目名稱] 欄 位中,輸入 DCOMDemo_Svr

  5. 在 [ 專案描述] 欄位中,輸入 DCOMDemo_Svr - 伺服器]。 檢查 [ 自動執行] 選項。

    注意事項

    此選項應一律簽入沒有任何UI的伺服器,以確保伺服器執行時不會顯示任何類型的對話框。 如果您在伺服器以非互動式使用者的身分識別執行時,有任何類型的用戶互動,您的伺服器可能會停止回應。

  6. 選取 [ 元件] 索引 標籤,然後選取 [ 遠端伺服器檔案 ] 選項。

    注意事項

    檢查此選項可讓 Visual Basic 編譯程式產生封裝使用此伺服器的用戶端應用程式所需的 VBR 和 TLB 檔案。 這些檔案包含需要包含在用戶端電腦上的登錄專案。

  7. 關閉 [ 項目屬性] 對話框。

  8. 在 [ 檔案] 選單上,選取 [ 另存新檔],然後將此項目儲存至 c:\DCOMDemo\Server folder

  9. 在 [ 檔案] 功能表上,選 取 [建立DCOMDemo_Svr 並編譯伺服器。

  10. 在 [ 專案] 功能表上,選取 [ 項目屬性 ] 選項,然後選取 [ 元件] 索引卷 標。

  11. 在 [ 元件] 索引 標籤上,選取 [版本相容性],選取 [ 二進位相容性 ] 選項,然後讓專案二進位檔與您 (DCOMDemo_Svr.exe) 建立的伺服器可執行檔相容。 藉由選取此選項,您可以確保在重新編譯伺服器時,所有 GUID 都會維持不變。

建立用戶端

  1. 在 [ 檔案] 功能表上,選取 [ 新增專案] 選項,選取 [標準 EXE],然後按兩下 [ 確定]。 根據預設,會建立 Form1。

  2. 在 [ 專案] 功能表上,按兩下 [ 項目屬性 ] 選項,然後選取 [ 一般] 索引標籤。

  3. 在 [ 項目名稱] 欄 位中,輸入 DCOMDemo_Cli

  4. 在 [ 專案描述] 字段中,輸入 DCOMDemo_Cli Project - Client]

  5. 在 [ 專案] 功能表上,選取 [ 參考]。 從可用的參考清單中,選 取 [DCOMDemo_Svr - 伺服器]

  6. 在 Form1 上放置命令按鈕,並將按鈕的 標題 變更為 [執行]

  7. 將下列程式代碼放在按鈕的 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
    
  8. 在 [ 檔案] 選單上,選取 [ 另存新檔],然後將專案儲存至客戶端的資料夾 c:\DCOMDemo\Client

  9. F5 鍵以在 IDE 中執行用戶端並進行測試。

  10. 在 [ 檔案] 功能表上,選 取 [DCOMDemo_Cli ] 以編譯客戶端,然後關閉 Visual Basic。

封裝伺服器

使用 [封裝和部署精靈] 封裝您的伺服器以如往常般散發。 伺服器會使用 DCOM 由遠端用戶端具現化。 建立伺服器的套件時,您會收到一個對話框,詢問此伺服器是否將作為遠端自動化伺服器,以及您是否要包含此用途的支持檔案。 只要按下 [ 否] 按鈕,因為DCOM不是遠端自動化。 遠端自動化是由 DCOM 取代的較舊技術。

封裝用戶端

封裝用戶端時,需要採取一些特定步驟,並考慮伺服器不會在與用戶端相同的計算機上執行。 對用戶端套件所做的變更可確保只會安裝類型連結庫 (.tlb 檔案) ,並包含一些額外的登錄專案,而不是伺服器的可執行檔,這在用戶端計算機上並非必要,因為它不會在該處執行。

使用下列步驟封裝用戶端:

  1. 啟動 [套件和部署精靈],然後選取用戶端的專案。

  2. 按兩下 [ 封裝] 按鈕。 在 [ 封裝類型 ] 對話框中,選取 [ 標準安裝套件],然後按 [ 下一步]

  3. 在 [ 封裝資料夾 ] 對話框中,選取要儲存套件的資料夾,然後按 [ 下一步]。 在此情況下,它是 c:\DCOMDemo\Client\Package

    注意事項

    您可能會收到對話框,指出伺服器沒有相依性資訊。 按兩下 [確定 ],因為此伺服器沒有任何相依性。

    您現在應該位於 [包含的檔案] 對話框中。

  4. 取消選取伺服器的可執行檔,DCOMDemo_Svr.exe,因為您不想散發伺服器的可執行檔,然後按兩下 [新增] 按鈕。

  5. 將 [類型檔案] 下拉式方塊變更為 [遠端伺服器檔案 (*.vbr) 。

  6. 指向您在此案例 c:\DCOMDemo\Server 中 (伺服器項目的資料夾) ,然後選取相關的 VBR 檔案 DCOMDemo_Svr.VBR。 按兩下 [開啟],[ 新增檔案 ] 對話框隨即關閉。

    注意事項

    其中包含兩個檔案, DCOMDemo_Svr.VBRDCOMDemo_Svr.TLB。 按兩下 [ 下一步] 按鈕。 在 [ 遠端伺服器 ] 對話框中,您可以 (伺服器執行所在的 [網络位址]) 定義計算機的名稱。 通常您會將此欄位保留空白,因為您可能事先不知道伺服器的安裝位置。 如果您將它保留空白,當您安裝用戶端時,系統會提示您輸入。 在此範例中,請將它保留空白。

  7. [下一步 ] 繼續進行。 您現在可以繼續進行套件和部署精靈的標準程式。 在此情況下,只要按兩下其餘所有對話框的 [下一步 ]。

安裝伺服器

使用您稍早建立的散發套件,在您要執行它的計算機上安裝伺服器。 如果您想要使用開發計算機來執行伺服器,則不需要安裝它,因為 Visual Basic 會在編譯伺服器時為您進行註冊。

安裝用戶端

使用您稍早建立的散發套件,在您要執行它的計算機上安裝 Client。 由於此用戶端會使用 DCOM 伺服器,而您在建立散發套件時,將伺服器的實際位置保留空白,因此您現在必須提供此位置。 當安裝程式提示您輸入此位置時,請提供您安裝伺服器的計算機名稱。

設定伺服器的安全性

如果您將伺服器安裝在 Windows NT 或 Windows 2000 計算機上,則必須為其設定安全性。 若要這麼做,請使用 Dcomcnfg,如下列步驟所示,假設客戶端和伺服器電腦都是網域的一部分,且登入用戶端電腦的使用者會以網域使用者身分登入。 建議的設定只是一個可能的組態。 它們是泛型的,可提供伺服器的廣泛存取權。 請記住,這隻是範例。 當您部署實際的應用程式,而安全性是您環境的考慮時,您應該選取更嚴格的選項。 此外,如果您用來測試此範例伺服器的計算機是用來執行其他伺服器,請先記下目前的設定,再進行下列變更,並在完成測試后立即返回原始設定。

  1. 在伺服器計算機上,按兩下 [ 開始 ] 按鈕,然後選取 [ 執行]。 在 [ 執行] 對話框中,輸入 Dcomcnfg,然後按兩下 [ 確定]。 您必須具有系統管理員許可權,才能執行 Dcomcnfg。
  2. 選取 [ 預設屬性] 索引標籤,並確認已核取 [在此計算機上啟用分散式 COM]。
  3. [預設驗證層級 ] 設定為 [連線],並將 [ 預設模擬等級 ] 設定為 [識別]
  4. 選取 [ 預設安全性] 索引 標籤。
  5. 按兩下[預設存取權限] 面板中的 [編輯預設] 按鈕。
  6. 確認 [所有人] 和 [系統] 都包含在具有 [允許存取權] 的清單中。 如果不是,您可以使用 [ 新增 ] 按鈕將它們新增至清單。 清單完成時,按兩下 [ 確定 ]。
  7. 按兩下[預設啟動權限] 面板中的 [編輯預設] 按鈕。
  8. 確認 [所有人] 和 [系統] 都包含在具有 [允許啟動] 權限的清單中。 如果不是,請使用 [ 新增 ] 按鈕將它們新增至清單。 清單完成時,按兩下 [ 確定 ]。
  9. 選取 [ 應用程式] 索引 標籤,反白顯示您的伺服器,DCOMDemo_Svr.Class1,然後按兩下 [ 屬性] 按鈕。
  10. 選取 [ 一般] 索引標籤,將 [驗證層級 ] 設定為 [ 預設],然後選取 [ 位置] 索引標籤 。核取的唯一選項應該是 [在此計算機上執行應用程式]。
  11. 選取 [ 安全性] 索 引標籤,並確認已核取 [使用預設訪問許可權] 和 [使用預設啟動許可權] 選項。
  12. 選取 [ 身分識別 ] 索引標籤,核取 啟動的使用者 選項,按兩下 [ 確定 ] 關閉 [伺服器的屬性] 對話框,然後再按兩下 [ 確定 ] 以關閉 Dcomcnfg。 如您所見,測試伺服器會使用所有預設設定。 部署您自己的伺服器時,您應該定義應用程式專屬的設定。 所有自訂設定的優先順序高於預設設定。

您現在已準備好測試您的伺服器。 在用戶端電腦上啟動客戶端,然後按下 [ 執行] 按鈕。 您應該會看到指出伺服器時間的消息框。 如果您無法成功測試此範例,請參閱一節中所列的疑難解答文章Q269330。