WCF開發入門的六個步驟

iDotNetSpace發表於2008-05-20

在這裡我就用一個據於一個簡單的場景:服務端為客服端提供獲取客戶資訊的一個介面讀取客戶資訊,來完成WCF開發入門的六個步驟。

1. 定義WCF服務契約

A. 專案引用節點右鍵新增System.ServiceModel引用。

B. 在程式碼檔案裡,新增以下名稱空間的引用


using System.ServiceModel;

using System;

C. 新建一個命為ICustomerService 介面,並新增一個獲取客戶資訊的方法定義名為CustomerInfomation,返回字串型別的客戶資訊。

D. 為介面ICustomerService新增ServiceContract的屬性修飾使它成為WCF服務中公開的介面。

E. 為方法CustomerInfomation新增OperationContract的屬性修飾使它成為WCF服務公開介面中公開的成員。

F. 程式碼:


1 using System;
2
3 using System.ServiceModel;
4
5 namespace ConWCF
6
7 { [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
8
9 public interface CustomerService
10
11 {
12
13 [OperationContract]
14
15 String CustomerInformation();
16
17 }
18
19 }
20





2. 實現WCF服務契約


實現WCF服務契約很簡單,就是實現上一步聚定義的WCF服務契約定義的介面就可以。下面看程式碼


1 using System;
2
3 using System.ServiceModel;
4
5 namespace ConWCF
6
7 { [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
8
9 public interface ICustomerService
10
11 {
12
13 [OperationContract]
14
15 String CustomerInformation();
16
17 }
18
19 public class CustomerService:ICustomerService
20
21 {
22
23 #region ICustomerService 成員
24
25 public string CustomerInformation()
26
27 {
28
29 return "這是客戶的資訊!";
30
31 }
32
33 #endregion
34
35 }
36
37 }
38
39



3. 啟動WCF服務

A.新增一個應用程式配置檔案,檔案件名為App.config。

B.配置WCF服務的基本地址,如下所示






contract="ConWCF.ICustomerService" />

D.配置檔案

E.啟動服服就簡單了

ServiceHost host = new ServiceHost(typeof(CustomerService));

host.Open();

Console.WriteLine("客戶資訊服務已啟動");

Console.WriteLine("按任意鍵結束服務!");

Console.Read();

host.Close();

F.當服務啟動時,在IE欄中輸入: http://localhost:8000/conwcfr,將會收到一些幫助的提示資訊。


G.異常:配置檔案中的服務名稱一定是:名稱空間.實現WCF服務契約類的名稱,否則將會發生找到不配置的異常。


name="ConWCF.CustomerService"

異常資訊: Service 'ConWCF.CustomerService' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.

這個異常搞得我昏了半天,害得我以為從IIS、埠到配置環境排除錯誤,就是搞不明白為什麼會跟類的命稱聯絡起來。不過,最終也解決了。

4. 建立一個基本的WCF客服端

WCF服務端建立好啊,建立客戶端就容易多了,直接用SVCUTIL 命令列工具去完成程式碼的生成。我安裝了WINDOWS SDK,其帶了一個CMDShell 命令列工具,開啟後就可以執行SVCUTIL命令,這個命令是執行於 framework 3.0以上環境。檢視詳細幫助資訊可以輸入:svcutil /?,回車。

1. 啟動上幾步驟建立好的WCF服務端。

2. 在CMDShell工具中用CD 轉到你要存放客戶端程式碼的目錄下,輸入以下命令生成程式碼和配置檔案。

D:"client>svcutil /language:c# /out:CustomerClient.cs /config:app.config http:/

/localhost:8000/conwcfr

上面命令指定了要生成程式碼的語言,程式碼檔案和配置檔名,WCF服務端地址,注意執行命令時必須確定WCF服務端正在執行中。

5. WCF客服端基本配置

WCF客戶端配置就是配置呼叫WCF服務端的協議,輸傳寬頻,服務地址,安全等等資訊。下面就上一步驟命令自動生成的配置檔案。


1
2
3
4
5
6 7 penTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
8 bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
9 maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
10 messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
11 allowCookies="false">
12 13 maxBytesPerRead="4096" maxNameTableCharCount="16384" />
14 15 enabled="false" />
16
17 18 realm="" />
19 20 algorithmSuite="Default" establishSecurityContext="true" />
21
22
23
24
25
26 27 bindingConfiguration="WSHttpBinding_ICustomerService" contract="ICustomerService"
28 name="WSHttpBinding_ICustomerService">
29
30
31
32
33
34
35



6. 使用WCF客戶端

在客戶端專案中專案引用節點右鍵新增System.ServiceModel引用.
新增第四部中建立的客戶端程式碼檔案和配置檔案。
客戶端呼叫服務端的服務,只要建立生成客戶端類的例項就可呼叫了,但要確認服務端正在起用狀態,如下


1using System;
2
3namespace ConWCFCustomerClient
4
5{
6
7 class Program
8
9 {
10
11 static void Main(string[] args)
12
13 {
14
15 CustomerServiceClient client = new CustomerServiceClient();
16
17 string message=client.CustomerInformation();
18
19 Console.WriteLine(message);
20
21 Console.Read();
22
23 }
24
25 }
26
27}

- 游龍的專欄 - CSDNBlog                                                                  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-281018/,如需轉載,請註明出處,否則將追究法律責任。

相關文章