好莱坞电影中有多少情节?一些电影评论家说只有五个。您可以采用几种架构来实现应用程序?目前大多数程序都使用下面提到的五种架构之一。
在本文中,我将五种软件架构模式的优缺点以及适合场景提炼出来作为快速参考。你可以在单个系统中使用多个架构模式,它们的组合既是计算机科学,也是一门艺术。
这种方法可能是最常见的方法,因为它通常围绕数据库构建,并且业务中的许多应用程序自然会倾向于将信息存储在RDBMS的表中。许多比较大的软件框架(例如Java EE,Drupal和Express)都是在这种架构下实现的,因此使用它们构建的许多应用程序自然都来自分层体系结构。
Model-View-Controller(MVC)分层结构是大多数流行的Web框架提供的标准软件开发方法,显然是分层体系结构。数据持久层上方是服务层,它通常包含业务逻辑和有关数据库中数据类型的信息。视图层位于顶层,通常是css,JavaScript和带有动态嵌入式代码的html。在中间有一个控制层,该控制层具有用于转换在视图和模型之间移动的数据的各种规则和方法。
分层架构的优点:每个层可以只集中于自己的功能实现。这使得应用程序:
适当的分层体系结构将开发层面进行隔离,这些层不受其他层的更改的影响,从而使重构更加容易。划分任务并定义单独的层是架构师面临的挑战。当需求很好地适应了模式时,这些层将易于解耦或分层开发。
适合:
事件驱动的体系架构根据数据生成一个“事件”,事件由“消息中间件”或“事件分发管理的中央单元”统一接收,并将事件分配特定类型的代码处理。
使用JavaScript编程网页涉及编写对诸如鼠标单击或击键之类的事件做出反应的小模块。浏览器本身会协调所有输入,并确保只有正确的代码才能得到正确的事件。浏览器中常见许多不同类型的事件,但是模块仅与相关的事件进行交互。这与分层体系结构非常不同,在分层体系结构中,所有数据通常都将穿过所有层。总体而言,事件驱动的体系结构:
注意事项:
适合:
许多的应用程序都具有一组核心代码,这些代码在不同的模块下反复使用。例如,开发工具Eclipse将打开文件,批注,编辑文件并启动后台处理器。用于显示文件和对其进行编辑的代码是微内核的一部分。其他的插件扩展了Eclipse,从而扩展了其功能。
具体到解决方案就是将一些基本的核心的任务代码推入微内核。然后,不同的业务部门可以根据不同类型的声明编写插件。
注意事项:
适合:
小宝宝既可爱又有趣,但是一旦变大,就很难操纵并且难以维护。微服务架构旨在帮助开发人员避免让自己的宝宝长大,笨拙,僵硬,烦人。它的目标不是创建一个大型程序,而是创建多个不同的小型程序。避免修改一个小bug,就需要重新部署整个大型应用的情况出现。
这种方法类似于事件驱动和微内核方法,但是主要用于解耦不同模块及任务。在许多情况下,不同的任务可能需要不同的处理量,并且用途可能会有所不同。所以微服务的特点是便于修改、便于扩展。使用负载均衡及服务发现的机制,在用户使用高峰期部署更多的微服务,保证服务的高可用;在用户低频服务时段缩减微服务,从而节省服务器资源。
注意事项:
适合:
许多网站都是围绕数据库构建的,只要数据库能够满足负载,它们就可以正常运行。但是当使用量达到顶峰,并且数据库无法跟上用户请求的速度时,整个网站就会瘫痪。将数据存储在内存中可以使许多工作更快,从而大幅度提高用户并发访问的支撑能力。
注意事项:
适合:
原文:http://www.zimug.com/other/java//.html
最近学习了一些关于架构设计的知识想分享给大家。俗话说得好,不想当架构师的程序员不是好厨子。那么如何成为一名架构师呢?接下来就聊一聊我的一些想法。之前有同学问我,做了几年技术,应该转管理还是转架构师?
当组织规模达到一定量级,就会不可避免的陷入到技术选型困境中:新技术是否值得被采用、如何判断可行性、替换成本有多高、隐藏陷阱有哪些等等。本文将从技术管理的角度出发
工作了挺久,发现有个挺有意思的现象,从程序员、高级程序员,到现在挂着架构师、专家之类的头衔,伴随着技术和能力的提高,想不明白的事情反而越来越多了。这些疑问有些来自于跟小伙伴交流
当你点开一个招聘APP,筛选条件选择互联网技术,在列出来的一大堆职位上,往往有那么几个带有“ 架构师 ”三个字眼的高薪职位。当你被它的高薪所吸引而点击查看职位详情时,又会被它的高要求所劝退。它们往往要求工作年限在5年以上
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!