Share via


Visual Studio 中的 Windows Communication Foundation 服務和 WCF 資料服務

Visual Studio 提供使用 Windows Communication Foundation (WCF) 和 WCF Data Services 的工具,Microsoft 技術可用來建立分散式應用程式。 本主題提供 Visual Studio 觀點中的服務簡介。 如需完整文件,請參閱 WCF Data Services 4.5

什麼是 WCF?

Windows Communication Foundation (WCF) 是一種整合架構,可建立安全、可靠、可交易以及可交互操作的分散式應用程式。 其可取代較舊的處理序間通訊技術,例如 ASMX Web 服務、.NET 遠端處理、企業服務 (分散式元件物件模型 (DCOM)) 和 Microsoft Message 佇列 (MSMQ)。 WCF 結合了整合程式撰寫模型下所有這些技術的功能。 這可簡化開發分散式應用程式的體驗。

什麼是 WCF Data Services

WCF 資料服務是開放式資料 (開放式資料通訊協定 (OData)) 通訊協定標準的實作。 WCF Data Services 可讓您將表格式資料公開為一組 REST API,以便讓您使用 GET、POST、PUT 或 DELETE 等標準 HTTP 指令動詞來傳回資料。 在伺服器端,WCF Data Services 會由 ASP.NET Web API 取代,以建立新的 OData 服務。 WCF Data Services 用戶端程式庫會繼續是從 Visual Studio ([專案]> [加入服務參考]) 在 .NET 應用程式中取用 OData 服務的絕佳選擇。 如需詳細資訊,請參閱 WCF Data Services 4.5

WCF 程式撰寫模型

WCF 程式撰寫模型是以兩個實體之間的通訊為基礎:WCF 服務和 WCF 用戶端。 程式撰寫模型會封裝在 .NET 的 System.ServiceModel 命名空間中。

WCF 服務

WCF 服務是以定義服務與用戶端之間合約的介面為基礎。 其會以 ServiceContractAttribute 屬性標示,如下列程式碼所示:

[ServiceContract]
public interface IService1

您可以使用 OperationContractAttribute 屬性來定義 WCF 服務所公開的函式或方法。

[OperationContract]
string GetData(string value);

此外,您可以使用 DataContractAttribute 屬性標記複合類型以公開序列化資料。 這可讓您在用戶端中啟用資料繫結。

定義介面及其方法之後,其會封裝在實作介面的類別中。 單一 WCF 服務類別可以實作多個服務合約。

WCF 服務會透過所謂的端點公開以供取用。 端點提供與服務通訊的唯一方式;您無法像其他類別一樣,透過直接參考來存取服務。

端點是由位址、繫結及合約所組成。 位址會定義服務所在的位置;這可以是網址、檔案傳送通訊協定 (FTP) 位址、網路或本機路徑。 繫結會定義您與服務通訊的方式。 WCF 繫結提供多用途模型來指定 HTTP 或 FTP 等通訊協定、Windows 驗證之類的安全性機制,或使用者名稱和密碼等等。 合約包含 WCF 服務類別所公開的作業。

多個端點可以針對單一 WCF 服務公開。 這可讓不同的用戶端以不同的方式與相同的服務進行通訊。 例如,銀行服務可能會為員工提供一個端點,另一個端點提供給外部客戶,各自使用不同的位址、繫結和/或合約。

WCF Client - 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 範本,請參閱 WCF Visual Studio 範本

WCF 服務主機

當您啟動 WCF 服務專案的 Visual Studio 偵錯工具 (按 F5) 時,WCF 服務主機工具會自動啟動以在本機裝載服務。 WCF 服務主機會列舉 WCF 服務專案中的服務、載入專案的組態,以及為它找到的每一個服務產生主機的實體。

藉由使用 WCF 服務主機,您就可以在開發期間裝載 WCF 服務,而不需要撰寫額外的程式碼或認可特定主機。

若要深入了解 WCF 服務主機,請參閱 WCF 服務主機(WcfSvcHost.exe)

WCF 測試用戶端

WCF 測試用戶端工具可讓您輸入測試參數、將該輸入送出至 WCF 服務,以及檢視服務傳回的回應。 與 WCF 服務主機搭配使用時,可以提供您便利的服務測試經驗。 您可以在 %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE 資料夾中找到該工具。

