04 2010 档案
摘要:整个可靠会话的机制是完全在信道层实现的,而整个信道层的最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行的。《上篇》对实现可靠会话的绑定元素已经如何使用系统绑定实现可靠会话进行了介绍,下篇将和你探讨WCF可靠会话编程模型余下两个主题:自定义绑定和对消息传递的强制约束。
阅读全文
摘要:对WCF的可靠会话编程有一定了解的人应该知道,我们可以使用 DeliveryRequirementsAttribute 可以指示WCF确认绑定提供服务或客户端实现所需的功能。但是,当你使用该特性的时候,会出现一些很奇怪的现象。经过我个人的分析,这是WCF的一个Bug。
阅读全文
摘要:在《实例篇》给出的例子中,我们实际上是通过对终结点的绑定进行相应的配置让整个消息的交换过程在一个可靠会话中进行,进而实现可靠消息传输的目的。由于整个可靠会话的机制是完全在信道层实现的,而整个信道层的最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行的。本篇文章主要为你讲述基于绑定的可靠会话编程。
阅读全文
摘要:在《上篇》中,我们认识了从序列创建到终止过程中消息交换的大致流程。接下来,我们进一步将关注点聚焦到单个小消息上,看看在整个基于序列的上下文中,不同类型的消息具有怎样的结构
阅读全文
摘要:在《实例篇》中,我通过可靠会话实现了对图片的可靠、有序的传输;在《概念篇》中,我们对可靠消息涉及到的可靠消息传输(RM)的相关概念进行了讲述。在WS-*大家庭中,WS-RM为可靠消息传输提供了一个一个规范,使互操作成为可能。在《协议篇》中,我们侧重对WS-RM的介绍。
阅读全文
摘要:继EnterLib 4.1之后,微软P&P部门于几天前成功发布了最新版本的EnterLib 5.0。EnterLib 5.0没有增加新的Application Block,主要对现有Application进行了重构和加强,已经对配置的改进。最主要的还是通过IoC让整个EnterLib具有更好的可可扩展性。5.0并将Unity这个IoC容器融入了EnterLib中,并给你创建增加的IoC容器的机会。
阅读全文
摘要:服务(Service)的本质就是提供服务消费者期望的某种功能,服务的价值体现在两个方面:服务本身的质量和寄宿服务的平台应付消费者的数量,并发(Concurrency)的关注的是第二个要素。WCF服务寄宿于资源有限的环境中,要实现服务效用的最大化,需要考虑如何利用现有的资源实现最大的吞吐量(Throughput)。提高吞吐量就某个寄宿的服务实例(Service Instance)来说,一个重要的途径就是让它能够同时处理来自各个客户端(服务代理)的并发访问。WCF实现了一套完整的并发控制体系,为你提供了不同的并发模式。
我经常说软件架构是一门权衡的艺术,需要综合考虑各种相互矛盾的因素,找到一种最优的组合方式。提高单个服务实例允许的并发访问量能够提高整体吞吐量,这样的理论依赖于一种假设,那就是服务端所能使用的资源是无限。我们知道,这种假设无论在什么情况下都不会成立......
阅读全文
摘要:WCF支持不同的消息交换模式,比较典型的有以下三种MEP:One-Way、Request/Reply和Duplex。消息会被WCF的信道层发送到传输层,并通过相应的传输协议发送到目的地。但是HTTP协议,大家都知道它天生就基于Request/Reply模式的,那么它是如何能够突破自己的局限,为One-Way和Duplex消息交换模式提供支持呢?
阅读全文
摘要:在《实例篇》中,我通过可靠会话成功地进行了美女图片的传输,相信大家在保了眼福之余,会对WCF的可靠会话的功用具有一个深刻的认识。实际上,这涉及到WS中一个重要的概念——可靠消息传输(RM)。如果想对可靠会话有一个深入的认识,对可靠消息传输的了解是必须的。
阅读全文
摘要:通过前面一系列的博文,我对WCF的并发体系进行了深入的剖析,在接下来的博文中,我只要专注于WCF的可靠会话机制。作为一个通信基础平台,WCF必须保证通信的可靠性。WCF通过可靠会话实现了一种端到端的可靠消息传输。为了让读者对可靠会话的作用现有一个直观的认识,我们先来做一个很有意思的实例演示,这也是早年微软推广WCF技术频繁使用的案例:图片传输。
阅读全文
摘要:通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF框架体系内部,整个过程是如何实现的呢?这就是本篇文章需要为你讲述的内容。
阅读全文
摘要:WCF是一个基于多线程的消息监听、接收和处理框架体系,能够同时应付来自相同或者不同客户端的服务调用请求。一方面,我们期望WCF服务端能够处理尽可能多的并发请求,但是资源的有限性决定了并发量有一个最大值。如果WCF不控制进入消息处理系统的并发量,试图处理所有抵达的并发请求,一旦超过了这个临界值,整个服务端将会由于资源耗尽而崩溃。 所以,我们需要在WCF的消息接收系统和消息处理系统之间设置一道道屏障,将流入消息处理系统的请求控制到一个最佳的范围,以实现对现有资源的有效利用,从而达到确保服务的可用性和提高整体吞吐量的目的。
阅读全文
摘要:之前写了一篇名称为《谈谈关于MVP模式中V-P交互问题》的文章,主要表达本人对于MVP模式下V|P关系,以及它们之间的交互应该采用怎样的原则和方式的看法。园子里的朋友对此展开了一些讨论,尤其是是一个叫做非空的朋友转述了另一篇文章提出的关于CAB中关于MVP模式的14条规则,和本人的观点有很多相似之处,当然也有一些不一致的地方。为此,在本篇文章中,就此进行一些必要的补充。
阅读全文
摘要:In my current project the MVP pattern is used in the supervising controller mode. The MVP pattern is an adaption of the old MVC pattern that incorporates that the capabilities of WinForms views have become smart enough to lift some of the burdens previously implemented in the controller. This applies to e.g. handling click events and data-binding; a presenter only injects the model into the view which
阅读全文
摘要:在《上篇》中,我通过一个具体的实例演示了WCF服务宿主的同步上下文对并发的影响,并简单地介绍了同步上下文是什么东东,以及同步上下文在多线程中的应用。那么,同步上下文在WCF并发体系的内部是如何影响服务操作的执行的呢?这实际上涉及到WCF的一个话题,即线程的亲和性,本篇文章将为你剖析WCF线程亲和机制的本质。
阅读全文
摘要:WCF并发体系下的同步机制是通过对InstanceContext进行加锁实现的,按照这样的理论,对于PerCall实例上下文模式,不论采用怎样的并发模式,服务操作应该是并发执行的;对于PerSession和Single实例上下文模式,如果采用Multiple并发模式,服务操作也应该是并发执行的。但是,一定是这样吗?
阅读全文