摘要: 照理说随着年纪的增加,一个人的情绪控制能力会随之增强。随着阅历的增加,心智的增强,会帮助一个更加“从容”地面对顺境与逆境——我一直觉得人生的最高境界就是“从容”二字)。同时也会使一个人能够一种包容的心态去看待和处理生活中一些“看不惯”的事情,而不会使这些影响自己的情绪。但是,我觉得自己年纪越大,却越来越激愤。每次看到一些不公、丑陋、恶心的事情,自己总是难以忍受,习惯性地表现出一些“过激”的行为。以下随便列举出一些事件...... 阅读全文
posted @ 2010-08-14 23:50 Artech 阅读(3707) 评论(46) 推荐(6) 编辑
摘要: 《天使之恋》是我最近看的一部电影,剧情大体是这样的:性格独立、长相可爱的女高中生理央内心有着无法抹去的阴影。由于这段惨痛的过去,她变得无法相信任何人,她只对金钱感兴趣,而且从来不和对自己没用的人交往。在17岁生日那天,理央邂逅了35岁的大学讲师光辉,有此坠入爱河。理央开始懂得如何去爱别人,渐渐发生了蜕变。然而命运却不愿让理央顺利获得重生。光辉虽然也爱理央,却无法接受她的爱.... 阅读全文
posted @ 2010-08-13 22:47 Artech 阅读(13473) 评论(12) 推荐(3) 编辑
摘要: WCF是一个具有极高扩展度的分布式通信框架。在WCF众多可扩展点中,CallContextInitializer可以帮助我们在服务操作执行前后完成一些额外的功能,这实际上就是一种AOP的实现方式。昨天,李永京同学问了我一个相关的问题,由此发现了一个基于自定CallContextInitializer的WCF扩展的严重问题。 阅读全文
posted @ 2010-07-27 12:15 Artech 阅读(4322) 评论(19) 推荐(7) 编辑
摘要: 之前园子里也有一些介绍企业库的文章,其中也不乏对Unity的介绍。虽然微软官方声称其为轻量级的IoC框架,但是并不意味着Unity会很简单。相反,也正是因为复杂性,很多人撰文介绍Unity的时候,往往为了面面俱到,导致很多读者不知所云。最终的结果是,了解Unity的读者能够看懂,不懂的人读了还是不懂。在本篇文章中,我试着换一种介绍方式:抓住Unity最本质的东西,剔除一些细枝末节,希望以一种全新的视角让读者了解Unity的本质。 阅读全文
posted @ 2010-07-13 22:39 Artech 阅读(18598) 评论(57) 推荐(70) 编辑
摘要: 最近园子里发表了一些讨论“事件(Event)”的文章,我也来凑个热闹,谈谈我对事件的一些粗浅的认识。本文不谈设计模式(主要是观察者模式),只从运行时的角度来分析事件这个对象到底是个什么东西?它有那么神秘吗?为了更好的分析事件,本文将会编写一些例子来模拟事件的订阅机制。本文对事件的分析可以概括为下面三句话:1.事件本质上是一个MulticastDelegate对象; 2.MulticastDelegate对象是多个Delegate对象的链表;3.Delegate = Object + MethodInfo,委托的执行最终通过反射来完成。 阅读全文
posted @ 2010-07-10 13:56 Artech 阅读(11892) 评论(29) 推荐(34) 编辑
摘要: 对于任何一个企业级应用来说,安全都是一个不可回避的话题。如何识别用户的身份?如何将用户可执行的操作和可访问的资源限制在其允许的权限范围之内?如何记录用户行为,让相应的操作都有据可查?这些都是应用的安全机制或者安全框架需要考虑的典型问题,它们分别对应着三个安全行为:认证、授权和审核。作为Windows平台下最完备的分布式通信平台,WCF具有一套强大的、完整的的可扩展安全体系,对上述的安全问题提供有效的支持。由于安全体系在整个WCF框架体系中具有极其重大的分量,在接下来的系列文章中,我将深入探讨这一块在我之前的文章中一直不曾触碰的境地 阅读全文
posted @ 2010-07-07 00:13 Artech 阅读(7458) 评论(31) 推荐(16) 编辑
摘要: Windows Communication Foundation (WCF) 中的可靠会话使用传输窗口保存客户端和服务上的消息。可配置属性 MaxTransferWindowSize 指示传输窗口可以保存多少条消息。在发送方,这指示在等待确认消息时传输窗口可以保存多少条消息,在接收方,则指示为服务缓冲多少条消息。选择合适的大小可影响使用网络的效率以及运行服务的最佳容量。 当编写一个允许从不同的客户端启用可靠会话通信的服务时,可能会有许多客户端同时建立与该服务的可靠会话。在这些情况下,服务的响应取决于 MaxPendingChannels 属性。当发送方创建到接收方的可靠会话通道时,发送方和接收方之间的握手将建立可靠会话。建立可靠会话之后,该通道会放入到挂起的通道队列中以供服务接受。此 MaxPendingChannels 属性指示有多少个通道可以处于此状态。 阅读全文
posted @ 2010-06-30 22:18 Artech 阅读(3856) 评论(5) 推荐(1) 编辑
摘要: 我每日坐5路地铁,从伽尼一站出来,都会看到一个没有头的人坐在路边,不时发出些古怪声响,引得途人侧目,他的面前,摆了只扁盒子,零散会有人丢几个硬币进去。 于这城里,这类表演是常见,无非是把肩下垫得很高,头缩下去,便看来效果了。尽管人皆心知肚明,但不免当下兴致,还有支付;或是孩子,不明就里,好奇大作,每每观析过多,父母不过意,扔几枚意思。 一日里,我一样经过这没有头的人,却有几个警察也过来,和他说了些什么。就在身旁,我不觉听了一下,大约是自这一日,上面下了新的时令,便是不得在街上行演了。 无头的人便释解起来,说是平日只是老实地坐在那里,并不妨碍行人;受来多少,任人自愿,从没纠缠;且是每日里收工,也把原地打扫一二,不留丝毫垃圾再去……。声音闷声闷气,从领子的洞里传出。 阅读全文
posted @ 2010-05-15 11:22 Artech 阅读(5627) 评论(20) 推荐(2) 编辑
摘要: 作为一个通信基础平台,WCF必须保证通信的可靠性。由于消息交换是WCF采用的通信手段,通信可靠性的保障体现在确保消息的可靠传输。由于网络环境的限制,网络层不能百分之百地确保对消息的有效交付。如何克服中间环节的制约,确保从一端发送的消息能够被有效地交付给另一端,这就是可靠消息传输需要解决的问题。WCF通过可靠会话实现了种种端到端的可靠消息传输。 阅读全文
posted @ 2010-05-13 21:20 Artech 阅读(13948) 评论(49) 推荐(26) 编辑
摘要: 上面一部分我们站在信道层的角度剖析了WCF为了实现可靠会话在信道层进行的一系列消息交换,或者说客户端和服务端的RS信道为了实现可靠消息传输所进行一轮又一轮的握手。这一切都是基于这样一个假设:两个RS信道均可以在适当的时机向对方发送消息,或者说两个RS信道之间是一个双工的通道。 如果我们站在传输层看待这个问题,该假设对于TCP传输是成立的,但是对于HTTP来说就有点问题了。HTTP本身就是一个基于请求|回复消息交换模式的应用层网络协议,并不能对双工通信提供支持。 阅读全文
posted @ 2010-05-05 21:21 Artech 阅读(5367) 评论(33) 推荐(7) 编辑
摘要: 本系列先后通过《实例篇》、《概念篇》、《协议篇》和《编程篇》对WCF的可靠会话进行了详细探讨。作为本系列的最后一片,我们将深入到WCF的可靠会话体系的最底层,对实现可靠会话的实现原理进行深入剖析。如果读者仔细阅读本系列博文,相信会使读者对可靠会话的理解提升到一定的高度。 从《编程篇》中,我们不难看出可靠会话的编程仅仅围绕着一个对象,那就是绑定。绑定在整个WCF架构模型具有重要的地位。WCF整个架构模型由两部分构成,即服务模型(Service Model)层和信道(Channel)层,而绑定是信道层的缔造者,同时也是连接两个层次的纽带。对可靠会话的实现,是完全在信道层实现的。 阅读全文
posted @ 2010-05-04 23:52 Artech 阅读(5293) 评论(35) 推荐(10) 编辑
摘要: 整个可靠会话的机制是完全在信道层实现的,而整个信道层的最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行的。《上篇》对实现可靠会话的绑定元素已经如何使用系统绑定实现可靠会话进行了介绍,下篇将和你探讨WCF可靠会话编程模型余下两个主题:自定义绑定和对消息传递的强制约束。 阅读全文
posted @ 2010-04-29 23:04 Artech 阅读(4744) 评论(10) 推荐(6) 编辑
摘要: 对WCF的可靠会话编程有一定了解的人应该知道,我们可以使用 DeliveryRequirementsAttribute 可以指示WCF确认绑定提供服务或客户端实现所需的功能。但是,当你使用该特性的时候,会出现一些很奇怪的现象。经过我个人的分析,这是WCF的一个Bug。 阅读全文
posted @ 2010-04-27 13:12 Artech 阅读(4156) 评论(16) 推荐(5) 编辑
摘要: 在《实例篇》给出的例子中,我们实际上是通过对终结点的绑定进行相应的配置让整个消息的交换过程在一个可靠会话中进行,进而实现可靠消息传输的目的。由于整个可靠会话的机制是完全在信道层实现的,而整个信道层的最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行的。本篇文章主要为你讲述基于绑定的可靠会话编程。 阅读全文
posted @ 2010-04-26 21:17 Artech 阅读(5783) 评论(19) 推荐(7) 编辑
摘要: 在《上篇》中,我们认识了从序列创建到终止过程中消息交换的大致流程。接下来,我们进一步将关注点聚焦到单个小消息上,看看在整个基于序列的上下文中,不同类型的消息具有怎样的结构 阅读全文
posted @ 2010-04-25 19:19 Artech 阅读(3323) 评论(21) 推荐(11) 编辑
摘要: 在《实例篇》中,我通过可靠会话实现了对图片的可靠、有序的传输;在《概念篇》中,我们对可靠消息涉及到的可靠消息传输(RM)的相关概念进行了讲述。在WS-*大家庭中,WS-RM为可靠消息传输提供了一个一个规范,使互操作成为可能。在《协议篇》中,我们侧重对WS-RM的介绍。 阅读全文
posted @ 2010-04-24 08:51 Artech 阅读(4730) 评论(9) 推荐(9) 编辑
摘要: 继EnterLib 4.1之后,微软P&P部门于几天前成功发布了最新版本的EnterLib 5.0。EnterLib 5.0没有增加新的Application Block,主要对现有Application进行了重构和加强,已经对配置的改进。最主要的还是通过IoC让整个EnterLib具有更好的可可扩展性。5.0并将Unity这个IoC容器融入了EnterLib中,并给你创建增加的IoC容器的机会。 阅读全文
posted @ 2010-04-23 10:49 Artech 阅读(7405) 评论(13) 推荐(11) 编辑
摘要: 服务(Service)的本质就是提供服务消费者期望的某种功能,服务的价值体现在两个方面:服务本身的质量和寄宿服务的平台应付消费者的数量,并发(Concurrency)的关注的是第二个要素。WCF服务寄宿于资源有限的环境中,要实现服务效用的最大化,需要考虑如何利用现有的资源实现最大的吞吐量(Throughput)。提高吞吐量就某个寄宿的服务实例(Service Instance)来说,一个重要的途径就是让它能够同时处理来自各个客户端(服务代理)的并发访问。WCF实现了一套完整的并发控制体系,为你提供了不同的并发模式。 我经常说软件架构是一门权衡的艺术,需要综合考虑各种相互矛盾的因素,找到一种最优的组合方式。提高单个服务实例允许的并发访问量能够提高整体吞吐量,这样的理论依赖于一种假设,那就是服务端所能使用的资源是无限。我们知道,这种假设无论在什么情况下都不会成立...... 阅读全文
posted @ 2010-04-22 19:11 Artech 阅读(15976) 评论(34) 推荐(16) 编辑
摘要: WCF支持不同的消息交换模式,比较典型的有以下三种MEP:One-Way、Request/Reply和Duplex。消息会被WCF的信道层发送到传输层,并通过相应的传输协议发送到目的地。但是HTTP协议,大家都知道它天生就基于Request/Reply模式的,那么它是如何能够突破自己的局限,为One-Way和Duplex消息交换模式提供支持呢? 阅读全文
posted @ 2010-04-21 18:16 Artech 阅读(4507) 评论(14) 推荐(8) 编辑
摘要: 在《实例篇》中,我通过可靠会话成功地进行了美女图片的传输,相信大家在保了眼福之余,会对WCF的可靠会话的功用具有一个深刻的认识。实际上,这涉及到WS中一个重要的概念——可靠消息传输(RM)。如果想对可靠会话有一个深入的认识,对可靠消息传输的了解是必须的。 阅读全文
posted @ 2010-04-19 23:59 Artech 阅读(5517) 评论(21) 推荐(21) 编辑
摘要: 通过前面一系列的博文,我对WCF的并发体系进行了深入的剖析,在接下来的博文中,我只要专注于WCF的可靠会话机制。作为一个通信基础平台,WCF必须保证通信的可靠性。WCF通过可靠会话实现了一种端到端的可靠消息传输。为了让读者对可靠会话的作用现有一个直观的认识,我们先来做一个很有意思的实例演示,这也是早年微软推广WCF技术频繁使用的案例:图片传输。 阅读全文
posted @ 2010-04-18 23:59 Artech 阅读(10850) 评论(91) 推荐(29) 编辑
摘要: 通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF框架体系内部,整个过程是如何实现的呢?这就是本篇文章需要为你讲述的内容。 阅读全文
posted @ 2010-04-14 18:51 Artech 阅读(5834) 评论(24) 推荐(8) 编辑
摘要: WCF是一个基于多线程的消息监听、接收和处理框架体系,能够同时应付来自相同或者不同客户端的服务调用请求。一方面,我们期望WCF服务端能够处理尽可能多的并发请求,但是资源的有限性决定了并发量有一个最大值。如果WCF不控制进入消息处理系统的并发量,试图处理所有抵达的并发请求,一旦超过了这个临界值,整个服务端将会由于资源耗尽而崩溃。 所以,我们需要在WCF的消息接收系统和消息处理系统之间设置一道道屏障,将流入消息处理系统的请求控制到一个最佳的范围,以实现对现有资源的有效利用,从而达到确保服务的可用性和提高整体吞吐量的目的。 阅读全文
posted @ 2010-04-13 22:55 Artech 阅读(7656) 评论(23) 推荐(13) 编辑
摘要: 之前写了一篇名称为《谈谈关于MVP模式中V-P交互问题》的文章,主要表达本人对于MVP模式下V|P关系,以及它们之间的交互应该采用怎样的原则和方式的看法。园子里的朋友对此展开了一些讨论,尤其是是一个叫做非空的朋友转述了另一篇文章提出的关于CAB中关于MVP模式的14条规则,和本人的观点有很多相似之处,当然也有一些不一致的地方。为此,在本篇文章中,就此进行一些必要的补充。 阅读全文
posted @ 2010-04-12 23:56 Artech 阅读(9149) 评论(59) 推荐(20) 编辑
摘要: 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 阅读全文
posted @ 2010-04-12 16:39 Artech 阅读(2589) 评论(1) 推荐(1) 编辑
摘要: 在《上篇》中,我通过一个具体的实例演示了WCF服务宿主的同步上下文对并发的影响,并简单地介绍了同步上下文是什么东东,以及同步上下文在多线程中的应用。那么,同步上下文在WCF并发体系的内部是如何影响服务操作的执行的呢?这实际上涉及到WCF的一个话题,即线程的亲和性,本篇文章将为你剖析WCF线程亲和机制的本质。 阅读全文
posted @ 2010-04-08 19:40 Artech 阅读(5717) 评论(18) 推荐(6) 编辑
摘要: WCF并发体系下的同步机制是通过对InstanceContext进行加锁实现的,按照这样的理论,对于PerCall实例上下文模式,不论采用怎样的并发模式,服务操作应该是并发执行的;对于PerSession和Single实例上下文模式,如果采用Multiple并发模式,服务操作也应该是并发执行的。但是,一定是这样吗? 阅读全文
posted @ 2010-04-07 23:22 Artech 阅读(7520) 评论(12) 推荐(11) 编辑
摘要: 对于正常的服务调用,从客户端发送到服务端的请求消息最终会被WCF服务运行时分发到实例上下文中。对于回调场,回调对象也是封装到实例上下文中,并将其封送到客户端。服务调用与回调,并没有本质的不同。本篇文章讲通过《实践重于理论》中的实例,综合分析WCF对并发服务调用和并发回调的处理机制。 阅读全文
posted @ 2010-03-31 18:41 Artech 阅读(6237) 评论(19) 推荐(5) 编辑
摘要: 由于WCF的并发是针对某个封装了服务实例的InstanceContext而言的,所以在不同的实例上下文模式下,会表现出不同的并发行为。本篇文章将以以实例演示加原理分析相结合的方式对不同实例上下文模式下的并发实现机制进行深度剖析... 阅读全文
posted @ 2010-03-30 20:17 Artech 阅读(7111) 评论(15) 推荐(15) 编辑
摘要: “异常处理对于最终的开发人员是透明的”,就我个人的项目经验来讲,这是一种理想的状态。由于异常策略是一般是通过配置动态配置的,不需要反映在代码上面。如果能够通过框架的方式提供异常处理的实现,使开发人员无需编写任何异常处理的代码,只需要关注业务流程的实现就可以了,这不仅能够提高开发的效率,也能够提高系统的可维护性。 阅读全文
posted @ 2010-03-26 21:33 Artech 阅读(19436) 评论(92) 推荐(73) 编辑
摘要: 在差不多两年的时间内,我们项目组几十来号人都扑在一个项目上面。这是一个基于SCSF的项目,客户是墨尔本一家事业单位。前两周,我奉命负责对某个模块进行审核工作,在此期间,发现了一些问题,也有了一些想法。不过,有些想法可能还不是很成熟,不能完全保证其正确性,有机会写出来讨论一下。今天来说说关于MVP的一些想法。 阅读全文
posted @ 2010-03-25 22:38 Artech 阅读(20634) 评论(73) 推荐(51) 编辑
摘要: 由于WCF的并发是针对某个封装了服务实例的InstanceContext而言的,所以在不同的实例上下文模式下,会表现出不同的并发行为。接下来,我们从具体的实例上下文模式的角度来剖析WCF的并发处理机制。为了使读者对采用不同实例上下文对并发的影响有一个深刻的认识,会创建一个简单的WCF应用,并在此基础上添加监控功能,主要监控各种事件的执行时间,比如客户端服务调用的开始和结束时间,服务操作开始执行和结束执行的时间等等。读者可以根据实时输出的监控信息,对WCF的并发处理情况有一个很直观的认识。 阅读全文
posted @ 2010-03-22 19:19 Artech 阅读(8482) 评论(13) 推荐(13) 编辑
摘要: 正如您可能所了解的那样,多个微软 Windows版本在未来一年内将渐渐退出并不再提供技术支持.Windows 2000 Professional and Windows 2000 Server 自它发布之日起已经差不多10年,微软将于2010年7月13日结束支持。 Windows XP于2001年发布。对 Windows XP的支持还将继续,但是Service Pack 2将于2010年7月13日结束支持。至此,微软将不再提供对Windows XP SP2免费安全更新。需要获得Windows XP平台持续的技术支持,需要安装Windows XP SP3. 不包含Service Packs的Windows Vista将于2010年4月13日结束支持,如果需要在Windows Vista平台的持续支持,必须安装Windows Vista Service Packs 2. 阅读全文
posted @ 2010-03-22 12:36 Artech 阅读(2589) 评论(4) 推荐(2) 编辑
摘要: 在《WCF 并发的本质》中,我们谈到了WCF提供的三种不同的并发模式,使开发者可以根据具体的情况选择不同的并发处理的策略。对于这三种并发模式,Multiple采用的并行的执行方式,而Single和Reentrant则是采用串行的执行方式。串行执行即同步执行,在WCF并发框架体系中,这样的同步机制是如何实现的呢? 阅读全文
posted @ 2010-03-21 18:49 Artech 阅读(9034) 评论(10) 推荐(11) 编辑
摘要: 并发的含义就是多个并行的操作同时作用于一个相同的资源或者对象,或者说同一个资源或者对象同时应付多个并行的请求。对于WCF的并发来说,这里将的“资源或者对象”指的就是承载服务操作最终执行的服务实例。而WCF将服务实例封装在一个称为实例上下文对象中,所以WCF中的并发指的是同一个服务实例上下文同时处理多个服务调用请求。 阅读全文
posted @ 2010-03-19 20:33 Artech 阅读(18242) 评论(50) 推荐(19) 编辑
摘要: [续《上篇》]TransactionFlow选项通过TransactionFlowAttribute这个操作契约写入绑定上下文,由事务绑定创建的事务信道获取该选项并以此作为首否对事务实施传播(发送或者接收)的依据。但是整个WCF事务还有一个重要的步骤需要实现:如何将通过OperationBehaviorAttribute特性标记为TransactionRequired的操作的执行自动纳入到流入的事务之中。接下来,我们就来着重讨论这个问题。 阅读全文
posted @ 2010-03-18 19:32 Artech 阅读(3231) 评论(17) 推荐(6) 编辑
摘要: WCF事务编程主要涉及到这么三个方面:通过服务(操作)契约确定TransactionFlow的策略;通过事务绑定实现事务流转;通过服务操作行为控制事务的自动登记(Enlistment)行为,以及对事务超时时限、隔离级别和实例行为的设定。那么,在WCF内部这三者之间究竟是如何通过相互协作实现分布式事务的呢?这就是本篇文章所要讲述的内容 阅读全文
posted @ 2010-03-17 18:56 Artech 阅读(3824) 评论(18) 推荐(7) 编辑
摘要: 在完成了对于WCF事务编程(《上篇》、《中篇》、《下篇》)的介绍后,本篇文章将提供一个完整的分布式事务的WCF服务应用,通过本例,读者不仅仅会了解到如何编程实现事务型服务,还会获得其他相关的知识,比如DTC和AS-AT的配置等。 阅读全文
posted @ 2010-03-16 19:04 Artech 阅读(5368) 评论(65) 推荐(8) 编辑
摘要: 在WCF事务编程模型下,通过服务契约确定事务流转的策略(参阅《上篇》),通过事务绑定实施事务的流转(参阅《中篇》)。但是,对于事务绑定接收到并成功创建的事务来说,服务操作的执行是否需要自动登记到该事务之中,以及服务操作采用怎样的提交方式,这就是服务端自己说了算了。 阅读全文
posted @ 2010-03-15 00:48 Artech 阅读(4444) 评论(5) 推荐(9) 编辑
摘要: 续《上篇》]通过将TransactionFlowAttribute特性应用在服务契约的某个操作之上,并指定相应的TransactionFlowOption枚举直,仅仅定义了事务流转的策略而已。至于WCF框架是否有能力对事物进行流转,按照怎样的协议进行流转,则是通过绑定实现的,本篇着重介绍绑定对事务流转的支持. 阅读全文
posted @ 2010-03-12 19:40 Artech 阅读(4753) 评论(11) 推荐(10) 编辑