温故而知新:什么是wcf

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

QQ截图20150110191230

肯定以后咱们看一下项目目录结构。.net

QQ截图20150110191530

首先是引用这块。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项目。

QQ截图20150110200958QQ截图20150110201032

 

而后会获得以下的引用目录。

QQ截图20150110201404

为了托管这个WCF服务,咱们须要给项目添加一个配置文件,用于托管这个WCF服务。

右键HelloServiceHost项目,选择添加新项,应用程序配置文件,名字就是默认的App.config

相关文章
相关标签/搜索