Visual Studio 提供使用 Windows Communication Foundation (WCF) 和 WCF Data Services 的工具,Microsoft用來建立分散式應用程式的技術。 本文提供Visual Studio觀點中的服務簡介。 如需完整檔,請參閱 WCF Data Services 4.5。
Windows Communication Foundation (WCF) 是一種統一架構,用於建立安全、可靠、交易和互通的分散式應用程式。 它取代了舊版進程間通訊技術,例如 ASMX Web 服務、.NET 遠端處理、企業服務(分散式元件物件模型(DCOM)和Microsoft消息佇列(MSMQ)。 WCF 結合統一程序設計模型下所有這些技術的功能。 此方法可簡化開發分散式應用程式的體驗。
WCF Data Services
WCF Data Services 是開放式數據(OData)通訊協定標準的實作。 WCF Data Services 可讓您將表格式數據公開為一組 REST API,可讓您使用 、POST、 PUT和 DELETE等GET標準 HTTP 命令來傳回數據。 在伺服器端, ASP.NET Web API 取代 WCF 數據服務,以建立新的 OData 服務。 WCF Data Services 用戶端連結庫會繼續是從 Visual Studio 在 .NET 應用程式中取用 OData 服務的絕佳選擇(Project>Add Service Reference)。 如需詳細資訊,請參閱 WCF Data Services 4.5。
WCF 程式設計模型
WCF 程式設計模型是以兩個實體之間的通訊為基礎:WCF 服務和 WCF 用戶端。 程序設計模型會封裝在 System.ServiceModel .NET 的命名空間中。
WCF 服務
WCF 服務是以定義服務與客戶端之間合約的介面為基礎。 服務會使用屬性ServiceContractAttribute標記,如下列程式代碼所示:
您可以將函式或方法標記為 OperationContractAttribute 屬性,以定義由 WCF 服務所提供的功能。
您也可以透過將複合類型標記為 DataContractAttribute 屬性來公開序列化數據,這樣就能在用戶端啟用數據綁定。
定義介面及其方法之後,它們會封裝在實作 介面的類別中。 單一 WCF 服務類別可以實作多個服務合約。
WCF 服務會透過所謂的 端點公開供取用。 端點提供與服務通訊的唯一方式。 您無法透過直接參考存取服務,如同您存取其他類別。
端點包含位址、系結和合約。 位址會定義服務所在的位置,例如 URL、檔案傳輸通訊協定 (FTP) 位址,或網路或本機路徑。 系結會定義您與服務通訊的方式。 WCF 系結提供多功能模型,以 Windows 驗證或使用者名稱和密碼等安全性機制來指定 HTTP 或 FTP 等通訊協定。 合約包含 WCF 服務類別所公開的作業。
單一 WCF 服務可以公開多個端點。 此方法可讓不同的用戶端以不同的方式與相同的服務通訊。 例如,銀行服務可能會為員工提供一個端點,另一個端點供外部客戶使用,其中每個端點都會使用不同的位址、系結或合約。
WCF 用戶端
WCF 用戶端是由 Proxy 所組成,可讓應用程式與 WCF 服務通訊,以及符合為服務定義的端點的端點。 Proxy 會在 app.config 檔案的用戶端上產生,並包含服務所公開類型和方法的相關信息。 對於公開多個端點的服務,用戶端可以選取最符合其需求的端點,例如,透過 HTTP 通訊並使用 Windows 驗證。
建立 WCF 客戶端之後,您會在程式代碼中參考服務,就像您執行任何其他物件一樣。 例如,若要呼叫 GetData 稍早所示的方法,您可以撰寫類似下列範例的程序代碼:
private void button1_Click(System.Object sender, System.EventArgs e)
{
ServiceReference1.Service1Client client = new
ServiceReference1.Service1Client();
string returnString;
returnString = client.GetData(textBox1.Text);
label1.Text = returnString;
}
Visual Studio 中的 WCF 工具
Visual Studio 提供工具來協助您建立 WCF 服務和 WCF 用戶端。 如需詳細資訊,請參閱 逐步解說:在 Windows Forms 中建立簡單的 WCF 服務。
建立及測試 WCF 服務
您可以使用 WCF Visual Studio 範本作為基礎,快速建立您自己的服務。 然後,您可以使用 WCF 服務自動主機和 WCF 測試客戶端來偵錯和測試服務。 這些工具提供快速且方便的除錯和測試週期,並消除在初期承諾採用裝載模型的需求。
WCF 範本
WCF Visual Studio 範本提供服務開發的基本類別結構。 [ 新增專案 ] 對話框中提供數個 WCF 範本,包括 WCF 服務連結庫專案、WCF 服務網站和 WCF 服務項目範本。
當您選取範本時,系統會為服務合約、服務實作和服務組態新增檔案。 已新增所有必要的屬性、建立簡單的 「Hello World」 服務類型,而且您不需要撰寫任何程序代碼。 您可以新增程式代碼來提供真實世界服務的函式和方法,但範本會提供基本基礎。
如需詳細資訊,請參閱 WCF Visual Studio 範本。
WCF 服務主機
當您啟動 WCF 服務專案的 Visual Studio 調試程式(藉由選取 F5)時,WCF 服務主機工具會自動啟動以在本機裝載服務。 此工具會列舉 WCF 服務專案中的服務、載入專案的組態,併為其找到的每個服務具現化主機。
此工具可協助您測試 WCF 服務,而不需在開發期間撰寫額外的程式代碼或認可至特定主機。 如需詳細資訊,請參閱 WCF 服務主機 (WcfSvcHost.exe)。
WCF 測試用戶端
WCF 測試用戶端工具可讓您輸入測試參數、將輸入提交至 WCF 服務,以及檢視來自服務的回應。 當您將其與 WCF 服務主機結合時,此工具會提供方便的服務測試體驗。 工具的位置是Visual Studio安裝資料夾下的 Common7\IDE 。
當您選取 F5 來偵錯 WCF 服務專案時,WCF 測試客戶端會開啟並顯示組態檔中定義的服務端點清單。 您可以測試參數並啟動服務,並重複此程式以持續測試及驗證您的服務。 如需詳細資訊,請參閱 WCF 測試用戶端 (WcfTestClient.exe)。
在 Visual Studio 中存取 WCF 服務
Visual Studio 可自動為您在 [ 新增服務參考 ] 對話框中新增的服務產生 Proxy 和端點,以簡化建立 WCF 用戶端的工作。 所有必要的組態信息都會新增至 app.config 檔案。 大部分時候,您只需要具現化服務以開始使用它。
在 [ 新增服務參考 ] 對話框中,您可以指定服務的位址,或搜尋解決方案中定義的服務。 系統會傳回服務所提供的服務和作業清單。 您也可以定義命名空間來參考程式碼中的服務。
在 [ 設定服務參考 ] 對話框中,您可以自定義服務的組態。 您可以變更服務的位址、指定存取層級、異步行為和訊息合約類型,以及設定類型重複使用。
服務端點
某些 WCF 服務會公開多個端點,用戶端可以透過此端點與服務通訊。 服務可能會公開一個端點,該端點會使用 HTTP 系結搭配使用者名稱和密碼安全性,以及使用 FTP 搭配 Windows 驗證的第二個端點。 應用程式會使用第一個端點從防火牆外部存取服務,而第二個端點則可用於內部網路。
在此案例中,您會使用服務參考的建構函式來指定 endpointConfigurationName 參數。
備註
本文中的指示說明 Visual Studio 中可用的互動式開發體驗 (IDE) 最新版本。 您的電腦可能會顯示某些使用者介面元素的不同名稱或位置。 您可能使用不同的 Visual Studio 版本或不同的環境設定。 如需詳細資訊,請參閱 個人化 IDE。
選取服務端點
請遵循下列步驟來選取服務端點:
以滑鼠右鍵按一下 方案總管 中的專案節點,然後選取 [新增服務參考] 來新增 WCF 服務參考。
在程式代碼編輯器中,新增服務參考的建構函式。 將
ServiceReference替換為服務參考的命名空間,將Service1Client替換為服務的名稱。
當您輸入程式代碼時,IntelliSense 清單會顯示包含建構函式的多載。 選取
endpointConfigurationName As String重載。選取多載之後,輸入
="<ServiceEndpoint>",其中<ServiceEndpoint>是您想要使用的端點服務名稱。小提示
可用端點的名稱定義於 app.config 檔案中。
尋找 WCF 服務的可用端點
若要尋找 WCF 服務的可用端點,請遵循下列步驟:
在 [方案總管] 中,以滑鼠右鍵按兩下包含服務參考的專案 app.config 檔案,然後選取 [ 開啟]。 檔案會在程式代碼編輯器中開啟。
搜尋檔案中的
<Client>標記。在標記區
<Client>段中,搜尋開頭<Endpoint>為 的巢狀標記。當服務參考提供多個端點時,會有兩個以上的
<Endpoint>標記。在
<EndPoint>標籤定義中,找出name="<ServiceEndpoint>"參數(其中<ServiceEndpoint>代表服務的端點名稱)。 這個值是服務端點的名稱,可以傳遞至endpointConfigurationName As String服務參考之建構函式的多載。
以異步方式呼叫服務方法
WCF 服務中的大部分方法都可以以同步或異步方式呼叫。 當您以異步方式呼叫方法時,應用程式可以在呼叫 方法時繼續運作。 當系統透過慢速連線運作時,此方法很有用。
將服務參考新增至專案時,預設組態是同步呼叫方法。 您可以在 [設定 服務參考 ] 對話框中,以異步方式變更呼叫方法的行為。
此選項是以 個別服務 為基礎設定。 如果以異步方式呼叫服務的其中一個方法,則必須以異步方式呼叫所有方法。
備註
本文中的指示說明 Visual Studio 中可用的互動式開發體驗 (IDE) 最新版本。 您的電腦可能會顯示某些使用者介面元素的不同名稱或位置。 您可能使用不同的 Visual Studio 版本或不同的環境設定。 如需詳細資訊,請參閱 個人化 IDE。
以異步方式呼叫方法
若要以異步方式呼叫服務方法,請遵循下列步驟:
在 [方案總管] 中,選取服務參考。
選取 項目>配置服務參考。
在 [ 設定服務參考 ] 對話框中,選取 [ 產生異步作] 複選框。
系結服務傳回的數據
您可以將 WCF 服務傳回的數據系結至控件,就像將任何其他數據源系結至控件一樣。 當您新增 WCF 服務的參考時,如果服務包含傳回數據的複合類型,它們會自動新增至 [資料源 ] 視窗。
將控件系結至 WCF 服務傳回的數據欄位
若要將控件系結至 WCF 服務傳回的單一數據欄位,請使用下列步驟:
選取 資料>顯示數據來源。 [ 數據源] 視窗隨即開啟。
在 [ 數據源] 視窗中,展開服務參考的節點。 服務所傳回的任何複合類型都會顯示。
展開類型節點並檢視類型的數據欄位。
選取欄位並展開下拉式清單,以查看資料類型的可用控制項清單。
選取您要系結至其中的控制項類型。
將欄位拖曳到表單上。 控件會新增至表單並包含BindingSource元件和BindingNavigator元件。
重複步驟 4 到 6,並系結任何其他欄位。
將控制項綁定至 WCF 服務傳回的複合類型
若要將控件系結至 WCF 服務傳回的複合類型,請遵循下列步驟:
選取 數據>顯示數據源。 [ 數據源] 視窗隨即開啟。
在 [ 數據源] 視窗中,展開服務參考的節點。 服務所傳回的任何複合類型都會顯示。
選取類型的節點,然後展開下拉式清單,以查看可用選項的清單。
選取 DataGridView 並檢視方格中的數據,或使用個別控件選取 [詳細 數據] 並檢視數據。
將節點拖曳到表單上。 控件會連同BindingSource元件和BindingNavigator元件一起新增至表單。
設定服務以重複使用現有的類型
將服務參考新增至專案時,服務中定義的任何類型都會在本機項目中產生。 在許多情況下,當服務使用一般 .NET 類型或共用連結庫中定義類型時,此方法會建立重複的類型。
為了避免這個問題,預設會共用參考元件中的類型。 如果您想要停用一或多個元件的類型共用,請變更 [設定 服務參考 ] 對話框中的設定。
停用一個元件中的類別共用
您可以遵循下列步驟來停用單一元件中的類型共用:
在 [方案總管] 中,選取服務參考。
選取 專案>設定服務參考。
在 [ 設定服務參考] 對話框中,選取 [ 重複使用指定參考元件中的類型 ] 複選框。
針對您要啟用類型共用的每個元件,選取複選框。 若要停用元件的類型共用,請讓複選框保持清除狀態。
停用所有元件中的類型共用
您也可以使用下列步驟停用所有元件中的類型共用:
在 [方案總管] 中,選取服務參考。
選擇項目>設定服務參考。
在 [ 設定服務參考] 對話框中,清除 [ 重複使用參考元件中的類型 ] 複選框。
探索類似的概念
下列文章說明 WCF 服務和 WCF 數據服務的相關概念和程式。
| 標題 | 說明 |
|---|---|
| 逐步解說:在 Windows Forms 中建立基本 WCF 服務 | 提供在 Visual Studio 中建立和使用 WCF 服務的逐步示範。 |
| 逐步解說:使用 WPF 和 Entity Framework 建立 WCF 數據服務 | 提供如何在Visual Studio中建立和使用WCF數據服務的逐步示範。 |
| 使用 WCF 開發工具 | 描述如何在Visual Studio中建立及測試 WCF 服務。 |
| 如何:新增、更新或移除 WCF 數據服務參考 | 描述如何使用 [新增服務參考] 對話框來搜尋方案中的 WCF 數據服務。 |
| 針對服務參考進行疑難解答 | 呈現服務參考可能發生的一些常見錯誤,以及如何防止這些錯誤。 |
| 偵錯 WCF 服務 | 描述偵錯 WCF 服務時可能會遇到的常見偵錯問題和技巧。 |
| 逐步解說:建立多層式數據應用程式 | 提供建立具類型化的資料集,並將 TableAdapter 和資料集程式碼分隔成多個專案的逐步指示。 |
| 查看 設定服務參考對話框 | 描述 [ 設定服務參考 ] 對話框的使用者介面元素。 |
相關內容
- 適用於 .NET 的 Visual Studio 資料工具
- System.ServiceModel 命名空間
- System.Data.Services 命名空間