自訂 Web 服務用戶端 Proxy 類別的考量
更新:2007 年 11 月
在 [分散式系統設計工具] 中,應用程式上的消費者端點表示連接提供者端點的可設定連接點。當由這些應用程式所撰寫之系統定義的執行個體 (Instance) 部署完成時,這些應用程式上的消費者端點就會根據任何已連接之提供者端點的位址進行設定。如需詳細資訊,請參閱應用程式上的端點概觀和應用程式系統概觀。
對於 Web 服務消費者端點而言,需要使用「動態」Web 服務用戶端 Proxy 類別,這些類別會在執行階段從適當的應用程式組態檔項目擷取已連接之 Web 服務提供者端點的 URL。
注意事項: |
---|
對於可支援實作 (Implementation) 的應用程式而言,當您從應用程式圖表進行實作時,Visual Studio 會產生該應用程式的組態檔。組態檔會納入成為 [方案總管] 中應用程式專案的一部分。如需詳細資訊,請參閱 HOW TO:在應用程式圖表上實作應用程式。 |
根據預設,[應用程式設計工具] 會產生這些在 ASP.NET、Windows 和 Office 應用程式上之 Web 服務消費者端點的 Web 參考。接著這些 Web 參考會使用對應的組態檔項目,建立適當的動態 Proxy 類別。
注意事項: |
---|
如果您在應用程式或參考的類別庫 (Class Library) 中使用靜態 Web 參考,即使它們可以正常運作,[應用程式設計工具] 也無法偵測到,同時這些 Web 參考也無法正常顯示為 Web 服務消費者端點以供檢視。即使不希望 Web 服務 URL 在部署時變更,還是建議您一律使用動態 Web 參考。 |
動態 Proxy 類別暫時介紹到此,下列章節包含較多關於使用自訂 Web 服務用戶端 Proxy 類別的詳細資訊:
將自訂 Web 服務用戶端 Proxy 類別表示為 Web 服務消費者端點
用於 Windows 和 Office 應用程式之自訂 Web 服務 Proxy 用戶端類別的組態檔項目
用於 ASP.NET 應用程式之自訂 Web 服務 Proxy 類別的組態檔項目
從 Visual Studio .NET 2003 移轉 Web 參考和自訂 Web 服務用戶端 Proxy 類別
將自訂 Web 服務用戶端 Proxy 類別表示為 Web 服務消費者端點
[應用程式設計工具] 會支援由 Web 參考所實作之 Web 服務消費者端點的設計。不過,您也可以對手動建立的自訂 Proxy 類別進行反向工程,並將其當成 Web 服務消費者端點以視覺化方式檢視,只要消費者應用程式的組態檔 (App.config 或 Web.config) 中存在適當的項目即可。
當每個組態檔項目經 [應用程式設計工具] 識別後,且認定為代表自訂 Proxy 類別之 Web 服務 URL 的設定時,則 Web 服務消費者端點就會出現在消費者應用程式上。此外,如果組態檔項目中的 Web 服務 URL 與應用程式圖表上的現有 Web 服務提供者端點 URL 相符,則消費者端點和 Web 服務提供者端點之間會出現連接。如果沒有相符的 Web 服務提供者端點,但只要在 URL 後加上 "?wsdl" 或 "?disco" 即可找到 Web 服務的有效 WSDL 檔案,則該外部 Web 服務會加入至應用程式圖表,並連接至 Web 服務消費者端點。如果使用 URL 無法找出 WSDL 檔案,則 Web 服務消費者端點會保持未連接狀態。
在 ASP.NET 應用程式和 Windows 或 Office 應用程式之間,表示 Web 服務 URL 設定的組態檔項目和 [應用程式設計工具] 識別這些項目的方式都會不同。下列方針會描述如何確保自訂 Proxy 類別會在每種類型的應用程式上,正確地表示為 Web 服務消費者端點。
注意事項: |
---|
不遵循這些方針,仍然能夠產生可在執行階段正常運作的自訂 Proxy 類別。不過,這些類別將不會表示為 Web 服務消費者端點、在應用程式圖表上不會連接、無法接受部署驗證、在部署報表上不會報告為端點,並且也將無法在利用任何部署工具進行的端點組態設定中使用。 |
用於 Windows 和 Office 應用程式之自訂 Web 服務 Proxy 用戶端類別的組態檔項目
對於用於 Windows 和 Office 應用程式的自訂 Proxy 類別而言,Web 服務 URL 設定必須出現在消費者應用程式之 App.config 組態檔的 applicationSettings 項目中。由於無法使用 [設定和條件約束編輯器] 來檢視或編輯這些設定,因此您必須使用 [設定] 窗格 (以滑鼠右鍵按一下 Windows 或 Office 應用程式專案並檢視專案的屬性) 建立或編輯這些設定。您還必須將這些設定指定為 WebServiceURL 或 String 型別。如需詳細資訊,請參閱管理應用程式設定。
注意事項: |
---|
WebServiceURL 型別指定不會出現在 App.config 組態檔中。不過,它是儲存於通常會隱藏的相關設定檔中。如果您將設定手動加入至 App.config 組態檔,則必須加入 WebServiceURL 或 String 型別指定做為 [設定] 窗格中的設定。 |
在 [設定] 窗格中,如果您將設定指定為 WebServiceURL 型別,則可以選擇設定是 [應用程式] 或 [使用者] 範圍。變更範圍會使項目移至組態檔中的 applicationSettings 或 userSettings 區段。不過,如果您選擇將設定指定為 String 型別,則必須選擇 [應用程式] 做為範圍。
秘訣 |
---|
在 App.config 檔案中指定 Web 服務 URL 設定時,請指定 Web 服務的位置,而不是 Web 服務描述或 WSDL 檔案的位置。對於 .asmx 檔案架構的 Web 服務而言,Web 服務描述的位置通常與 WSDL 位置相同。因此,對於 .asmx 檔案架構的 Web 服務而言,[應用程式設計工具] 會假設 Web 服務位置與 WSDL 檔案位置相同。如果在該位置找到 WSDL 檔案,則會進行反向工程,使外部 Web 服務出現在應用程式圖表上,並且連接至已進行反向工程的 Web 服務消費者端點。如果在該位置找不到有效的 WSDL 檔案,則只會對 Web 服務消費者端點進行反向工程。 |
下列範例會顯示當設定指定為 String 型別時,applicationSettings 項目在 Windows 專案之 App.config 組態檔中的外觀:
<applicationSettings>
<WindowsApplicationName.MySettings>
<setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
</WindowsApplicationName.MySettings>
</applicationSettings>
對於具有 WebServiceURL 型別的項目而言,設定的名稱不必是 Proxy 類別名稱。在 Windows 或 Office 應用程式上建立 Web 服務消費者端點,唯一需要的就是以這種方式所定義且在 [設定] 窗格中指定為 WebServiceURL 或 String 型別的組態檔項目,即使該項目沒有關聯的自訂 Proxy 類別也一樣。刪除這類端點會刪除項目,但不會刪除相關的自訂 Proxy 類別。
用於 ASP.NET 應用程式之自訂 Web 服務 Proxy 類別的組態檔項目
ASP.NET 並未提供用以指明組態檔項目表示 Web 服務 URL 的方法。因此,[應用程式設計工具] 會嘗試比對組態檔項目的名稱與 Proxy 類別名稱。下列方針適用於與 ASP.NET 應用程式一起使用之自訂 Proxy 類別的組態檔項目:
唯有在消費者應用程式專案或任何參考的專案或組件中找到具有相符名稱的 Proxy 類別時,Web 服務消費者端點才會出現。
如果自訂 Proxy 類別只用於 ASP.NET 應用程式,則 Web 服務 URL 應該會出現在 ASP.NET 應用程式之 Web.config 組態檔的 appSettings 項目中。組態檔項目的名稱必須是完整的 Proxy 類別名稱。您可以使用 [設定和條件約束編輯器] 編輯 Web.config 檔中的 appSettings 項目。如需詳細資訊,請參閱設定和條件約束編輯器和套用設定。
如果自訂 Proxy 類別會用於 Windows 和 Office 應用程式以及 ASP.NET 應用程式,則 Web 服務 URL 應該會出現在 ASP.NET 應用程式之 Web.config 組態檔的 applicationSettings 項目中。組態檔項目的名稱必須是以專案名稱當做前置字元的完整 Proxy 類別名稱,這是自動產生之 Web 參考所使用的預設格式。您可以使用 [設定和條件約束編輯器] 編輯 Web.config 檔中的 applicationSettings 項目。applicationSettings 區段不支援在設定名稱中使用點 (.) 語法,請改用底線 (_) 字元。
下列範例會顯示 appSettings 項目在 Web.config 檔案中的外觀:
<appSettings>
<add key="Namespace.WebServiceProxyClassName" value="https://localhost/WebServiceApplicationName/WebServiceName.asmx"/>
</appSettings>
下列範例會顯示 applicationSettings 項目在 Web.config 檔案中的外觀,這個項目與用於 Windows 或 Office 應用程式之 App.config 檔案中的項目相同:
<applicationSettings>
<WindowsApplicationName.MySettings>
<setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
</WindowsApplicationName.MySettings>
</applicationSettings>
刪除表示自訂 Proxy 類別的 Web 服務消費者端點會移除相關的組態檔項目,但不會刪除相關的 Proxy 類別。刪除或重新命名自訂 Proxy 類別並不會移除相關的組態檔項目,但是會移除對應的消費者端點,因為名稱相符的 Proxy 類別已不存在。將具有相符名稱的 Proxy 類別加回,或將現有的 Proxy 類別重新命名以符合組態檔項目,會使端點重新出現。
從 Visual Studio .NET 2003 移轉 Web 參考和自訂 Web 服務用戶端 Proxy 類別
已使用 Visual Studio .NET 2003 加入至 Windows 或 Office 專案之 Web 參考的相關組態檔項目,會儲存在 appSettings 區段而非 applicationSettings 區段中。使用轉換精靈升級 Visual Studio .NET 2003 的 Windows 或 Office 專案時,Web 參考和自訂 Proxy 類別不會自動從 appSettings 區段移轉至 applicationSettings 區段。如需轉換精靈的詳細資訊,請參閱 Visual Studio 轉換精靈。
不過,當 Proxy 類別重新產生時,Web 參考會自動移轉,例如,當對應的 Web 服務變更或您手動重新整理 Web 服務的時候。新設定會出現在每個 Web 參考的 applicationSettings 區段中,且會由更新後的 Proxy 類別所使用。在 applicationSettings 區段更新之後,對應的 Web 服務消費者端點和連接就會出現在應用程式圖表上。如需詳細資訊,請參閱 HOW TO:在應用程式圖表上重新整理 Web 服務的 Web 參考。
如果您想要顯示自訂 Proxy 類別的 Web 服務消費者端點,則必須手動移轉這些類別。您可以將 Proxy 類別更新為使用 applicationSettings 區段,並使用可透過 Windows 或 Office 應用程式專案屬性取得的 [設定] 窗格加入適當的設定,來執行這項工作。如需詳細資訊,請參閱管理應用程式設定。
請參閱
概念
參考
類別庫中的 Web 參考和自訂 Web 服務用戶端 Proxy 類別