本系统文章将详细阐述客户端应用程序的设计理念,实现方法。
本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客户端应用程序的设计与开发。
目录:
前言:
可能是接触计算机比较早,从96年左右386开始,到 Trubo C,以及后来的Foxpro、VB、Delphi,一直以来似乎都有一种客户端程序情节,喜欢写客户端程序。
在 .Net 出现以后,投入了许多时间在研究 .Net 编程上,在客户端领域早年基本以 WinForm 为主,近几年逐渐转向了 WPF。
除了日常工作中的项目开发,业余时间使用 WinForm 写过许多东西,比较成型的大概有两个
1)SailingEase WinForm Designer IDE (2007~2010 暂停开发)
高度实现的 IDE 开发环境,完整实现了 WinForm Designer,可通过可视化配置的方法,定义界面和业务逻辑,并使用 XML 进行描述。
这个项目一开始的设想,心很大,企图做一个让不懂编程的人,也能拖拖画画加上配置,来生成企业所需的管理软件。投入了大概两年多的业余时间,这期间应该是我自己开发能力和设计能力增涨最快的时期,开始做这个项目的时候,有太多的问题超出能力范围,只好到处找书看、找资料学习。在每天回家的路上看完了《设计模式》,平时的碎片时间看完了《代码大全2》,另外阅读了 SharpDevelop 的许多源代码,也有一部分的实现是参考了它的思路和代码。
2010年左右由于时间和精力有限,加上对于软件项目有了一些新的认识和想法,这个项目就暂停至今。其它几个小规模的 WinForm 项目,和本系列文章的主角:SailingEase WinForm Framework,均脱胎于此项目。
2)SailingEase .NET Resources Tool
一款辅助多国语言软件开发的实用工具,目的在于通过生成接口来约束不同语言资源的实现,使开发人员可以基于接口调用资源。 此外,提供方便开发人员使用的各种实用功能,如多项目并行编辑,资源导入,Excel 导入、导出等。
这个项目源自于上面的 IDE 项目,由于做 IDE 时心太大,希望能够支持多国语言,但是慢慢发现从工程角度来说,这是一件非常麻烦,容易不可控的事情。就花了结时间,想了一个办法,用接口来约束不同的资源。
最后祭出本系列文章的主角:SailingEase WinForm Framework。
其实这是从 IDE 项目中提取出来的一个纯开发框架,它没有用户管理、权限管理之类的现成功能,而是提供纯开发角度的开发框架,概括来说提供了以下几方面的功能:
a.宿主程序(壳)与功能模块(插件)的加载、调度、通信等实现;
b.不同插件之间在完全接耦合的基础上,同步/异步调用、状态响应等机制的实现;
c.插件之间在代码层面完全没有互相引用关系,,可以实现在缺少任意插件的情况下启动应用,即使他们在UI层有交集;
d.支持模块间的依存关系定义;
d.事件聚合器,用于在完全解耦的条件下,发布及订阅事件;
d.宿主程序提供了统一的主菜单及右键菜单的注册/吊销/状态控制机制;
e.宿主程序提供了统一的窗口调度/加载/销毁功能;
f.宿主程序提供了统一的日志记录、异常捕获,Web页面互操作等功能;
g.基于 GDI+ 自行实现的控件包,提供了高度的可扩展性;
h.基于zip格式的文件包管理器(基于zip的自定义文件格式,读取或写入指定的流);
i.对http、xml、磁盘io、反射、加解密等操作的增强与封装;
j.其它……
第一章节:客户端软件的架构设计概述
本章节将概述基于 SailingEase Winform Framework 框架的客户端应用程序的架构设计。
时常有朋友或者客户会问:“你这个软件是不是三层架构设计”。