其实实现上位机的方式有很多,比如C#的WinForm和WPF,再比如C++的Qt,少数的还有用Python等其他语言开发。可惜本人才疏学浅,实力和精力有限,加之长春的上位机岗位所需技术多数以WinForm为主,所以就不妄谈其他技术的架构设计。因此本篇笔记是以C#的WinForm为主来实现的一个简单的架构,以供大家参考借鉴。
为什么需要架构设计
个人认为,架构设计的本质就是为了提高程序的可阅读性、可扩展性,最终都是为了提高程序的可维护性。从而降低程序的维护成本,与协作者的沟通成本,提高程序运行的健壮性。这就是为什么需要架构设计。
WinForm程序架构设计实现
在WinForm中,我把架构设计主要分了三个部分:
① 窗口管理与业务逻辑实现部分
设置一个Forms文件夹,用来存储与窗口相关的程序文件。该部分职责是负责实现用户的交互界面与用户所需的业务逻辑的功能(如果Forms实在很少或者就一个可以考虑不用,请结合自己实际情况考虑)。
② 数据交互部分
数据交互部分我又给细分成了两个部分,即分别设置了两个文件夹:
-
DataAccess:其职责主要是处理与数据库之间的数据交互; -
HardwareAccess:其职责主要是处理与硬件设备之间的数据交互。
在HardwareAccess文件夹之中,可以结合实际的硬件设备,设置相关的文件夹或cs文件。比如,要与单个PLC通讯,就与之相关的cs文件放入其中;要与多个PLC通讯,就设置一个名为PLCs的文件夹,根据不同的PLC的职责不同,设置好相应的类名和文件名称,将它们放入到PLCs的文件夹中。其他硬件设备亦是如此。
③ 公共工具类部分
上述的两个部分难免会复用到同一个工具程序,因此设置了一个Util的文件夹,以供上述两部分使用。然后要依据工具程序不同的特性,设置好相应的子文件夹,如有自定义的枚举类,就设置一个Enums的文件夹,用来存放枚举;亦或是有自定义的扩展类,那就设置一个Exts文件夹,存放扩展类。其他的也是如此。
④ Images文件夹
如果加载一些图片的,设置一个Images文件夹存放图片文件。这个没啥内容,算是补充吧。
结语
把上述三个部分实现完成,就算是在WinForm中搭建了一个简易的小框架了。虽然这不算是什么“高大上”的、“黑科技”的框架,但是我想也能对提高程序的可维护性有一定帮助吧!因此写了这篇浅谈笔记,与各位分享。
这篇笔记里提到的完整 Winform 架构示例项目,我已经上传到了 Gitee和Github,链接:https://gitee.com/GandalfGao/Host-Program-Framework-Demo
https://github.com/GandalfGao/Host-Program-Framework-Demo
另外,项目 README 里有个“小贴士”章节,如果觉得有帮助,可以请我喝杯咖啡☕️,量力而行~感谢大家!

4730

被折叠的 条评论
为什么被折叠?



