1.什么是WCF。WCF是Windows Communication Fundation的缩写,是微软在.net 3.0 的时候引进的,用于开发可交互的分布式应用程序,是由微软发展的一组数据通讯的应用程序开发接口,能够翻译为Windows通信接口,它是.NET框架的一部分。WCF的最终目标是经过进程或不一样的系统、经过本地网络或是经过Internet收发客户和服务之间的消息。WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。WCF专门用于面向服务开发。java
2.为何要用WCF。有以下状况,咱们要为两个客户端提供一个服务,一个是java客户端,须要经过http提供xml格式的数据,另外一个.net 客户端,为了有更好的性能,.net 客户端须要服务经过tcp协议提供二进制数据。这时候WCF就派上用场了。若是没有WCF,为了达到上面的目的,咱们须要给java客户端实现一个ASMX WebService,给.net 客户端实现一个remoting service。这彻底是两种不一样的技术,实现起来相对来讲麻烦不少。windows
3.建立一个wcf服务网络
场景实践:为了给java 和.net 两个客户端提供他们须要的服务,咱们须要实现两个东西,一个是WebService 一个是 .net Remoting ,虽然他们的功能是同样的。框架
接下去是WCF的实现方式:tcp
从图中能够知道,咱们只须要写一个服务,而后配置两个Endpoint便可知足需求。分布式
首先,建立一个解决方案,添加一个新类库,取名HelloService性能
而后,删除vs 自动生成的Class1.cs 再添加一个WCF服务 新项(右上角能够搜索)取名HelloService。spa
肯定以后咱们看一下项目目录结构。.net
首先是引用这块。vs 自动添加了对System.ServiceModel 命名空间的引用,这个是WCF的核心命名空间。翻译
而后是vs生成了2个文件,一个HelloService 一个 IHelloService。
让咱们来看一下这两个文件。
首先是IHelloService文件
[ServiceContract] public interface IHelloService { [OperationContract] void DoWork(); }
看名字就知道这是一个接口,接口所具备的ServiceContract 特性来自于ServiceModel 命名空间,接口里面包含一个方法定义,DoWork(),方法有一个OperationContract特性也是来自ServiceModel 。
接下去是HelloService文件
public class HelloService : IHelloService { public void DoWork() { } }
只是简单的实现了IHelloService 接口。
如今,咱们对两个文件作些修改,来实现咱们本身的服务。
把IHelloService 改为以下:
[ServiceContract] public interface IHelloService { [OperationContract] string GetMessage(string name); }
即删除了原先的DoWork方法,改为一个返回String类型的GetMessage方法,传入一个name参数。
相应的,HelloService也要变。
public class HelloService : IHelloService { public string GetMessage(string name) { return "Hello " + name; } }
咱们实现了里面的GetMessage方法,让他返回咱们须要字符串。
至此,建立工做就已完成,接下去就是在控制台程序中托管这个服务。须要说明一点,WCF的托管对象能够是Winform,Console ,或者IIS,或者windows 服务以及其余。为了简化问题,这里选中托管到Console控制台应用程序中。托管对象就是宿主。
首先,在当前解决方案中新添加一个控制台项目,取名HelloServiceHost。
而后,要对这个Host添加两个引用,一个上面的System.ServiceModel,另外一个是上面的WCF项目。
而后会获得以下的引用目录。
为了托管这个WCF服务,咱们须要给项目添加一个配置文件,用于托管这个WCF服务。
右键HelloServiceHost项目,选择添加新项,应用程序配置文件,名字就是默认的App.config