现在的位置: 首页 > 综合 > 正文

WCF学习笔记

2012年03月28日 ⁄ 综合 ⁄ 共 4229字 ⁄ 字号 评论关闭

什么是 WCF 

WCF的功能

WCF和微软其他技术的集成 

WCF4.5简化的功能 

WCF基础概念  

WCF术语 

WCF体系结构  

什么是 WCF 

Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。 借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点。 服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务。 终结点可以是从服务终结点请求数据的服务客户端。 简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流。 一些示例方案包括:

处理企业事务的安全服务。

将当前数据提供给其他服务(例如流量报告或其他监视服务)的服务。

使两个人能够实时通信或交换数据的聊天服务。

轮询一个或多个服务以查找数据并将其以逻辑表现形式展示出来的面板应用程序

将使用 Windows Workflow Foundation 实现的工作流作为 WCF 服务公开。

轮询服务以查找最新数据源的 Silverlight 应用程序。

 虽然在 WCF 存在之前就可以创建此类应用程序,但 WCF 使终结点的开发比以前更容易【.NET4.5简化了很多内容】。 总之,WCF 设计提供一种用于创建 Web 服务和 Web 服务客户端的可管理的方式。

 

WCF的功能 

服务导向

使用 WS 标准的一个结果是,WCF 允许您创建面向服务的应用程序。 面向服务的体系结构 (SOA) 依赖 Web 服务发送和接收数据。 这些服务具有松耦合的常规优点,而不是从一个应用程序到另一个应用程序进行硬编码。 松耦合关系意味着只要符合基本协定,则在任何平台上创建的任何客户端均可连接到所有服务。

互操作性

WCF 实现了 Web 服务互操作性的现代行业标准。

多种消息模式

采用多种模式之一交换消息。 最常用的模式是请求/答复模式,其中一个终结点从另一个终结点请求数据, 另一个终结点进行答复。 还有其他模式,比如单向消息,其中只有一个终结点发送消息,而不期望得到答复。 更复杂的模式是双工交换模式,在该模式下,两个终结点建立连接并来回发送数据,类似于即时消息传递程序。 

服务元数据

WCF 支持使用行业标准(如 WSDLXML 架构和 WS-Policy)中指定的格式发布服务元数据。 该元数据可用于自动生成并配置客户端,以便访问 WCF 服务。 可通过 HTTP 和 HTTPS 来发布元数据,也可使用 Web 服务元数据交换标准来发布元数据。 

数据协定

由于 WCF 是使用 .NET Framework 生成的,因此它也包括代码友好的方法,用于提供希望强制执行的协定。 数据协定就是其中一种通用类型的协定。实质上,当您使用 Visual C# 或 Visual Basic 对服务进行编码时,处理数据的最简单方法是使用属于数据实体的属性创建表示该数据实体的类。 WCF 包括一个有关这种轻松的方式处理数据的综合系统。 在创建了表示数据的类之后,服务会自动生成使客户端能够符合所设计数据类型的元数据。 

安全性

可对消息进加密以保护隐私,而且可以要求用户对其自身进行身份验证,然后才允许接收消息。 可使用众所周知的标准(如 SSL 或WS-SecureConversation)实现安全性。 

多种传输和编码方式

可通过多种内置传输协议和编码中的任意一种发送消息。 最常用的协议和编码是使用超文本传输协议 (HTTP) 发送文本编码的 SOAP 消息,以便在万维网上使用。 此外,WCF 还允许通过 TCP、命名管道或 MSMQ 发送消息。 这些消息可以编码为文本,也可以使用优化的二进制格式。 使用 MTOM 标准可有效地发送二进制数据。 如果所提供的传输或编码方式都不符合您的需要,您可以创建自己的自定义传输或编码。 .

可靠的排队消息

WCF 支持使用通过 WS-ReliableMessaging 实现的可靠会话使用 MSMQ 进行可靠的消息交换

持久性消息

