• 温故而知新:什么是wcf


    1.什么是WCF。WCF是Windows Communication Fundation的缩写,是微软在.net 3.0 的时候引进的,用于开发可交互的分布式应用程序,是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。WCF专门用于面向服务开发。

    2.为什么要用WCF。有如下情况,我们要为两个客户端提供一个服务,一个是java客户端,需要通过http提供xml格式的数据,另一个.net 客户端,为了有更好的性能,.net 客户端需要服务通过tcp协议提供二进制数据。这时候WCF就派上用场了。如果没有WCF,为了达到上面的目的,我们需要给java客户端实现一个ASMX WebService,给.net 客户端实现一个remoting service。这完全是两种不同的技术,实现起来相对来说麻烦很多。

    3.创建一个wcf服务

    场景实践:为了给java 和.net 两个客户端提供他们需要的服务,我们需要实现两个东西,一个是WebService   一个是 .net Remoting ,虽然他们的功能是一样的。

    接下去是WCF的实现方式:

    从图中可以知道,我们只需要写一个服务,然后配置两个Endpoint即可满足需求。

    首先,创建一个解决方案,添加一个新类库,取名HelloService

    然后,删除vs 自动生成的Class1.cs 再添加一个WCF服务 新项(右上角可以搜索)取名HelloService。

    QQ截图20150110191230

    确定之后我们看一下项目目录结构。

    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

  • 相关阅读:
    【笔记】Eclipse and Java for Total Beginners—015
    [笔记]再笔记边干边学Verilog HDL –006
    [笔记]再笔记边干边学Verilog HDL 002
    【笔记】Eclipse and Java for Total Beginners—016
    这是第一篇博客文章
    c语言读取obj文件转换数据
    腾讯研发项目总监:互联网产品开发中的“快”字诀
    截取年月日错误笔记
    我在赶集网的两个月
    庆云书店叹息中关门
  • 原文地址:https://www.cnblogs.com/qinyi173/p/5027862.html
Copyright © 2020-2023  润新知