六步驟打造WCF客戶端
WCF應(yīng)用方法比較靈活,它可以幫助開發(fā)人員輕松打造一個跨平臺的可依賴性的解決方案。那么如何才能正確的使用WCF開發(fā)呢?在這里我們將會為大家詳細(xì)介紹一下WCF客戶端的一些創(chuàng)建步驟。#t#
在這里我就用一個據(jù)于一個簡單的場景:服務(wù)端為客服端提供獲取客戶信息的一個接口讀取客戶信息,來完成WCF開發(fā)入門的六個步驟。
WCF客戶端創(chuàng)建步驟1. 定義WCF服務(wù)契約
A. 項目引用節(jié)點右鍵添加System.ServiceModel引用。
B. 在代碼文件里,添加以下命名空間的引用
using System.ServiceModel;
using System;
C. 新建一個命為ICustomerService 接口,并添加一個獲取客戶信息的方法定義名為CustomerInfomation,返回字符串類型的客戶信息。
D. 為接口ICustomerService添加ServiceContract的屬性修飾使它成為WCF服務(wù)中公開的接口。
E. 為方法CustomerInfomation添加OperationContract的屬性修飾使它成為WCF服務(wù)公開接口中公開的成員。
F. 代碼:
- using System;
- using System.ServiceModel;
- namespace ConWCF
- { [ServiceContract(Namespace =
"http://Microsoft.ServiceModel.Samples")]- public interface CustomerService
- {
- [OperationContract]
- String CustomerInformation();
- }
- }
WCF客戶端創(chuàng)建步驟2. 實現(xiàn)WCF服務(wù)契約
實現(xiàn)WCF服務(wù)契約很簡單,就是實現(xiàn)上一步聚定義的WCF服務(wù)契約定義的接口就可以。下面看代碼
- using System;
- using System.ServiceModel;
- namespace ConWCF
- { [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
- public interface ICustomerService
- {
- [OperationContract]
- String CustomerInformation();
- }
- public class CustomerService:ICustomerService
- {
- #region ICustomerService 成員
- public string CustomerInformation()
- {
- return "這是客戶的信息!";
- }
- #endregion
- }
- }
WCF客戶端創(chuàng)建步驟3. 啟動WCF服務(wù)
A.添加一個應(yīng)用程序配置文件,文件件名為App.config。
B.配置WCF服務(wù)的基本地址,如下所示
- < host>
- < baseAddresses>
- < addbaseAddressaddbaseAddress="http://localhost:8000/conwcfr"/>
- < /baseAddresses>
- < /host>
C.配置WCF服務(wù)的端口。Address=“”,意思就是使用上面配置的基本地址,當(dāng)然也可以在這里指定。Bingding=“wsHttpBinding”,意思是WCF服務(wù)使用的是HTTP協(xié)議。再接下來就是配置WCF服務(wù)契約了(命名空間.服務(wù)契約接口名),如下所示:
- < endpointaddressendpointaddress=""
- binding="wsHttpBinding"
- contract="ConWCF.ICustomerService" />
D.配置文件
E.啟動服服就簡單了
- ServiceHost host = new ServiceHost(typeof(CustomerService));
- host.Open();
- Console.WriteLine("客戶信息服務(wù)已啟動");
- Console.WriteLine("按任意鍵結(jié)束服務(wù)!");
- Console.Read();
- host.Close();
F.當(dāng)服務(wù)啟動時,在IE欄中輸入: http://localhost:8000/conwcfr,將會收到一些幫助的提示信息。
G.異常:配置文件中的服務(wù)名稱一定是:命名空間.實現(xiàn)WCF服務(wù)契約類的名稱,否則將會發(fā)生找到不配置的異常。
WCF客戶端創(chuàng)建步驟4. 創(chuàng)建一個基本的WCF客服端
WCF服務(wù)端創(chuàng)建好啊,創(chuàng)建客戶端就容易多了,直接用SVCUTIL 命令行工具去完成代碼的生成。我安裝了WINDOWS SDK,其帶了一個CMDShell 命令行工具,打開后就可以運行SVCUTIL命令,這個命令是運行于 framework 3.0以上環(huán)境。查看詳細(xì)幫助信息可以輸入:svcutil /?,回車。
1. 啟動上幾步驟創(chuàng)建好的WCF服務(wù)端。
2. 在CMDShell工具中用CD 轉(zhuǎn)到你要存放客戶端代碼的目錄下,輸入以下命令生成代碼和配置文件。
WCF客戶端創(chuàng)建步驟5. WCF客服端基本配置
WCF客戶端配置就是配置調(diào)用WCF服務(wù)端的協(xié)議,輸傳寬帶,服務(wù)地址,安全等等信息。下面就上一步驟命令自動生成的配置文件。
- < ?xml version="1.0" encoding="utf-8"?>
- < configuration>
- < system.serviceModel>
- < bindings>
- < wsHttpBinding>
- < binding name="WSHttpBinding_ICustomerService" closeTimeout="00:01:00"
- openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
- bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"- maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
- messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
- allowCookies="false">
- < readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"- maxBytesPerRead="4096" maxNameTableCharCount="16384" />
- < reliableSession ordered="true" inactivityTimeout="00:10:00"
- enabled="false" />
- < security mode="Message">
- < transport clientCredentialType="Windows" proxyCredentialType="None"
- realm="" />
- < message clientCredentialType="Windows" negotiateServiceCredential="true"
- algorithmSuite="Default" establishSecurityContext="true" />
- < /security>
- < /binding>
- < /wsHttpBinding>
- < /bindings>
- < client>
- < endpoint address="http://localhost:8000/conwcfr" binding="wsHttpBinding"
- bindingConfiguration="WSHttpBinding_ICustomerService"
contract="ICustomerService"- name="WSHttpBinding_ICustomerService">
- < identity>
- < userPrincipalName value="30DA1D0B1D1E4D2\Administrator" />
- < /identity>
- < /endpoint>
- < /client>
- < /system.serviceModel>
- < /configuration>
WCF客戶端創(chuàng)建步驟6. 使用WCF客戶端
在客戶端項目中項目引用節(jié)點右鍵添加System.ServiceModel引用. 添加第四部中創(chuàng)建的客戶端代碼文件和配置文件。 客戶端調(diào)用服務(wù)端的服務(wù),只要創(chuàng)建生成客戶端類的實例就可調(diào)用了,但要確認(rèn)服務(wù)端正在起用狀態(tài),如下
- using System;
- namespace ConWCFCustomerClient
- {
- class Program
- {
- static void Main(string[] args)
- {
- CustomerServiceClient client = new CustomerServiceClient();
- string message=client.CustomerInformation();
- Console.WriteLine(message);
- Console.Read();
- }
- }
- }