专访开源项目Amoeba架构师陈思儒
DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。
作者 Niclas Nilsson译者 胡键 发布于 2007年8月24日 上午5时11分
面向模式软件架构(POSA)系列的第4卷和第5卷已经出版了。卷4是关于分布式计算的模式语言,而卷5则“深入审视模式是什么,不是什么,以及怎样成功地使用它们”。
InfoQ采访了最新卷的合著者之一Kevlin Henney,讨论了POSA系列的最新两本书。我们询问Kevlin:两本书怎么会几乎同时出版?
最初的打算是只有一本书,其内容按照POSA 5的想法来组织。这个想法是,介绍书写和组织模式的概念、原则及技巧,我们通过一个大的例子来说明:用于分布式计算的模式语言,并附带一个模式故事(pattern story),在实践中说明它的应用。
正如你猜到的,这将会是一部非常厚的书!
POSA4是关于分布式系统的——该书关注哪些类型的分布式系统呢?
……我们试图编写那些可在经典的RPC风格系统、当代的Web应用、基于消息的系统、经典的N层系统、移动计算等系统中找得到的范围广泛的架构概念。我们特别关注于那些已被实践证明的架构和架构知识……我们覆盖了应用和中间件架构,并对新系统开发及现有系统的后续开发都有兴趣。
本书的风格不同于前几卷。POSA4描述了114个模式,而前3卷总共才包含了44个模式。前几卷对每个模式进行了深入地探讨,但是因为POSA4的大多数模式已在其它著作中发表,因此模式的细节不再作为重点,取而代之的是模式间的关系。
相比之下,POSA4意图给架构师和开发者提供的一个更广的、宏观的模式视图,这些模式涉及到当代分布式计算架构中应用的模式。重点是模式是如何关联的,其中包括一个模式实现另一个的细节或为另一个提供替代选择,因此这意味着联系才是重点,从而减少了每个模式的细节。
然而,更少的细节并不必然意味着令每个模式的核心概念变得失真:
模式并不会因为本身的简洁而变得不精确——在某些情形下,它们的描述还更准确了--而是它们被概括并忽略了很多不必要的细节。
为了保持每个模式描述的简洁,本书使用草图和伪代码代替了UML图和完整的C++或Java例程。对于想深入了解特定模式的读者,它提供了参考。
我们询问Kevlin:他是否觉得有一些特殊的模式被遗忘或被误解了,而它们对于能出现在本书中将会感到非常高兴?
有些模式是非常的不引人注目,但是它们在现代设计方法中具有某种重要且非常有影响的地位。
首先一个,我们称之为显式接口(Explicit Interface),它本质上是一个分离单独接口的概念,将它完全从它的实现中解耦。这种方法适合声明类型系统并自从RPC时代就存在,而且我们发现它在现代静态类型语言中非常普遍,即‘接口(interface)’结构。然而,显式接口模式的关键点是设计敏感度,其背后使用了某种机制并聚焦于关注点的分离。不顾近些年来基于接口的编程的增多,许多程序员仍然使用纯接口(不论是以“接口”结构的形式,还是按照全抽象类的方式),以一种更多不必要的耦合方式,如果这也算面向接口编程的话。
第二个是关于上下文对象(Context Object)。和接口的想法类似,上下文对象的想法已经存在很长时间了(它现身于Scheme的eval过程中,并可在四人帮的解释器(Interpreter)模式中找到踪迹),但它最近才被记录并陈诉其有权作为模式的理由。POSA4中的详细描写只是许多不同的详细说明(其中有我的一个,另一个则是Doug的!)中最新的一个。上下文对象可以使用执行细节(如配置、证书、查找服务等)参数化一个对象、组件或整个子系统,使之独立于系统的其它部分。这种分离提高了组件间的独立性,简化了测试,排除了一类问题,以及/或在多线程环境中可能遇到的执行瓶颈。它常常被视为使用Singleton之后带来的许多问题的解毒剂(并且,作为题外话,Singleton是我们没有包含在本书中的一个模式:->)。
第5卷也是本系列的最后一卷书,是关于模式和模式语言。它显示了如何记录、组织和使用模式;如何建立模式间的关系,以及如何将这种关系转变成模式语言。
在POSA5之前,模式的概念性讨论分散在模式社区内外的许多著作和不同人的脑袋中。那些展示了模式集合的每一本书、论文或展示都使用不同观点介绍了模式概念,它们之间或多或少的有些不同。不同的来源侧重不同的方面的不同重点,例如模式发生的上下文、模式语言的使用、模式中的各种驱动力的角色,模式的社会或技术目标等等。
Kevlin总结说:
POSA5 [……]是写给那些有兴趣进一步探索模式概念的实践者的。换句话说,这本书的目标读者是,那些已经以某种形式接触过模式——不论是通过GoF、POSA、Core J2EE,还是通过其他方式——并想更多了解模式的人。
查看英文原文:Pattern Oriented Software Architecture Volumes 4 and 5 released
DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。
作为三期系列文章的第二部分,本文延续了上一期内容,介绍了RichFaces,包括如何把RichFaces集成到之前提到的示例应用中、如何部署RichFaces porlet和RichFaces的多种特性和功能。
Amazon Web Services(AWS)的传道者Jeff Barr讨论了SimpleDB、S3、EC2、SQS、云计算、Amazon的不同服务如何与应用交互、AWS的起源、SimpleDB和微软SQL Server Data Services、AWS cloud的全球化、三月份的AWS停机。
Erlang的并发模型很有名,它的健壮性也很有名。但其他方面呢?在这篇文章里,Dennis Byrne演示了如何用Erlang建立内部DSL。
本视频主要以FreeWheel为例,对一个基于Rails的企业级应用进行了剖析。其中包括:FreeWheel的架构、部署、数据库的问题、REST API、敏捷开发过程、如何去写测试以及持续集成等等。
JavaFX显示了Sun的Java系列产品市场方向的一个重大转变。随着1.0版的即将发布,InfoQ以JavaFX预览版为参考,与Sun高级工程师Joshua Marinacci探讨了即将发布的1.0正式版。
本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。
没有回复
回复