WinForm 开发框架
2013-04-26 18:49
162 查看
WinForm 开发框架【加载DLL模式】
之前的那个开发框架好几个朋友都用在了项目里面,也给我提出了很宝贵的意见,虽然最近一直没有什么更新,但是针对朋友们提出的建议,我都仔细考虑了一翻,很多的意见我都融入了系统里面,将不足之处修改过来,本来想把报表的事儿给搞定,但是想了几种方案结果都不了了之。曾经有一个朋友说很欣赏我那个读取DLL文件的框架,以前我觉得写得挺乱的,代码也是比较混乱,有时候我自己翻出来居然要想很久才知道那些代码是什么意思,当时之所以舍弃了这套框架,是因为觉得整个项目的Size会越来越大,因为每一个窗体都是一个类库,然后编译为DLL文件,程序去读取并加载这些DLL文件,所以采取了直接写在竹程序里面的方式,详细介绍在这里:/article/5007867.html
这样一来也有一个问题,主程序的EXE越来越大,我觉得理论上是这样,所以最近忙里偷闲,将原来的那套框架重新整理了一下,主要有以下几个变化:
1.每一个窗体皆为一个类库,实现相应的接口。
2.用户打开窗体的时候不是直接Open窗体,而是加载DLL文件,读取DLL文件里面的信息。
3.每一个窗体所实现的业务仍然在自己的类文件中完成。
在新建的项目里面实现如下业务:
1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 using CP.Kernel.Base; 6 7 namespace sysUserGroup 8 { 9 [Serializable] 10 public class Plugins : IPugins 11 { 12 private FrmUserGroup f; 13 public void Activate() 14 { 15 f.Activate(); 16 } 17 public void Dispose() 18 { 19 f.Close(); 20 GC.Collect(); 21 GC.SuppressFinalize(this); 22 } 23 public void Hide() 24 { 25 f.Close(); 26 } 27 28 public string Name 29 { 30 get { return "角色资料设定"; } 31 } 32 33 public string GUID 34 { 35 get { return "F2080504B6DC4963BC0963FEFA0E1AAD"; } 36 } 37 38 public string Version 39 { 40 get { return "1.0.0.0"; } 41 } 42 43 public string Manufacturer 44 { 45 get { return "制造商"; } 46 } 47 48 public string Description 49 { 50 get { return "用于设定角色资料"; } 51 } 52 53 public string TCode 54 { 55 get { return "JSZL"; } 56 } 57 58 public string FrmUrl 59 { 60 get { return "sysUserGroup.dll"; } 61 } 62 } 63 }
这里入去传入进来的DLL文件:
1 public void LoadDLL(string DllName) 2 { 3 try 4 { 5 if (DllName.Substring(DllName.Length - 4).ToUpper() == ".DLL") 6 { 7 DllName = DllName.Replace(".dll", ""); 8 } 9 10 if (string.IsNullOrEmpty(DllName)) 11 return; 12 13 if (!allenSingleton.DicLoadDll.ContainsKey(DllName)) 14 { 15 IPugins objLoadDll; 16 if (allenSingleton.DicPugins.ContainsKey(DllName)) 17 { 18 objLoadDll = allenSingleton.DicPugins[DllName]; 19 } 20 else 21 { 22 objLoadDll = CPUtility.LoadDll(DllName); 23 } 24 25 if (objLoadDll != null) 26 objLoadDll.Show(dockPanel, DockState.Document); 27 28 allenSingleton.DicLoadDll.Add(DllName, objLoadDll); 29 } 30 else 31 { 32 allenSingleton.DicLoadDll[DllName].Activate(); 33 } 34 } 35 catch (Exception ex) 36 { 37 ShowMsg(ex.Message); 38 } 39 40 41 } 42 internal IPugins getDllObject(string DllName) 43 { 44 IPugins objLoadDll = null; 45 46 if (string.IsNullOrEmpty(DllName)) 47 return null; 48 49 if (!allenSingleton.DicLoadDll.ContainsKey(DllName)) 50 { 51 52 if (allenSingleton.DicPugins.ContainsKey(DllName)) 53 { 54 objLoadDll = allenSingleton.DicPugins[DllName]; 55 } 56 else 57 { 58 objLoadDll = CPUtility.LoadDll(DllName); 59 } 60 61 allenSingleton.DicLoadDll.Add(strdllname, objLoadDll); 62 } 63 else 64 { 65 objLoadDll = allenSingleton.DicLoadDll[DllName]; 66 } 67 return objLoadDll; 68 }
这个框架比起之前的那一套,数据处理方面没有什么变化,仍然采取存储过程实现业务逻辑,程序里面基本上面看不到SQL语句;布局和风格也是沿用以前的做法,仍然是多文档的布局模式,整体效果还是比较大方的,主要的变化就是核心部分,可以说现在的这套程序跟之前的那一套核心内容完全不一样了,在耦合性方面也有一些改善。加载的窗体如下图,都是DLL:
大致的效果:
多文档布局模式预览:
明天开始五一放长假10天,然后自己再接着请了几天假,终于可以好好休息一下了,五一回来打算再好好优化一下,在这里祝大家五一愉快!
DDD:用 “四色原型” 进行 “职责分配”
这篇博客是DDD:用 “四色原型” 进行 “聚合设计”的延伸版。
职责分配
聚合
维护内部状态的一致性。换句话说,聚合的职责只限于维护期自身的状态。可以将聚合的职责分为两类:修改职责:只能修改聚合本身的状态,关联的其它聚合信息不能修改。
读取职责:可以读取聚合本身的状态,关联的其它聚合信息也能读取。
角色
维护一个聚合实例业务逻辑的一致性。因为有些聚合实例的业务逻辑会依赖很多外部服务:如仓储、领域服务等。常见的场景如下:前置条件:修改内部状态时,必须满足的条件。
唯一性验证:某些状态必须唯一。
计算逻辑:此处多数采用状态模式或策略模式。
领域服务
维护多个聚合实例(跨聚合)业务逻辑的一致性。工厂
维护聚合的创建逻辑。仓储
维护聚合的持久化逻辑。引入工作单元后的聚合生命周期
代码示例
分析模型
设计模型
项目结构
代码下载
感谢360云盘提供的空间:http://yunpan.cn/QWqewDLDKY4vk相关文章推荐
- Winform开发框架之统计图表的实现
- SailingEase WinForm 应用程序开发框架 (学习版下载)
- Winform开发框架之权限管理系统改进的经验总结(4)-一行代码实现表操作日志记录
- Winform开发框架主界面设计展示
- WinForm 开发框架【动态读取DLL模式】
- Winform开发框架之数据即时更新的实现
- Winform开发框架之附件管理应用
- Winform开发框架之字典数据管理
- 循序渐进开发WinForm项目(1) --数据库设计和项目框架的生成
- Winform开发框架之同化对话框样式
- .NET快速信息化系统开发框架 V3.2 -> WinForm“组织机构管理”界面组织机构权限管理采用新的界面,操作权限按模块进行展示
- Winform开发框架之参数配置管理功能实现-基于SettingsProvider.net的构建
- .NET快速信息化系统开发框架 V3.2->WinForm版本新增新的角色授权管理界面效率更高、更规范
- 在WinForm应用程序中快速实现多语言的处理(2)--开发框架模块的整合
- Winform开发框架之存储过程的支持--存储过程的实现和演化提炼(1)
- 开发框架模块视频系列(2)-Winform分页控件介绍
- Winform开发框架之系统登录实现
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->WinForm版本新增新的用户权限设置界面效率更高、更规范
- winform开发框架常见的分层模式
- Winform开发框架之通用Windows摄像头调用拍照--SNF快速开发平台3.3-Spring.Net.Framework