持久性消息决不会由于通信中断而丢失。 持久性消息模式的消息会始终保存到数据库中。 如果发生中断,数据库将允许您在恢复连接后恢复消息交换。 此外,也可以使用 Windows Workflow Foundation (WF来创建持久性消息。

事务

WCF 还支持使用三个事务模型之一的事务:WS-AtomicTtransactionsSystem.Transactions 命名空间中的 API 以及 Microsoft 分布式事务协调器

AJAX 和 REST 支持

REST 只是 Web 2.0 技术下不断演变的一个示例。 WCF 可以配置为简单的SOAP 信封包裹的 XML 数据。 WCF 此外可以进行扩展以支持特定的XML格式,如 ATOM流行的 RSS 标准),甚至非 XML 格式,例如,JavaScript 对象表示法 (JSON

可扩展性

WCF 体系结构具有大量扩展点。 如果需要额外功能,它还提供许多入口点,允许您自定义服务的行为。

 

 

WCF和微软其他技术的集成 

WCF 是一个灵活的平台。 由于这一极强的灵活性,WCF 还在 Microsoft 的一些其他产品中得以利用。 如果您也在使用这些产品中的任何产品,通过了解 WCF 的基础知识,您会立即受益。

与 WCF 配对的第一项技术是 Windows Workflow Foundation (WF)。 工作流通过将工作流中的各步骤封装为活动,从而简化了应用程序开发。在 Windows Workflow Foundation 的第一个版本中,开发人员必须为工作流创建一个宿主。 Windows Workflow Foundation 之后的版本与 WCF 进行了集成, 从而允许在 WCF 服务中轻松承载任何工作流;通过在 Visual Studio 2012 中自动选择 WF/WCF 作为项目类型可实现此目的

Microsoft BizTalk Server R2 还利用 WCF 作为通信技术。 BizTalk 设计用于接收一种标准化格式的数据,然后将其转换为另一种格式。 必须将消息传递到其中央消息框,在这里可以使用严格的映射,也可以通过使用其中一种 BizTalk 功能(如其工作流引擎)来转换消息。 目前,BizTalk 可使用 WCF 业务线 (LOB) 适配器将消息传递到消息框。

Microsoft Silverlight 是一个用于创建可互操作的、丰富 Web 应用程序的平台,允许开发人员创建媒体密集的网站(如流视频)。 Silverlight 加入了 WCF 作为通信技术,以将 Silverlight 应用程序连接到 WCF 终结点

Microsoft .NET Services 是一项云计算计划,使用 WCF 生成启用 Internet 的应用程序。 使用 .NET Services 可创建跨信任边界操作的 WCF 服务

Windows Server AppFabric 的承载功能 应用程序服务器是针对部署和管理使用 WCF 进行通信的应用程序专门生成的。 承载功能 包括丰富的工具和配置选项,专门设计用于启用 WCF 的应用程序。

 

WCF4.5简化的功能 

楼主

发表于 2013-05-30 00:57:25 | 查看: 9|回复: 0|只看楼主

简化生产的配置文件当您在 Visual Studio 中添加服务引用,或使用 SvcUtil.exe工具时,生成客户端配置文件。 在以前版本的 WCF 中,这些配置文件包含每个绑定属性的值,即使它的值是默认值。 在 WCF4.5 中,生成的配置文件包含只绑定属性,这些属性都设置为非默认值

下面是由 WCF 3.0 生成的配置文件的示例。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <system.serviceModel>
       <bindings>
           <basicHttpBinding>
               <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
                   openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                   allowCookies="false" bypassProxyOnLocal="false" 
                   hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" 
                   maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                   messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                   useDefaultWebProxy="true">
                   <readerQuotas maxDepth="32" maxStringContentLength="8192" 
                       maxArrayLength="16384" maxBytesPerRead="4096"
                       maxNameTableCharCount="16384" />
                   <security mode="None">
                       <transport clientCredentialType="None" proxyCredentialType="None"
                           realm="" 

抱歉!评论已关闭.