當您按 F5 來偵錯 WCF 服務專案時,WCF 測試用戶端便會開啟,並顯示組態檔中定義之服務端點的清單。 您可以測試參數並啟動服務,然後重複這個程序以持續測試及驗證服務。

若要深入了解 WCF 測試用戶端,請參閱 WCF 測試用戶端 (WcfTestClient.exe)

存取 Visual Studio 中的 WCF 服務

Visual Studio 可簡化建立 WCF 用戶端的工作,並使用 [加入服務參考] 對話方塊自動產生您所新增服務的 Proxy 和端點。 所有必要的設定資訊都會新增至 app.config 檔案。 大部分時候,您需要具現化服務才能使用它。

[加入服務參考] 對話方塊可讓您輸入服務的位址,或搜尋方案中定義的服務。 對話方塊會傳回這些服務所提供的服務和作業清單。 其也可讓您定義命名空間,以在程式碼中參考服務。

[設定服務參考] 對話方塊可讓您自訂服務的設定。 您可以變更服務的位址、指定存取層級、非同步行為和訊息合約類型,以及設定類型重複使用。

選取服務端點

某些 Windows Communication Foundation (WCF) 服務會公開多個端點,用戶端可以透過端點與服務通訊。 例如,服務可能會公開一個使用 HTTP 繫結與使用者名稱和密碼安全性的端點,以及使用 FTP 和 Windows 驗證的第二個端點。 從防火牆外部存取服務的應用程式可能會使用第一個端點,而第二個端點則可用於內部網路。

在這種情況下,您可以將 endpointConfigurationName 指定為服務參考建構函式的參數。

注意

在本文的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置。 您使用的可能是不同版本的 Visual Studio 或不同的環境設定。 如需詳細資訊,請參閱將 IDE 個人化

