思考:已工作一年有半,时长在想自己的工作意义在哪儿?自己的核心竞争力在何处?想来想去,骚年,还是多读书吧,先从翻译国外优秀文章开始;
前言
从阮一峰老师的博客上偶尔看到一本书籍(Software Architecture - Understanding Common Architecture Patterns and When to User Them),觉得很好,就打印出来研读,并寻找一篇帖子理解,自认为个人总结能力不太好,还是老老实实翻译这篇帖子吧;
好莱坞电影到底有多少个场景呢?一些评论家会说:只有五个。
编程到底有多少种方法呢?当前,大多数程序只使用了五个常见架构中的一个。
Mark Richards是一位居住在波士顿的软件架构师,对于数据流如何在软件中流通,他对此持续思考长达30年;他的新书《Software Architecture Patterns》主要聚焦五种常用于组织软件系统的架构,组织程序的最好方法是学习它并能了解他们么得优缺点。
在这篇文章中,我将提炼五种框架的优缺点以及使用案例。请记住,你可以在一个系统中使用多种架构,以此将每块代码优化到最佳架构。即使经常称软件架构为计算机科学,相比起来,它更像一种艺术。
层次(N层)架构
这种架构估计是最最常见的,因为这种架构一般搭建在数据库之上,而且很多业务应用自然而然地会将信息存储在表中。
这种架构或许具有自实现先知(This is something of a self-fulfilling prophecy.),需要最大和最好的软件框架frameworks(例如Jave EE, Drupal和Express)都是建立在这种架构建上的,所以很多建立在前面这些框架之上的应用,自然采用层次架构;
代码按照某种方式组织起来,很自然地,数据流从最上层一直往下走,直到到达最底层(通常是数据库)。从上到下的每一层都会有每一层的职责,比如检查数据的一致性或重新组织数据保持一致性。这样处于不同层的程序员就可以独立工作,互不打扰了。
MVC(Model-View-Controller)架构,很明显是一种层次架构,通常大多数web框架都会提供这种标准的软件开发方法。位于数据之上的就是Model层,一般包括业务逻辑以及位于数据库数据类型信息。最顶层的是View层,一般包括CSS, JavaScript,HTML以及动态语言代码。位于中间的是Controller层,一般会包括会很多规则和方法,这些规则和方法用于控制View层和Model之间的数据传输。
层次架构的好处在于分层,这意味着每一层只需关注它自己的功能,这使得层次架构有以下几个有点