前面的例子可能太具体了,那么希望从从下面的图上看明白框架收箱类与实际UI元素的对应关系。
Workbench是主窗体,Workbench中的手风琴菜单是业务功能的全集,因此通过Folder拼装(详细情况参照C/S简易UI框架开发总结(2)关于Folder的介绍)好的业务功能可以有用户随时触发,有系统自动解析并调用相应的功能完成对用户请求的相应(可能是显示一个View或者其他动作)。
View(GridView)与Workbench类似,通过定义好的EntityControlHost完成CRUD功能,由于每个实体CRUD的功能基本逻辑是一样的,因此除了有特殊需要外,系统会自动通过设置EntityControlHost的DataSource和State完成实际业务实体的CRUD的UI调度部分,而数据存取部分已在EntityControl中定义好,简单反射就可以完成相应的数据业务操作,同时此处不需要对DAL/EL或者Service层的强依赖。而对于有特殊要求业务,可以自己扩展EntityControl和EntityControlHost完成。
View也可以是任意用户控件,比如一个地图、一个文件编辑器,当然具体的业务需要在控件内完成。而调度过程完全一样,显示样式也与GridView等已定义好的View无差异。
在EntityControlHost和与其相关的View(GridView)中,会同时出现相同的命令按钮,比如保存、关闭、审核、删除等。其中View中的命令按钮会自动完成与主窗体的合并,而EntityContolHost不会,这样可以更有效的保持界面风格和操作风格的一致性。
下面是类图,从VS导出来的,大家将就看看吧。
总结下架构的优点:
1、 狭义的快速开发(关注快速的UI和业务功能实现)
A 针对MIS类应用开发特性,对UI元素进行了抽象,并封装重复性强的部分,让使用者可以用更多的精力关注复杂业务,避免重复劳动,从而提升开发效率。
B UI元素的规范化,简单业务和业务零件的自动生成成为可能。(已有了部分CodeSmith模板)
C 字体、系统皮肤、颜色、快键等可以通过简单设置快速满足客户的个性要求。
D 框架可以让一般程序员快速的熟悉、适应,而后可以非常快速的完成他需要的功能,提升生产率。
2、 提升软件质量
A 每个层次的组件都有明确的规范化要求,使用者只要按需填空或重写相应方法即可,同时规范的调用层次和自动业务功能调度,可以有效提升软件质量。
B 框架可以大量减少使用者自己编写的代码,减少bug点,提升软件质量。
C 自动的日志和未处理异常处理机制,可以是后期维护更加容易。
3、 提升界面的规范性
使用者在框架内开发的应用,遵循同样的界面规范,同样的操作方式。
其实缺点也很明显,比如使用上有一定的局限性,对于不熟悉的使用者没有培训的使用会是个噩梦,有些地方写的时候仓促,没有规划好,出现bug时有时候需要调整很长时间。
后面需要对几个部分进行改进:
1、EntityControl中实体和界面控件自动交互的过程,使用策略模式同时支持DataTable,DataSet,Datarow和强类型实体等数据源。
2、完善原来的插件机制,使他更加易用,并支持从xml文件和数据库获取插件。
3、原生支持自动更新(现在需要额外的应用)。
4、自适应界面边界在xp和win7,vista下布局差异。
5、..........
欢迎补充,谢谢大家。