若要選取服務端點

  1. 以滑鼠右鍵按一下 [方案總管] 中的專案節點,然後選擇 [加入服務參考],以新增 WCF 服務的參考。

  2. 在程式碼編輯器中,新增服務參考的建構函式:

    ServiceReference.Service1Client proxy = new ServiceReference.Service1Client(
    

    注意

    ServiceReference 取代為服務參考的命名空間,並將 Service1Client 取代為服務的名稱。

  3. IntelliSense 清單會顯示,其中包含建構函式的多載。 選取 endpointConfigurationName As String 多載。

  4. 在多載之後,輸入 =ConfigurationName,其中 ConfigurationName 是您想要使用的端點名稱。

    注意

    如果您不知道可用端點的名稱,您可以在 app.config 檔案中找到。

若要尋找 WCF 服務的可用端點

  1. 在 [方案總管] 中,以滑鼠右鍵按一下包含服務參考之專案的 app.config 檔案,然後按一下 [開啟]。 檔案會顯示在程式碼編輯器中。

  2. 搜尋檔案中的 <Client> 標籤。

  3. <Client> 標籤底下搜尋開頭為 <Endpoint> 的標籤。

    如果服務參考提供多個端點,將會有兩個以上的 <Endpoint 標籤。

  4. <EndPoint> 標籤內,您會發現 name="SomeService" 參數 (其中 SomeService 代表端點名稱)。 這是端點的名稱,可以傳遞至服務參考之建構函式的 endpointConfigurationName As String 多載。

以非同步方式呼叫服務方法

Windows Communication Foundation (WCF) 服務中的大部分方法都可用同步或非同步的方式來呼叫。 以非同步方式呼叫方法可讓您的應用程式在其透過緩慢連線運作時,呼叫方法並繼續運作。

根據預設,當服務參考新增至專案時,其會設定為同步呼叫方法。 您可以透過變更 [設定服務參考] 對話方塊中的設定,以非同步方式變更呼叫方法的行為。

注意

此選項是以個別服務為基礎而設定。 如果以非同步方式呼叫服務的其中一個方法,則必須以非同步方式呼叫所有方法。

注意

在本文的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置。 您使用的可能是不同版本的 Visual Studio 或不同的環境設定。 如需詳細資訊,請參閱將 IDE 個人化

若要以非同步方式呼叫方法

  1. 在 [方案總管] 中,選取服務參考。

  2. 在 [專案] 功能表上,按一下 [設定服務參考]

  3. 在 [設定服務參考] 對話框中,選取 [產生非同步作業] 核取方塊。

繫結服務傳回的資料

您可以將 Windows Communication Foundation (WCF) 服務傳回的資料繫結至控制項,就像您可以將任何其他資料來源繫結至控制項一樣。 當您加入 WCF 服務的參考時,如果服務包含傳回資料的複合類型,則其會自動新增至 [資料來源] 視窗。

將控制項繫結至 WCF 服務傳回的單一資料欄位

  1. 按一下 [ 資料 ] 功能表上的 [ 顯示資料來源]。

    隨即出現 [資料來源] 視窗。

  2. 在 [資料來源] 視窗中,展開您服務參考的節點。 服務所傳回的任何複合類型都會顯示。

  3. 展開類型的節點。 該類型的資料欄位隨即出現。

  4. 選取欄位,然後按一下下拉式清單箭頭,以顯示資料類型可用的控制項清單。

  5. 按一下您要繫結的控制項類型。

  6. 將欄位拖曳至表單上。 控制項會新增至表單,包含一個 BindingSource 元件,和一個 BindingNavigator 元件。

  7. 針對您想要繫結的任何其他欄位重複步驟 4 到 6。

若要將控制項繫結至 WCF 服務傳回的複合類型

  1. 在 [資料] 功能表上,選取 [顯示資料來源]。 隨即出現 [資料來源] 視窗。

  2. 在 [資料來源] 視窗中,展開您服務參考的節點。 服務所傳回的任何複合類型都會顯示。

  3. 選取類型的節點,然後按一下下拉式清單箭頭以顯示可用的選項清單。

  4. 按一下 [DataGridView],即可在方格中顯示資料,或按一下 [詳細資料] 以在個別控制項中顯示資料。

  5. 將節點拖曳至表單。 控制項會新增至表單,包含一個 BindingSource 元件,和一個 BindingNavigator 元件。

設定服務以重複使用現有的類型

將服務參考新增至專案時,服務中定義的任何類型都會在本機專案中產生。 在許多情況下,當服務使用一般 .NET 類型或類型在共用程式庫中定義時,這會建立重複的類型。

為了避免這個問題,預設會共用參考組件中的類型。 如果您想要停用一或多個組件的類型共用,您可以在 [設定服務參考] 對話方塊中執行此操作。

若要停用單一組件中的類型共用

  1. 在 [方案總管] 中,選取服務參考。

  2. 在 [專案] 功能表上,按一下 [設定服務參考]

  3. 在 [設定服務參考] 對話方塊中,選取 [重複使用指定參考組件中的類型]

  4. 針對您要在其中啟用類型共用的每個組件,選取核取方塊。 若要停用組件的類型共用,請讓核取方塊保持清除狀態。

若要停用所有組件中的類型共用

  1. 在 [方案總管] 中,選取服務參考。

  2. 在 [專案] 功能表上,按一下 [設定服務參考]

  3. 在 [設定服務參考] 對話框中,清除 [重複使用參考組件中的類型] 核取方塊。

標題 描述
逐步解說:在 Windows Forms 中建立簡單的 WCF 服務 提供在 Visual Studio 中建立和使用 WCF 服務的逐步示範。
逐步解說︰使用 WPF 和 Entity Framework 建立 WCF 資料服務 提供如何在 Visual Studio 中建立和使用 WCF Data Services 的逐步示範。
使用 WCF 開發工具 討論如何在 Visual Studio 中建立及測試 WCF 服務。
如何:新增、更新或移除 WCF 資料服務參考
針對服務參考進行疑難排解 呈現服務參考可能發生的一些常見錯誤,以及如何防止這些錯誤。
WCF 服務 描述在偵錯 WCF 服務時可能會遇到的常見偵錯問題和技術。
逐步解說:建立多層式架構 (N-Tier) 資料應用程式 提供用於建立具類型資料集以及將 TableAdapter 和資料集程式碼分成多個專案的逐步指示。
設定服務參考對話方塊 描述 [設定服務參考] 對話方塊的使用者介面元素。

參考

另請參閱