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...