26

要设计良好的架构,必须做到关注点分离,这样可以产生高内聚、低耦合的系统,这是美丽架构的终极原则。

文 / 王海鹏

 什么是架构? 每个人可能都有自己对架构的定义。我比较喜欢的定义是:“架构是系统的组成部件及其之间的相互关系。”根据观察者的视角不同,架构又可以分为业务架构和技术架构。一般来说, 功能性需求会对业务架构产生影响, 而非功能性需求会对技术架构产生影响。

例如:“注册用户可以向自己的相册上传图片,并与好友分享”。这是一项功能性需求。它告诉了我们在系统的业务架构中,会出现“注册用户”“相册”、“图片”、“好友”等组成部件,它们之间存在着相互关系。而“系统可以支持10万并发用户,并在需要时可以方便地伸缩,扩展到支持100万到1000万的并发用户”,则是一项非功能性需求。它告诉了我们系统在性能、负载、吞吐量、可伸缩性方面的特性,目标系统的架构必须对这些特性提供支持。

架构体现的是对复杂系统的分解设计。而如何进行分解,则是软件设计领域永恒的话题。实际上,架构体现的是关注点分离的原则和方法。经典的三层架构,由展现层、业务逻辑层和持久层构成;其中体现了我们对用户界面、业务逻辑和数据持久的关注点分离。这种架构从命令行时代的软件就开始有了,直到最新的AJAX 加RESTful的Web 应用架构中仍然可以看到它,因为这种关注点的分离在这些应用中是必要的。

我们可以在Web 应用中不采用三层架构,也就是不进行这种分离。我们可以在JSP/ASP/PHP中混合用户界面、业务逻辑和数据持久层。但是这样的代码是难以维护的,难以适应大规模项目开发,难以适应将来的变化。关注点不分离的代码为阅读和理解制造了更多的障碍。用户界面、业务逻辑和数据持久三者的分离,让它们能够相对独立地进行变化,比如实现新的用户界面方式、改变业务逻辑和采用新的数据持久机制。

阅读全文 »

标签:
阅读:18,129 次
preload preload preload
京ICP备06065162