WCF 建立第乙個WCF應用程式

2021-07-11 16:31:08 字數 4385 閱讀 4785

windows communication foundation(wcf)是由微軟發展的一組資料通訊的應用程式開發介面,也可以說是一套軟體開發包。

wcf合併了web服務、.net remoting、訊息佇列和enterprise services的功能並整合在visual studio中。

wcf專門用於面向服務開發。

wcf的最終目標是通過程序或不同的系統、通過本地網路或是通過internet收發客戶和服務之間的訊息。並為服務提供直接的支援。託管、安全、事務管理、離線對立等等。 

橢圓裡面是若干伺服器,會通過internet傳輸,服務都會提供乙個對外的介面。

(1)web service:嚴格來說是行業標準,也就是web service 規範,也稱作ws-*規範,既不是框架,也不是技術。

(2)wcf:wcf 是乙個分布式應用的開發框架,屬於特定的技術,或者平台。既不是標準也不是規範。

(3)wcf 是一套框架,用來建立各種服務。其中包括建立 web服務(採用 basichttpbinding繫結的服務就是乙個web 服務)。

有兩個預設的,乙個是介面,乙個是類檔案,在介面上面有【servicecontract】,在上面定義非常的靈活。便於以後的重構。【perationcontract】操作契約。【datacontact】資料契約。下面的類繼承介面。直接將兩個檔案刪除即可。

(3)將自動生成的類檔案刪除,然後新增乙個介面,命名為ihelloservice**如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.servicemodel;

namespace helloservice

}

(4)新增實現介面的類helloservice,定義sayhello方法

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.servicemodel;

namespace helloservice}}

(5)建立宿主程式。位址+繫結+契約=終結點。選擇iis作為宿主,必須是http,作為通訊協議繫結,如果使用自定義的必須根據繫結協議。 建立乙個控制台應用程式,命名為helloservicehost

(6)新增servicemodel引用,和helloservice引用。並在program類檔案中寫入

(7)編寫program類

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.servicemodel;

using system.servicemodel.channels;

namespace helloservicehost}}

public class myhellohost : idisposable

}/// /// 定義乙個基位址

///

public const string baseaddress = "net.pipe://localhost";

/// /// 可選位址

///

public const string helloserviceaddress = "hello";

//3、服務契約實現型別

public static readonly type servicetype = typeof(helloservice.helloservice);//必須引用helloservice

//服務契約介面

public static readonly type contracttype = typeof(helloservice.ihelloservice);

/// ///4、定義乙個服務繫結

///

public static readonly binding hellobinding = new netnamedpipebinding();

/// /// 5、構造服務物件

///

protected void createhelloservicehost()

);//6、新增終結點

_myhost.addserviceendpoint(contracttype,hellobinding,helloserviceaddress);

}/// /// 7、開啟服務方法

///

public void open()

/// /// 8、建立構造方法

///

public myhellohost()

/// /// 關閉服務後,銷毀服務宿主例項物件

///

public void dispose()}}

}

(8)執行結果

(1)繼續建立控制台應用程式命名為helloservice(記得新增引用),編寫**

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.servicemodel;

using helloservice;

using system.servicemodel.channels;

namespace helloclient

}//硬編碼定義服務契約

[servicecontract]

inte***ce iservice

/// /// 客戶端**類;clientbase 是用於建立可呼叫服務的客戶端物件,是一種泛型,裡面要包括服務端的介面;iservice 介面要實現客戶端建立的硬編碼定義服務企業的介面。

///

class helloproxy : clientbase, iservice

//呼叫服務端方法

public string say(string name)

} }

}

(2)開啟helloservicehost的exe檔案。在bin檔案中。然後執行helloclien中exe檔案,結果:

檔案格式:

小結:剛開始接觸wcf,對裡面的東西理解的還不是很深刻,但是通過這個例子讓我對wcf有了巨集觀的把控。

建立WCF第乙個應用程式

在microsoft提出.net戰略以來,先後推出了一系列產品和技術,這些產品和技術為我們在.net平台下建立企業級的分布式應用提供了很大的 便利。這些技術和產品包括 net remoting,xml webserivce,wse 2.0,3.0 enterprise service,msmq 等等...

建立第乙個WCF程式

using system.servicemodel namespace host 而hellowcfservice.cs 實現如下 using system 縮短為baseaddress http localhost 8731 hellowcfservice 並修改program.cs檔案為 usi...

WCF教程系列 1 建立第乙個WCF程式

wcf教程系列 1 建立第乙個wcf程式 using system.servicemodel namespace host 而hellowcfservice.cs 實現如下 using system 縮短為baseaddress http localhost 8731 hellowcfservice...