WCF学习(一)WCF概述

WCF是.NETFramework上灵活的通信技术。在.NET3.0推出之前,一个企业解决方案需要几种通信技术。对于独立于平台的通信,使用ASP.NET Web服务。对于比较高级的Web服务——可靠性、独立于平台的安全性和原子事务等技术——Web Services Enhancement增加了AS.NET Web服务的复杂性。如果要求通信比较快,客户和服务都是。NET应用程序,就应该使用.NET REMOTING技术。.NET Enterprice Services支持自动事务处理,它默认使用DCOM协议,比用.NET Remoting快。DCOM也是允许传递事务的唯一协议。所有这些技术都有不同编程模型,这些模型都需要开发人员有许多技术。

.NET3.0引入了一种通信技术WCF,它包括上述技术的所有功能,把他们合并到一个编程模型中:Windows Communication Foundation(WCF)。

本章介绍的命名空间是System.SeviceModel。

WCF合并了ASP.NET Web服务、.NET REMOTING、消息队列、和Enterprise Sevices的功能,WCF的功能包括:

存储组件和服务;

声明行为;

通信信道;

安全结构;

可扩展性;

支持以前的技术。

最终的目标是通过进程或不同的系统、通过本地网络或通过Internet收发客户和服务之前的消息。如果需要以独立于平台的方式尽快收发消息,就应该这么做。在远程视图上,服务提供了一个端点,它用协议、绑定和地址来描述。协议定义了服务提供的操作,绑定给出了协议和编码信息,地址是服务的位置。客户需要一个兼容的端点了访问服务。

扫描二维码关注公众号,回复: 2275141 查看本文章

下图显示了参与WCF通信的组件。


客户调用代理上的一个方法。代理提供了服务定义的方法,但把方法调用转换为一条消息,并把该消息传输到信道上。信道有一个客户端部分和一个服务器部分,它们通过一个网络协议来通信。在信道上吗,把消息传递给调度程序,调度程序再把消息转化为用服务调用的方法调用。

WCF支持几个通信协议。为了进行独立于平台的通信,需要支持Web服务标准。要在.NET应用程序之间进行通信,可以使用较快的通信协议,其系统开销较小。

下面几节介绍独立于平台的通信所使用的核心服务功能。

SOAP(简单对象访问协议):一个独立于平台的协议,它是几个Web服务的规范基础,支持安全性、事务、可靠性。

WSDL(Web服务描述语言):提供描述服务的元数据。

REST(代表性状态传输):由支持REST的web服务用于在HTPP上通信。

JSON(JS对象标记):便于在JS客户端上使用。

1.1SOAP

为了进行独立于平台的通信,可以使用SOAP协议,它得到WCF的直接支持。SOAP最初是SimpleObjectAccessProtocol的缩写,但是自从SOAP1.2以来,就不是这样了,SOAP不再是一个对象访问协议,因为可以发送用XML架构定义的消息。

服务从客户端接收SOAP消息,并返回一条SOAP响应消息。SOAP消息包含信封,信封包含标题和正文。


标题是可选择的,可以包含寻址、安全性和事务信息。正翁包含消息数据。

1.2WSDL

Web服务描述语言文档描述了服务的操作和消息。WSDL定义了服务的元数据,这些元数据可用于为客户端应用程序创建代理。

WSDL包含如下信息:

消息的类型——用XML架构描述;

从服务中收发消息——消息的各部分是用XML架构定义的类型;

端口类型——映射服务协定,列出了用服务协定定义的操作。操作包含消息,例如,与请求和响应序列一起使用的输入和输出消息;

绑定信息——包含圆通端口类型列出的操作和SOAP变体定义的操作;

服务信息——把端口类型映射到端点地址。

1.3REST

WCF还提供了使用REST进行通信的功能.。REST并不是一个协议,但定义了使用服务访问资源的几条规则。支持REST的web服务是基于HTTP协议和REST跪着的简单服务。规则按3个类别来定义:可以用简单的URI|访问的服务,支持MIME类型,以及使用不通的HTTP方法。支持MIME类型,就可以从五福中返回不同的数据格式,如普通的XML、JSON或AtomPub。HTTP请求的GET()方法从服务器中返回数据。其它方法有PUT、POST和DELETE。PUT方法用于更新服务端、POST方法创建一个新资源,DELETE方法删除资源。

使用REST体系结构时,服务总是无状态的,服务的响应可以缓存。

1.4JSON

除了收发SOAP消息外,从JS中访问服务器最好使用JSON。.NET包含一个数据协定序列化程序,可以使用JSON|标记创建对象。

JSON的系统开销比SOAP小,因此它不是XML,而是为JS客户端进行了优化。这使之非常适合用于从Ajax客户端使用。

JSON没有提供通过SOAP标题发送所具备的可靠性、安全性、和事务的功能,但这些通常是JS客户端不需要的。


猜你喜欢

转载自blog.csdn.net/wudong121/article/details/80472236
WCF