博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
温故而知新:什么是wcf
阅读量:6274 次
发布时间:2019-06-22

本文共 2118 字,大约阅读时间需要 7 分钟。

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。

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

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

转载于:https://www.cnblogs.com/qinyi173/p/5027862.html

你可能感兴趣的文章
支持多种小程序!阿里云ARMS推出小程序监控
查看>>
《The Age of Surge》作者访谈
查看>>
《A Seat at the Table》作者访谈录
查看>>
F# 4.5提供Spans、Match!等特性
查看>>
微信小程序模块化开发实践
查看>>
Jenkins将致力于提升稳定性、易用性和云原生兼容性
查看>>
Facebook开源工具包LASER,支持93种语言
查看>>
禁止eclipse校验JavaScript
查看>>
从微服务迁移到工作流的经验之谈
查看>>
Oracle再发力,区块链平台多项更新
查看>>
微软发布用于Serverless架构的Azure API Management
查看>>
MongoDB Mobile Sync for iOS推出Beta版本
查看>>
Visual Studio 2015价格大幅下调
查看>>
QCon演讲速递:异步处理在分布式系统中的优化作用
查看>>
Java 20年:转角遇到Go
查看>>
软件测试自动化的最新趋势
查看>>
SpringOne大会上发布了一个实验性的反应式关系型数据库连接驱动R2DBC
查看>>
新JSON绑定库JSON-B发布公开预览版
查看>>
机器人操作系统来到Windows
查看>>
.NET Core运行时和基础类库性能提升
查看>>