第一次用EXE+BPL+DLL项目总结
delphi吧
全部回复
仅看楼主
level 11
warrially 楼主
 前段时间研究了一下BPL方式的开发,刚好最近有个小项目,于是尝试了一下,项目已完成。
有一些心得和体会,写下来与大家分享,请大家提出不足,另外有在研究BPL方面的朋友,有问题可以大家
共同探讨,以便进得更快一些。
关于一个项目的总结 ( EXE+BPL+DLL 模式)
以前一直采用一个独立的EXE文件的方式做项目,当时的感觉就是方便,不用考虑得太多,把所有的业务逻辑功能
做完后,编译成一个EXE执行文件就OK了,因为一直没有研究过BPL这种框架的编程,最近研究了一下,感触很深,
这种模式才是更方便的。而且对于团队模式更是方便,只要把各Team的BPL拿来就完成了。基于这种思想,最近应
用到一个新的项目上,已初见成效,现对这个项目总结如下:
  一、规划
  BPL框架编程规划很重要,一个项目要分成N个BPL,每个BPL的作用、分工在分析时必须确定下来,这一点很重要。
  本项目分为以下几种包:
  (1)、DBCommon.
bp
l --> 数据模块包,包括数据模块、数据库读写类模块 (数据访问层)
  (2)、pubComon.bpl --> 公共函数、过程单元,公共变量单元、自定义结构类型单元、自定义类单元
  (3)、BaseForm.bpl --> 所有窗体的基类单元、业务逻辑基类窗体单元
  在(3)的基础上,按照不同的业务逻辑,建立不同业务的业务包,例:A.bpl,B.bpl,C.bpl......
(4)、A.bpl --> 业务包1
(5)、b.bpl --> 业务包2 ......根据业务逻辑的分类,建立不同的业务包。
 二、设计
  包的应用是有先后的,一些基础包必须首先建立好,以便供其他包在建立时被应用,基础包在修改后,所有应用该
基础包的必须重新编译,而且顺序不能搞错。例: DBCommon.bpl-->BaseForm.bpl-->A.bpl 当DBCommon.bpl修改并
重新编译后,后面两个包必须重新编译,且先编译BaseForm.bpl,后编译A>bpl
BaseForm.bpl包中有整个项目的基类窗体单元,以及从该基类窗体继承的业务逻辑基类窗体单元,在基类窗体单元
中将整个项目的风格统一、包括字体,各控件包括第三方控件的样式、颜色等做到了规范统一,窗体关闭时应该释放的
内容等。而基类窗体的相关风格、样式是由主程序EXE在初始化时进行布局,这样如果想换风格,只要在公共变量单元中
修改相关的内容即可。
( 注:本项目没有使用皮肤,只是通过颜色等风格进行控制 )
    例1:为了使DevExpress组件的风格与整个项目的风格一致,特别是TcxGrid在选用dxOffice11样式时的颜色,
因为dxOffice11默认的颜色是采用深蓝色的那种,为了使TcxGrid的颜色与整个项目的颜色配套,就必须
调整,包括线的颜色,这个设置在EXE初始化时得到了安排,这样设计后,整体效果比较理想。
    例2:项目中也采用了第三方控件RZ组件,这也是一个很好的三方控件,这个控件也有一个很好的样式统一控件,
只要控制好就可以与项目的风格融合到一起了。例TrzFrameController、TrzMenuController等,就是为了
统一风格而使用的。设置好这两个非可视控件的样式,就可以达到控件所有使用这个风格的控件了。而主
程序只要在初始化时,设置它们的风格就可得到一劳永逸的效果。
三、调用
   框架确定了,包功能完成了,余下来就是主EXE载入Bpl运行了。载入包分为动态和静态两种方式。根据业务的规
划,三种基础包DBCommon.bpl,pubComon.bpl,BaseForm.bpl是静态载入,由主EXE编译时加入作为必须使用的

2012年11月05日 01点11分 1
level 2
嗯,不错
2012年11月14日 07点11分 3
level 1
一头雾水,完全没搞明白。能分享些干货吗,大哥
2015年07月17日 08点07分 4
level 1
[酷]厉害.....
2016年01月21日 08点01分 5
level 8
BPL 的编译麻烦,EXE 加DLL 感觉方便多了这么多年一直用
2016年01月21日 13点01分 6
对。但是 DLL 编译结果有点大,不过为了方便,大也可以接受。
2016年01月22日 03点01分
我也是用exe+dll。dll可以用upx压缩的。
2016年01月22日 03点01分
level 1
动态库和主程序共享数据库连接好象比较麻烦.
2016年01月22日 00点01分 7
level 5
只会说,有能耐传个完整的代码啊
2016年02月27日 09点02分 8
牛X的伸手党
2016年02月27日 12点02分
level 1
正在研究这个,留下脚印学习
2016年03月08日 02点03分 9
level 1
可以分享一下,数据连接共享经验吗?
2016年11月18日 04点11分 10
1