软件架构设计之常用架构模式介绍

分享到:

 1.分层架构:分层架构是使用最多的架构模式,通过分层使各个层的职责更加明确,通过定义的接口使各层之间通讯,上层使用下层提供的服务。分层分为:严格意义上的分层,一般意义的分层。严格意义的分层是n+1层使用n层的服务。而一般意义的分层是上层能够使用它下边所有层的服务。领域驱动设计的分层定义:UI层,UI控制层,服务层,领域层,基础设施层。

2.MVC架构:MVC架构相信做软件的都听说,主要是为了让软件的各部分松耦合,现在好多根据MVC思想构建的框架如:Spring MVC,Structs2,ASP.Net MVC等。MVC是Model View Control的简写,他的原理是什么那,比如拿web来举例吧。当一个web请求来了以后View接收这个请求,随即把请求转发给Control进行处理,Control通过分析请求的类型等信息决定加载哪些Model,当Model加载完成以后Control通知Model已经加载完毕,这是View就去读取Model数据进行显示自己。MVC还有一个衍生架构叫MVP,因为MVC的View跟Control和Model都有耦合关系所以为了解除View和Model之间的关系,View不直接读取Model而是通过Control来转发View需要的数据。还有一个衍生架构叫MVVP,就是增加了一个ViewControl的层,用来辅助视图的生成,这样View的功能更加简单只是用来显示不包含其它的功能,而且有了ViewControl使多视图或替换视图很方便。MVP微软的WPF就是使用这种架构。

3.微内核架构:微内核架构就是做一个稳定通用的内核,也就是给软件设计一个强劲的心脏。如果需要更多功能通过在内核外部再封装一层对软件进行扩充,微内核提供基本的接口供外部调用,这些接口一定要通用,并且提供事件的机制告诉外部内部发生的事件,这样就是内核与外部完全隔离。微软操作系统就是按照微内核设计的。我之前做了一个Gis组件当初思想也是这个样子的,但是当初不知道还有微内核架构,有了对微内核的深入理解会进一步完善那个Gis组件。

4.元模型架构:元模型架构就是有元数据支撑的架构,现在使用的也很广泛,比如:ORM,.Net 类的设计等都是元数据支持的。元数据有自我描述性比如ORM会描述类对应数据库中的表属性对应数据库里的字段,还有IOC类中的引用需要注入哪个类等等都会通过元数据的形式实现。IOC框架通过解析元数据信息使注入和被注入类只通过接口依赖,这样替换注入类很方便。元数据架构是很灵活的架构,可发展空间非常大,元数据架构会经常用反射技术或者动态代码生成技术。我之前做了一个ORM就是用到的元数据架构,我还想给ORM添加依赖注入面向切面编程等特性都很方便的。

5.管道-过滤器架构:这个模式就像是工厂的流水线,生产原料通过流水线经过很多环节进行处理变成产品。软件也是一样的,网络OSI7层就是消息通过管道内部的很多步处理对消息进行加工过滤转换。再举一个例子,两家企业需要信息交换,但是企业的信息格式和描述规则都不相同,如果想达到交换必须经过处理,所以我们就得用管道过滤器模式,通过管道过滤器模式信息进入管道我们会在管道里添加各种处理功能,比如:数据验证,信息加密,信息解密,信息压缩,信息解压缩,格式转换等功能,对消息进行处理以符合我们要求的消息格式,而且如果需要添加一个新的处理只要把处理的功能插入到管道中即可,这样达到最大的灵活性。应用此模式的有:ASP.net请求模型,Spring 对象构造,Structs 数据请求等。

继续阅读
基于ATmega64的显示控制系统设计

介绍了如何使用AVR单片机ATmega64和液晶模块CM320240-7进行显示控制系统的设计,分析了其硬件平台的设计要点,给出了应用软件的架构,介绍了其中最主要的菜单选择程序的设计流程,分析了一种树状菜单结构的设计方法。设计的终端显控系统在实际系统中运行稳定可靠,证明了设计方法的正确性。

“开架式”软件架构设计

“开架式”软件设计是基于应用程序的可扩充性提出来的,是一种软件底层架构的实现方式。他更关注应用程序底层架构的实现,与具体应用程序的实现无关,或者说具体的应用程序是构建在这种架构定义的范畴之内的。

软件架构设计之常用架构模式介绍

微内核架构就是做一个稳定通用的内核,也就是给软件设计一个强劲的心脏。如果需要更多功能通过在内核外部再封装一层对软件进行扩充,微内核提供基本的接口供外部调用,这些接口一定要通用,并且提供事件的机制告诉外部内部发生的事件,这样就是内核与外部完全隔离。

嵌入式软件架构设计

究竟选择多任务还是单任务方式,依赖于软件的体系是否庞大。例如,绝大多数手机程序都是多任务的,但也有一些小灵通的协议栈是单任务的,没有操作系统,它们的主程序轮流调用各个软件模块的处理程序,模拟多任务环境。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss