Fielding博士论文导读----第2章

在第二章中,Fielding精确定义了与基于网络的应用架构相关的各种架构属性。

架构可以存在于软件系统的多个层次,电脑的BIOS有自己的架构、显示卡的设备驱动程序有自己的架构、操作系统有自己的架构,应用程序也有自己的架构。一篇关于Web基础架构的论文不可能无所不包,有必要提前限定论文所讨论的架构的范围。基于网络的应用架构就是这篇论文中讨论的架构的范围。这是软件架构最高层次的抽象,在这里组件之间的交互能够通过网络通信来实现。基于网络的应用通常来说就是那些需要跟网络打交道的应用,这类应用通常包括客户端和服务器端两部分,它们合在一起才构成了一个完整的应用。基于网络的应用并不包括那些构成网络本身协议栈一部分的软件,仅包括使用这些协议软件的应用软件。

Fielding在这一章中提出了自己的对于不同的架构加以评估和比较的方法。这种方法就是识别出某个架构中存在的架构约束,判断出每个约束将导致哪些架构属性,并且将累积的架构属性与那些应用要求的架构属性进行比较。如果这些累积的架构属性符合应用的要求,则说明这种架构对于该应用来说是合适的。

这是一种非常好的评估架构优劣的方法,当然,每种架构都有其适用场合,并不存在绝对的优劣。但是当针对某个特定的应用而言时,则可以区分出哪些架构是适合的,哪些架构是不适合的。作为一名软件架构师,长期以来我感到最苦恼的就是缺乏一种客观评估和比较各种架构的方法。很多不称职的架构师往往喜欢偷懒,结果就是Design by buzzword的盛行。几年前在J2EE开发领域最典型的例子就是言必称分布式,似乎分布式就是企业应用皇冠上的明珠,随便什么应用都要使用EJB来开发,而且要把J2EE设计模式用足用全,否则出门特没面子。这当然是胡扯了,企业应用皇冠上的明珠什么时候也轮不上分布式,事实上还应该尽量避免建造分布式应用。企业应用真正重要的永远是数据和流程。这种情况已经成为历史了,但是出现这种情况的主要原因就是普通的开发人员,甚至是有多年开发经验的架构师也没有能力来对各种架构进行细致的比较分析。Fielding在第2章中最大的贡献就是提出了对于各种架构进行评估和比较的根据,这个根据就是各种架构属性。架构属性虽然还没有达到定量的层次,但是已经足以在定性的层次对于各种架构进行客观的评估和比较。

而从架构的层面识别出架构的约束还是不够的,应该从更高层架构风格的层面识别出架构的约束。因为对于同一类架构风格的架构而言,它们所具有的架构约束和由这些架构约束导致的架构属性往往是相同的。通常情况下,不仅仅是单一的架构不适合某个特定的应用,而是这种架构所属架构风格的所有的架构都不适合某个特定的应用。例如,如果CORBA不适合用来连接Web应用的客户端和服务器端,那么EJB同样也不适合。而我们在第一章中已经看到,按照Fielding的定义,架构风格正是由一组相互协作的架构约束组成的。

那么对于基于网络的应用,我们到底应该关心哪些架构属性呢?Fielding精确定义了以下这些重要的架构属性:
性能(Performance)
可伸缩性(Scalability)
简单性(Simplicity)
可修改性(Modifiability)
可见性(Visibility)
可移植性(Portability)
可靠性(Reliability)

其中,性能又可以分为网络性能(Network Performance)、用户可觉察的性能(User-perceived Performance)、网络效率(Network Efficiency)
可修改性又可以分为可进化性(Evolvability)、可扩展性(Extensibility)、可定制性(Customizability)、可配置性(Configurability)、可重用性(Reusability)。

这些架构属性构成了评估和比较各种架构的度量标准,根据某种架构中存在的架构约束对于这些架构属性的影响(正面/负面)来对这些架构加以评估,可以得到客观和精确的结论,判断出某种架构是否适合某个特定的应用。

Fielding所提出的方法,是我迄今为止看到过的最清晰、可操作性最强的研究方法。这种研究方法不仅对于Web应用是重要的,对于任何软件架构研究者和设计师来说都非常重要。Fielding不仅是Web的缔造者之一,也可以称的上是软件架构研究方面的大师。我们在论文后面的章节还会看到更多精彩的内容。

你可能感兴趣的:(应用服务器,网络协议,网络应用,企业应用,performance)