WCF介绍"/>
WCF介绍
一:WCF
在.net平台下,有很多的分布式技术.....
1> WebService 基于Hhttp协议的Soap模式
2>Remoting 也是一种分布是架构技术,常常用于Tcp模式的二进制传输
3>MSMQ 这是一种分布式的离线技术(即:消息队列),用于业务解耦
现如今就是现如今的的大概三种分布式技术,分布式太多了,我们就需要整合下,面对三面三种需求,这时候WCF就应运而生了。
WCF可以认为是读上面这三种技术的再次封装。
二:为什么要学习WCF
WCF采用SOAP通讯协议 (SOAP消息包括信封和正文)
三:快速搭建一个WCF程序
1>ABC的概念
A表示Address 服务的地址,就像我们访问Web的时候,需要一个http地址。
B表示Binding 就是说我们Client和Service的通道,比如说我们访问web,我们使用http通道
那么WCF支持哪些通道(协议)呢?
1. BasicHttpBinding 对应WebService
2.NetTcpBinding 对应Remoting
3.NetMSMQBinding 对应 MSMQ
C表示Contract 契约
所谓契约就是我们定义的接口是什么样的,方法名是什么,采用什么参数,返回值是什么
四:创建一个WCF项目
创建一个控制台应用程序,然后再里面添加一个WCF服务,这个WCF服务的名称我们就取名:MyService,这时候项目中自动给我们生产两个文件,一个是MyService类,一个是IMyService 接口,这个接口就是我们所说的契约。
同时在App.Config文件中会自动给我们添加一系些节点
<configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup><system.serviceModel><behaviors><serviceBehaviors><behavior name=""><serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /><serviceDebug includeExceptionDetailInFaults="false" /></behavior></serviceBehaviors></behaviors><services><service name="WCFServices.MyService"><!--如果这个address地址为空,那么默认就使用host节点下的baseAddresses节点配置的地址--><!--bingding我们一般选择:basicHttpBinding,netTcpBinding,netMsmqBinding--><!--contract表示契约,值是这个服务使用的那个接口名称--><endpoint address="" binding="basicHttpBinding" contract="WCFServices.IMyService"><!-- 部署时,应删除或替换下列标识元素,以反映在其下运行部署服务的标识。删除之后,WCF 将自动推导相应标识。--><identity><dns value="localhost" /></identity></endpoint><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /><host><baseAddresses><!--这个地址我们在可以谁便写,只要在客户端引用服务的时候,客户端配置文件中的endpoint填写与之一样的地址就可以了(特别注意,启用这个服务的时候,一定要以管理员的身份启动)--><add baseAddress="http://localhost:1234/WCFServices/MyService/" /></baseAddresses></host></service></services></system.serviceModel>
</configuration>
启动我们的服务:运行项目(如果直接去bin目录下的Debug目录下打开WCFServices.exe文件的形式,一定记得要以管理员身份运行打开)
namespace WCFServices
{class Program{static void Main(string[] args){//为什么演示方便,这里我们就以控制台应用程序来作为WCF的宿主(注:WCF的宿主可以是IIS,也可以是控制台应用程序,也可以是WinForm)System.ServiceModel.ServiceHost host = new System.ServiceModel.ServiceHost(typeof(MyService));host.Open();Console.WriteLine("WCF服务启动成功!");Console.ReadKey();}}
}
五:如何使用这个服务
创建一个WebClient控制台应用程序,添加服务引用,如果无法发现服务,就直接去WCF服务的App.config配置文件中去拷贝baseAddress的值http://localhost:1234/WCFServices/MyService/ 填上,然后点击“转到” 就可以了。
namespace WebClient
{class Program{static void Main(string[] args){ WCFSR.MyServiceClient client = new WCFSR.MyServiceClient();var msg = client.DoWork();Console.Write(msg); //输出:Hello WorldConsole.ReadKey();}}
}
更多推荐
WCF介绍
发布评论