基于web的应用的架构
基于网络的架构和软件的架构的主要区别通常是:组件之间的通讯仅限于消息传递或者消息传递的等价物。
基于网络的架构的关键的架构属性:
1.性能
组件交互对于用户可觉察的性能及网络效率来说是个决定性的因素,所以选择一个好的架构风格是决定一个基于网络的应用部署的成败。一个基于网络的应用的性能首先取决于应用的需求,然后是所选择的交互风格,然后是实现的架构,最后是每个组件的实现。
包括网络性能、用户可察觉的时间、网络效率。
2.可伸缩性
可伸缩性表示在一个主动的配置中,架构支持大量的组件或大量的组件之间交互的能力。可伸缩性能够通过以下方法来改善:简化组件、将服务分布到很多组件(分散交互)、以及作为监视的结果对交互和配置进行控制。
3.简单性
通过架构风格来导致简单性属性的主要方法是,对组件之间的功能分配应用分离关注点原则(principle of separation of concerns)。如果功能分配使得单独的组件足够简单,那么它们就更容易被理解和实现。同样地,这样的关注点分离也使得关于整体架构的推理任务变得更加容易。
4.可修改性
可修改性是对于应用的架构所做的修改的容易程度。可修改性能够被进一步分解为在下面所描述的可进化性、可扩展性、可定制性、可配置性和可重用性。
5.可见性
可见性是指一个组件对于其他两个组件之间的交互进行监视或仲裁的能力。可见性能够通过以下方式改善性能:交互的共享缓存、通过分层服务提供可伸缩性、通过反射式监视(reflective monitoring)提供可靠性、以及通过允许中间组件(例如,网络防火墙)对交互做检查提供安全性。
6.可移植性
如果软件能够在不同的环境下运行,软件就是可移植的。会导致可移植性属性的风格包括那些将代码和代码所要处理的数据一起移动的风格,例如虚拟机和移动代理(mobileagent)风格;以及那些限制只能使用标准格式的数据元素的风格。
7.可靠性
从应用的架构角度来说,可靠性可以被看作当在组件、连接器或数据之中出现部分故障时,一个架构容易受到系统层面故障影响的程度。架构风格能够通过以下方法提高可靠性:避免单点故障、增加冗余、允许监视、以及用可恢复的动作来缩小故障的范围。