软件架构:软件Software架构训练的层次及使用

  在上文中我介绍了Internet技术WEB服务在家够方面给了我们更多选择但软件Software设计中采用何种架构仍然是件令人头痛事情

  两层系统(图12)允许用户界面和应用代码直接访问数据库和网络存储API应用使用数据库中存储数据模型但是不需要在该模型的上建立逻辑模型当开发中系统是个原型系统或者已经知道其生命周期较短期间API不会发生变化时候两层应用是理想典型情形下这种方式用于小型应用它们开发成本和时间都很少

  软件Software架构训练的层次及使用

  图12.两层架构

  此外两层系统对于面向组件开发环境也有意义这种方式用在特定组件实现的中组件接口提供了个隔离层和这种方式后果相反使用脚本语言建立多数应用都属于这这种情况下多架构层开发可能非常麻烦不切实际

  最后两层方式将提供更好性能并减少控制资源锁定机制需求尽管两层模型在处理多个并发用户使用应用方面能力有些欠缺但是它简单性可能远远优于其它选择此外通过向数据库应用添加通用数据处理常常能用数据存储过程来消除些简单共享数据问题

  随着数据库发展 3层(Three-tier)应用已经很普通了 3层系统(图13)满足了执行隔离需求它基本上对于存储/数据库层可能被修改任何应用系统都是理想但是这种技术隔离并不仅限于数据库它能够并且应该用在任何不要求应用开发者或更重要应用维护人员对于最低层有详细了解就能共享代码环境

  软件Software架构训练的层次及使用

  图13. 3层架构

  相当频繁重复使用是个主要设计考虑原因在这种情形下需要建立应用模型以允许它部分被多个用户界面查看组件重复使用它有个指导方针是在应用需要相同数据多个视图任何时候开发者应该考虑使用 3层方式代替两层方式

  从两层模型迁移到 3层模型需要考虑主要问题包括适当网络资源可用性和管理并发数据访问加锁方案

  作为越来越强调网络计算结果最近出现了种新趋势就是 4层系统(图14)当应用层需要支持高级行为时候可以考虑 4层系统 4层模型和 3层模型相似但是其应用层被分解为表现层和对话层表现层呈现了应用模型视图部分以及被特定视图操作所约束应用逻辑对话层处理表现组件的间资源共享问题包括和潜在分布式业务对象模型通讯

  软件Software架构训练的层次及使用

  图14. 4层架构

  当表现组件的间需要大量协调并且需要在它们的间共享很多资源时候就需要 4层开发方式例如由于性能问题缘故缓冲是必要对话层允许很多区别表现组件利用缓冲提供性能优势

  同样如果某个客户端被迫作出多个、潜在复杂分布式结论就可以考虑把这种逻辑封装到应用个对话层中

  很多原因表明考虑 4层开发方式需求为数众多很明显任何 4层系统预期生命周期很长已有组件和子系统重复使用对于引发和 4层系统相关费用来说通常都是足够充分理由同样预计个别组件会频繁改变设计目标环境需要把系统主要部分和组件实现中变化隔离开来 4层方式提供了对随技术发展(包括传统和新技术)组件和子系统不断地移植支持此外 4层系统比 3层系统更容易升级

  其它些考虑原因包括组件可靠性是未知或可变系统在间歇性组件失败中 4层系统可以轻易地合并运行时发现机制(runtime discovery mechanisms)以切换到区别组件实现上有 4个或多个层次很多复杂系统最少提供了发现新能力(例如涉及到新Web服务实现时它们就实现了UDDI记录)些能力如果环境利用了多个、潜在地冲突技术 4层系统提供了用于管理对话管理层(session management layer)或业务域对象层中差异机制同样如果客户端有多种区别应用模型而这些模型都需要共享共同数据资源那么 4层模型也可能是理想经常地在其它应用组件不希望阻塞并等待资源不得不在对话层中管理客户端访问环境中应用组件允许业务域组件处理资源管理问题并能够经受得住等待大多数资源

  对等(peer-to-peerP2P)架构方式对于多数需要高度可升级系统是理想同样当分布式组件需要协调完成某种事务并且通讯以及其它组件可靠性可能变化时候它们也是有用在开发P2P系统时候操作环境很容易被理解是非常重要不好习惯可能导致重大灾难同样当使用P2P技术时候接口标准化和不允许修改也是很重要被迫应付多个P2P网络不兼容版本简直是个梦魇

  N层和/或这些方式组合(图15)应该仅仅用于十分复杂、由多个软件Software生命周期区别子系统和组件构成系统这对于大多数大型区别种类企业系统是真实在这种情况下在任何时候组件都在升级、更换或添加对于这种系统考虑事项必须通知系统组件管理部门

  软件Software架构训练的层次及使用



  图15.N层和对等架构组合

  哪些特性值得使用复杂N层系统呢?通常它包括管理用于增强用户体验大量数据系统其需求可能包括记载了用户概要信息、允许用户设置参数控制Web页面和应用、管理复杂安全需求(例如用于控制资源访问控制列表)、允许用户要求后端应用存储管理和规则执行进行改变等些Web站点和应用

  有了N层应用应用功能被分解为大量逻辑层它们可以分开维护和配置每个层次功能没有 3层应用那么标准并且经常把很多层合并成组来提供表现、应用和/或业务逻辑和存储管理功能支持多个层次主要优点是更容易修改某个层次而不需要改变很多层次(在大多数情形中不需要改变其它任何层次)此外通过变更个或多个层次分布或载入应用能够被扩大为处理大量用户负载和/或数据通常这种缩放对于其它层次是透明在很多情况下还是自动实际上多层架构被设想为跨多个计算机和处理器分布而不是在某个应用中定义软件Software边界



Tags:  五笔训练软件 打字训练软件 软件架构设计 软件架构

延伸阅读

最新评论

发表评论