基础:构建排队WCF响应服务

原文地址:http://msdn.microsoft.com/zh- cn/magazine/cc163482.aspx

目录

排队调用

响应服务

设计响应服务合约

使用消息 头

ResponseContext 类

客户端编程

服务端编程

响 应服务编程

结束语

Windows Communication Foundation (WCF) 使 客户端与服务之间能够以非连接方式进行通信。客户端将消息发布给队列,服务 稍后再对这些消息进行处理。这种交互方式造就了一种不同于默认的请求/响应模 式的编程模型,从而有望更好地平衡负载、提高可用性、进行补偿工作,为用户 带来诸多好处。本专栏首先简要介绍 Windows Communication Foundation 的排队调用功能,然后提出“如何从排队的调用获取结果”这样一个 有趣的问题,接着通过一些超酷的 Windows Communication Foundation 编程技 术以及我为此所编写的助手类来找到解决办法。

排队调用

Windows Communication Foundation 使用 NetMsmqBinding 来支持排队调用。Windows Communication Foundation 在传输消息时不是通过 TCP 或 HTTP,而是通过 Microsoft 消息队列 (MSMQ)。客户端也不是将 Windows Communication Foundation 消息发送到某个在线服务,而是发送到 MSMQ 队列。所有客户端所面 向和交互的对象是队列,而非服务端点。因此,调用在本质上是异步的、是不连 接的。直到服务在将来某一时刻处理消息时,这些调用才得以执行。

请注 意,Windows Communication Foundation 消息并不直接映射到 MSMQ 消息。一个 MSMQ 消息可以包含一个或多个 Windows Communication Foundation 消息,具体 个数视合约会话模式而定。对于必需会话模式,多个 Windows Communication Foundation 调用可共存于一个 MSMQ 消息中;而对于允许或不允许会话模式(由 单调用和单例式服务使用),每个 Windows Communication Foundation 调用将 位于单独的 MSMQ 消息中。

如同各 Windows Communication Foundation 服务一样,客户端会与代理进行交互,如图 1 所示。由于已将代理配置为使用 MSMQ 绑定,因而该代理不会向任何特定服务发送 Windows Communication Foundation 消息,而是将调用转换为 MSMQ 消息,然后将这些消息发布到端点地 址所指定的队列中。

图 1WCF 排队调用体系结构

时间: 2024-07-28 17:02:18

基础:构建排队WCF响应服务的相关文章

OData 和 AtomPub: 使用WCF数据服务绑定 AtomPub 服务器

如果您不熟悉开放数据协议 (OData),我要告诉您它很美妙.OData(在 odata.org 上有详细介绍)以下列各种基于 HTTP 的功能优势 为基础:用于发布数据的 Atom:用于创建.更新和删除数据的 AtomPub:以及用于定义数据类型的 Microsoft 实体数据模型 (EDM). 如果您拥有 JavaScript 客户端,则可以采用 JSON 格式(而不是 Atom 格式)直接返回数据:如果您拥有其他客户端(包括 Excel. .Microsoft NET Framework.

构建SOA组合业务服务专题

从 2007 年年初开始,我们陆续地向您推出了"构建 SOA 组合业务服务"系 列文章.它通过一个银行业的例子十分全面地向您介绍了如何构建 SOA 组合业务服务以及相 关方方面面的知识.同时还涉及了很多 IBM 相关的产品,比如Websphere Process Server, WebSphere Integration Developer,WebSphere Portlet,Rational Application Developer 和 DB2 Universal Database

RIA服务-使用WCF RIA服务的企业模式

PDC09 和 Mix10 上宣布了两条重大消息,分别是推出 Silverlight 4 Beta 和 RC.读到本文时,发布到网上的 Silverlight 4 完全版本已经可供下载.除广泛的打印支持外,它还支持权限升级.网络摄像头.麦克风.toast.剪贴板访问,等等.凭借其全新的功能集,Silverlight 4 作为一种多平台的丰富 UI 框架,可以从容应对与 Adobe AIR 之间的正面交锋. 尽管我对这一切确实感到兴奋,但我的主要角色是一名业务应用程序开发人员,我所关注的一点是如何

Java中的基础构建模块(第五章)

Java中的基础构建模块 Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类. 1.同步容器类 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作.常见的复合操作包括:迭代.跳转(在容器内元素之间).条件运算(例如"若没有则添加"). 隐式迭代:某些情况下迭代操作会隐藏起来.如下代码中println调用Set的toString方法,然后对Set中的对象进行迭代调用toString方法: pu

简单的构建和部署云服务的方法

Azure的管理门户为您提供了,部署和构建云服务的两种方法:"自定义构建"(Quick Create)和"快速构建"(Custom Create). 我在这里为你们介绍了,如何使用快速构建的方法.首先构建一项新的云服务,然后使用上传的(Update)功能,在Azure中上传和部署云服务包.如果你使用这样的方法,Azure管理门户提供了方便的链接,用来满足你的全部要求.如果你在构建云服务时准备开始部署云服务,那么可以使用"自定义构建",或者是同时执

Java微服务开发指南 -- 使用Docker和Kubernetes构建可伸缩的微服务

使用Docker和Kubernetes构建可伸缩的微服务     从现在开始,我们将从更高的维度讨论微服务,涵盖了组织敏捷性.设计和依赖的思考.领域驱动设计以及Promise理论.当我们深入使用之前介绍的三个流行的微服务框架:Spring Boot.Dropwizard和WildFly Swarm,我们能够使用它们开箱即用的能力去构建一个暴露或者消费REST服务的应用,能够使用外部环境对应用进行配置,可以打包成一个可执行的jar,同时提供Metrics信息,但这些都是围绕着一个微服务实例.当我们

如何构建和部署云服务?

Azure管理门户为你提供了构建和部署云服务的两种方法:"快速构建"(Quick Create)和"自定义构建"(Custom Create). 本文介绍了如何使用快速构建方法构建一项新的云服务,然后使用上传(Update)功能,在Azure中上传和部署云服务包.如果你使用这种方法,Azure管理门户提供了方便的链接,以满足你的所有要求.如果你在构建云服务时准备部署云服务,可以使用"自定义构建",同时执行这两项操作. 注意:如果你打算从Windo

WCF角色服务简介

WCF角色服务能够从可以发送和使用SOAP消息的任何应用程序访问某个用户的角色.这可以包括不使用.NET Framework的应用程序.因此,这些不同应用程序的用户可以在每个应用程序中具有相同的角色.通常情况下,可以检查用户的角色来确定用户具有执行哪些操作的权限. 角色服务仅提供可通过ASP.NET角色管理获得的功能的一个子集.可以通过角色服务检索用户的角色或检查用户是否属于特定的角色.用户必须经过身份验证才能读取用户的角色.角色服务可使用任何类型的ASP.NET身份验证. System.Web

构建SOA组合业务服务,第7部分: 为组合业务服务提供多分租支持

引言 本系列之前的文章介绍了组合业务服务 (CBS) 的概念,并讨论了其需要的部 署环境的一些核心元素.本文将介绍多分租(即从共享的公共承载环境中为多个组织(客户 )提供服务的能力).另外还将介绍软件作为服务(Software-as-a-Service,SaaS)的网络 交付方法及可能会利用 SaaS 多分租的不同用户类型.我们将介绍在 SaaS 承载环境中支持 多分租的原则和技术实现.本文提供了使用 WebSphere Process Server 和 WebSphere Portal.虚拟门