Pennant的日常
分享工作上的点点滴滴
摘要: 3.3异步完成标记(Asynchronous Completion Token, ACT)1.问题 当一个客户机应用程序异步地调用对一个或几个服务的操作请求时,每个服务通过一个完成事件将其响应返回给应用程序。然后应用程序必须向相应的处理程序多路分解该事件。处理程序可以是一个函数或对象,用于处理包含在完成事件中的异步操作响应。要有效地解决这个问题,需要考虑以下3个强制条件: ·一个服务可能不知道客户机应用程序异步地调用其操作时所处的语境。因此,客户机应用程序而不是服务器必须负责确定如何将完成事件多路分解给被指派去处理它的处理程序。 ·要确定在异步操作完成执行后客户机如何多路分 阅读全文
posted @ 2012-09-18 08:57 汝熹 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 2.3主动器(Proactor)1.问题 异步处理多个服务请求通常可以改善分布式系统中的事件驱动应用程序的性能。完成异步服务处理后,应该程序必须处理由操作系统发出的表示异步计算结束的相应的完成事件。要有效地支持这种异步计算模型,需解决以下四个强制条件: 1)为了改进可扩展性和延迟性能,一个应用程序必须在禁止耗时长的操作过分地延迟其他操作处理的情况下同时处理多个完成事件。 2)为了使吞吐率最大,应避免CPU之间的任何不必要的语境切换,同步和数据移动。 3)将新的或改进的服务与已有的完成事件多路分解与分配机制集成所花的代价要最少。 4)应用程序代码应尽量不受多线程和同步机制复杂性的影响。2.解决方 阅读全文
posted @ 2012-09-15 08:20 汝熹 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 事件处理模式 使用反应器(Reactor)结构化模式,事件驱动的应用可以多路分解并分配从一个或者多个客户机发送给应用的服务请求。反应器模式引入的结构“逆转”了应用中的控制流,这就是所说的好莱坞原则(“不要打电话给我们,我们会打电话给你的”)。然而它的事件分解是串行的。 主动器(Proactor)结构模式使事件驱动应用能有效地多路分解和分配由完成的异步操作所触发的服务请求。能获得并发的性能优势。 异步完成标记(Asynchronous Completion Token)设计模式使应用程序能对它在服务中调用异步操作而引起的响应进行有效地多路分解和处理。 一旦完成了连接和初始化,接受器-连接器(Ac 阅读全文
posted @ 2012-09-13 09:03 汝熹 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 2.4扩展接口(Extension Interface)1.问题 适应应用程序需求的改变常常需要对组件功能的修改和扩展。有时可以在发布组件给应用程序开发人员之前预计到所有的接口的改变。如果不能仔细处理这些改变的话,它们就会破坏现有的使用组件的代码。为了避免这些问题,把组件设计为支持预料到与预料不到的改进也许是必需的。这要求解决以下4种强制条件: 1)当组件接口没有改变时,对组件实现的修改应不破坏现有的客户机代码。 2)当开发人员用外部可见的新服务扩展组件时,不应破坏现有的客户机代码。理想情况下,应该没有必要重新编译客户机代码。 3)组件功能的改变或者扩展应该是相对直接的,既不膨胀现有的组件接口 阅读全文
posted @ 2012-09-10 08:56 汝熹 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 2.3截取器(Interceptor)1.问题 框架,应用服务器和针对具体领域的软件架构,不能预先知道它们必须提供给用户的所有服务。使用最初设计时并不支持的新服务来扩展某些类型的框架也会是不灵活的。类似地,依靠应用程序自己实现所有必需的服务常常是不理想的,因为这样做破坏了复用的许多好处。因此,框架开发人员必须处理下列三种强制条件: 1)在不需修改核心架构的情况下,架构应允许集成附加服务。 2)把与应用有关的服务集成到框架中,应不影响现有的框架组件,也应不需要对使用框架的现有应用程序的设计或实现做改变。 3)使用框架的应用程序也许需要监视和控制框架的行为。2.解决方案 通过预定义的接口向框架注册 阅读全文
posted @ 2012-09-07 22:21 汝熹 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 2.2组件配置器(Component Configurator)1.问题 由组件构成的应用程序必须提供一种机制,把这些组件配置到一个或多个进程中去。解决这个问题受到三种强制条件的影响: 1)在许多系统和应用程序中,组件功能或者实现细节的改变是很普遍的。对一个组件的修改应该对使用它的其他组件的实现有最小的影响。 2)开发人员在开发应用程序时,常常并不知道最有效地配置或者分布多个组件到进程和主机中的方法。如果开发人员过早地专注于组件的特殊配置,那么这也许会破坏灵活性,降低整个系统的性能和功能特性,并且不必要地增加资源的使用。 3)执行类似组件的配置、初始化和控制这样的普通管理任务应该是直接的,并且 阅读全文
posted @ 2012-09-05 09:02 汝熹 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 服务访问和配置模式 包装器外观(Wrapper Facade)设计模式把现有的非面向对象的API所提供的函数和数据,封装在更加简洁的、健壮的、可移植的、可维护的和内聚的面向对象的类接口里面。常常应用包装器外观“包装”更低层操作系统API来提高应用程序的可移植性。它也能减轻与使用低层API编程有关的偶发的复杂性。 组件配置器(Component Configurator)设计模式允许应用程序在不必修改,重新编译或者静态地重新链接的情况下,在运行时链接和解链它的组件实现。 截取器(Interceptor)体系结构模式允许透明地把服务加入框架中,并且当事件发生时,能自动地触发服务。因此,截取器为它自 阅读全文
posted @ 2012-09-01 08:32 汝熹 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 2.3并发 并发是涉及一系列策略和机制的术语,这些策略和机制能使一个或多个线程或者进程同时执行它们的服务处理任务。许多网络化应用程序,尤其是服务器,必须并发地处理从多个客户机来的请求。 现代操作系统通过提供多线程的并发机制克服了单线程的进程的局限,此机制支持多个进程的创建,并且每个进程都可以包含有多个并发的线程。在这些操作系统中,在硬件保护的地址空间内,进程作为保护和资源分配单元,线程作为执行单元。有以下优点: 1)它们使用硬件和软件平台的并行处理能力,透明地提高性能。 2)它们允许编程人员重叠计算和通信服务处理,明显地提高性能。 3)它们通过在一个应用程序中用独立的线程与不同的服务处理任务相 阅读全文
posted @ 2012-08-30 09:09 汝熹 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 一、并发和网络化对象1.动机 硬件发展的快速与软件发展的缓慢之间的不匹配有许多因素: 1)固有的和偶发的复杂性。固有的复杂性来源于基本的领域难题,例如处理部分失效、分布式死锁和端到端的服务质量(QoS)需求。偶发的复杂性来源于软件工具和开发技术的局限,例如不可移植的编程API和拙劣的分布式调试器。 2)不适当的方法和技术。流行的软件分析方法和设计技术主要集中于构造单进程、单线程应用。而高质量的并发和网络化系统的开发,则要靠熟练的软件体系结构设计者和工程师的直觉和专门知识。 3)不断地重复发明和重新发现核心概念和技术。 模式是一个在特殊的语境下,对一个标准问题的重现的解决方案,模式有助于在软件设 阅读全文
posted @ 2012-08-28 08:53 汝熹 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 模式系统 模式并不是孤立存在的——它们之间相互依赖,模式系统将它的组成模式捆绑在一起。 软件体系结构的模式系统是一个软件体系结构模式的汇集,它包括模式在软件开发中实现、组合和实际使用的指南。软件体系结构模式系统的主要目标是支持高质量的软件系统开发。所谓“高质量”是指系统既实现其功能需求又实现其非功能需求。为了达到这个目标,一个模式系统必须满足以下的需求: 1)应该包括足够的基本模式。我们需要可以用来详细描述系统基本结构的模式,可以支持我们细化系统的模式,可以帮助我们用具体的程序设计语言来实现软件体系结构的模式。 2)应该统一描述它所有的模式。描述的形式必须既捕获模式的本质又对其细节进行准确叙述 阅读全文
posted @ 2012-08-24 08:46 汝熹 阅读(344) 评论(0) 推荐(0) 编辑