软件体系架构在工作中的总结
软件系统架构风格的知识,其中介绍了五种主要的架构风格,分别是:数据流风格,仓库风格,调用、返回风格,构件风格和虚拟机风格。因为平时一直是CODING,没有真正花时间来学习架构相关的知识。其实,在平时的工作中,我们已经是有意或者无意中应用到了上面的一些架构风格,只是没有去理论化和系统化。即使以前做过的一些系统虽小,但其思想,或多或少也体现了一些架构上的风格。
(一)数据流风格之过滤器/连接器风格
1)构件:方框部分:有一个输入的数据流和输出与的数据流,分词,检索,反序列和转PDF,分别对输入的数据流进行运算和转化。分词构件的输入数据为关键词,输出分词后的关键词。检索构件的输入数据为分词后的关键词,输出二进制流。反序列构件的输入数据为二进制流,输出为对应的文件。转PDF构件的输入数据为文件,输出为PDF。
2)连接器:箭头部分,连接各个构件。
3)采用这个架构,有利于将问题域的分解,而且也有利于各个构件的替换,和系统的升级。
(二)构件风格之事件驱动风格(或隐式事件调用风格)
以前搞过一个监控系统,功能是对仪器采集出来的数据进行实时监控(串口通信),如果数据超标,则实时报警,从设计模式来看,典型的观察者模式,在系统架构风格里面,应该是事件驱动比较合适了,在这个系统中,数据采集构件公布了报警事件,其他希望获得报警消息构件的过程在这个事件上注册,一旦检测数据超标,那么数据采集构件统一调用注册在报警事件上的各个过程,
图示如下:
1)构件:对象或者过程,细分为:过程或者函数,和事件。
2)连接件:事件-过程绑定。
3)采用这种架构,将事件的发布者和订阅者解耦,有利于事件订阅者的扩充。
4)在.NET里,主要用委托,数据采集是事件源,公布报警事件。
(三)调用,返回之分层风格
这种风格的应用多得那里去了,典型的WEB三层就是这种架构了,用的太多了,分别是:WEB,BLL,DAL.之前一直不明白BLL层,觉得它可有可无,其实不是这样的,这层,一来,作为WEB和DAL之间的桥梁,当DAL发生变化时,BLL可以为WEB层提供透明的“服务”。二来,可以放一些业务上的判断。