WCF入門一[WCF概述]

1、什麼是WCF

  WCF是使用託管代碼創建和運行面向服務(Service Oriented)應用程序的統一框架。它使得開發者可以創建一個跨平臺的、安全、可信賴、事務性的解決方案,且能與已有系統兼容協做。WCF是微軟分佈 式應用程序開發的集大成者,它整合了.Net平臺下全部的和分佈式系統有關的技術,例如.Net Remoting、ASMX、WSE和MSMQ(消息隊列)。以通訊(Communiation)範圍而論,它能夠跨進程、跨機器、跨子網、企業網乃至於 Internet;以宿主程序而論,能夠以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+做爲宿主(Host)。WCF能夠支持的協議包括TCP,HTTP,跨進程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,自定義等多種標準與模式。也就是說,在WCF框架下,開發基於SOA的分佈式系統變得容易了,微軟將全部與此相 關的技術要素都包含在內,掌握了WCF,就至關於掌握了叩開SOA大門的鑰匙。安全

  最終目標是經過進程或不一樣的系統、經過本地網絡或是經過Internet收發客戶和服務之間的消息。服務器

2、第一個WCF程序

  1.咱們先新建一個項目,選擇WCF中的WCF服務應用程序新建:網絡

  2.系統生成了兩個默認文件:IService1.cs和Service1.svc,其中IService1.cs是定義接口的,Service1.svc用來實現該接口。在這兩個文件中能夠看到以下的代碼:框架

// 注意: 使用「重構」菜單上的「重命名」命令,能夠同時更改代碼和配置文件中的接口名「IService1」。
 [ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: 在此添加您的服務操做
 } // 使用下面示例中說明的數據約定將複合類型添加到服務操做。
 [DataContract] public class CompositeType { bool boolValue = true; string stringValue = "Hello "; [DataMember] public bool BoolValue { get { return boolValue; } set { boolValue = value; } } [DataMember] public string StringValue { get { return stringValue; } set { stringValue = value; } } }
public string GetData(int value) { return string.Format("You entered: {0}", value); } public CompositeType GetDataUsingDataContract(CompositeType composite) { if (composite == null) { throw new ArgumentNullException("composite"); } if (composite.BoolValue) { composite.StringValue += "Suffix"; } return composite; }

  能夠看到接口文件IService1.cs裏有幾個特性分別是:[ServiceContract]、[OperationContract]、[DataContract]、[DataMember],大體的用途以下:異步

  [ServiceContract]:指明該接口是一個WCF的服務契約,能夠被外部的調用,不加則沒法被外部調用。分佈式

  [OperationContract]:指明該方法是一個WCF的方法契約,能夠被外部的調用,不加則沒法被外部調用。工具

  [DataContract]:數據契約,指明該類是可供服務端和客戶端相互傳遞自定義數據的類型,聲明後該類型就能夠被序列化在服務端和客戶端之間傳送。學習

  [DataMember]:數據成員,聲明後的屬性能夠參與到客戶端和服務器端的類的屬性的序列化,沒有聲明的不參與序列化。測試

  在Service1.svc中已經實現了接口中的方法,將Service1.svc設置爲啓動項,後調試會以下所示,這是vs自帶的服務測試的工具,不過沒法測試異步的服務。spa

  

  雙擊左側樹狀圖中的方法GetData(),在上方輸入值後點擊調用能夠下方看到方法返回值,則說明咱們的接口成功了。

 

 3、WCF服務的使用

  1.接下來對咱們的WCF程序進行發佈到本地文件,發佈的過程和WEB的項目發佈相似,發佈後咱們部署到IIS上面。右鍵瀏覽Service1.svc出現以下的頁面後代表發佈成功。http://192.168.3.30:7358/Service1.svc?wsdl就是咱們須要引用的服務地址。

  注意若是沒法發佈成功,多是部分的Windows功能沒有開啓,以下所示。

  

  2.新建一個新的控制檯應用程序,右鍵引用->添加服務引用->將WCF服務引用地址輸入點擊確認便可引用成功。

  引用成功後在Service References文件夾下出現了一個ServiceReference1服務,在控制檯程序中引用WCF服務的命名空間using ConsoleApplication2.ServiceReference1;使用以下代碼便可訪問服務接口。

  

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //添加WCF的服務命名空間
using ConsoleApplication2.ServiceReference1; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { //Service1Client是在添加服務引用後服務器端的Service1在客戶端的代理類,通常的格式都是"*Client"這種格式的
            Service1Client sercive = new Service1Client(); string str = sercive.GetData(666); Console.WriteLine("WCF服務返回值爲:" + str); Console.ReadKey(); } } }

  返回結果以下:

4、說明

這個隨筆是我本身學習流程的一個記錄,和你們共勉。

相關文章
相關標籤/搜索