网络建设与运维赛项,极限优化主题wordpress,成都市做网站公司,网站建设前 需要准备的目录
概要
项目背景
原系统设计方案
改进后的设计方案
小结 概要
绝大多数人掌握的架构都是直接学习#xff0c;慢慢地才能体会到一个架构的好处。架构是一种抽象#xff0c;是为了复用目的而对代码做的抽象。通过一个项目的改造#xff0c;理解架构是如何产生的…目录
概要
项目背景
原系统设计方案
改进后的设计方案
小结 概要
绝大多数人掌握的架构都是直接学习慢慢地才能体会到一个架构的好处。架构是一种抽象是为了复用目的而对代码做的抽象。通过一个项目的改造理解架构是如何产生的是因何产生的。
项目背景
这是一个楼宇集中监控系统目的是对楼宇中感兴趣的设备进行集中监控如门磁、配电柜、空调、温度湿度传感器、火警等各类安防、消防、能效、计算机设备在中央控制室就可以尽在掌握。这些设备通过不同协议把数据传输至中央控制室采用RS232/485端口传输数据的设备较多每种设备有不同的串口协议通过说明书可查数据解析格式。其他采用TCPIP等协议的设备也不在少数。 原系统设计方案
由于每种设备的属性各不相同所以为每种设备设计一个数据库表如有一栋大楼有50种设备就需要设计50个表存储该设备的属性。例如UPS设备的属性有输入电压旁路电压输出电压逆变器电压输入电流旁路电流输出电流逆变器电流输入频率旁路频率输出频率各相有用功率标称功率功率因素电池备份时间负载率电池温度。例如配电设备的属性有相电压VaVbVc线电压VabVbcVca三相电流IaIbIc频率f有功功率KW无功功率KVAR功率参数PF有功电度KWH如果新进一种设备需要建立新的表还要编写新的协议解析代码如果增加新设备需要开发新的界面设置每个设备及其所在地点的映射关系其他的维护不再赘述
逻辑结构如下图所示。 一个楼宇的设备随时增减这个项目方案会导致开发团队要做全周期的维护和开发而且低效
改进后的设计方案
改进后的方案逻辑图如下 设备属性表采用属性名属性值方式设计一张表包含所有设备的所有属性可任意增删任何设备及其任何属性协议的解析一般是根据所规定的第几个字节代表什么含义获取数据比如第3-5字节代表温度。采用BASIC代码解析然后在C#中执行BASIC代码的方式解决C#允许运行嵌入的BASIC脚本对用户来说只写写BASIC解析仍然比较困难可开发一个协议解析工具让用户在界面拖动即可如果用户仍然没能力使用可由项目维护人员帮忙写比如新增一个设备可从定义其属性开始然后通过图形化界面设计工具用户可定制该设备在某房间平面图上的位置以及界面要显示的属性等等一个房间定制好后可能包含多个设备为这多个设备创建其对象采用多态性实现设备图表的自动显示 小结
架构就是把通用的部分尽可能地抽象成数据以配置的方式提供给用户。
程序员可能还是无法完全摆脱维护新增一个类型的设备时需要补充创建一个新设备类以便于支持多态机制的运行。但不需要修改源代码此外案例只考虑了RS232端口传输方式其他方式有自己的协议需要做分别处理。但好在设备使用的传输协议可以枚举的过来。