我现在负责的程序中由于有很多客户定制性的要求,导致改程序版本很多。代码无法统一。所以我准备把这个程序做成一个EXE+多个DLL的形式,用不同的DLL来实现用户的定制性开发。
但是如果这样做的话。由于之前系统中各个模块之间的联系比较紧密。所以如果拆分成DLL.那么这些DLL无法互相访问。有些全局性的配置信息也无法取得。而且如果独立成DLL.那么这些DLL中都会自带公用函数库。这样一来无法保证这些函数库版本一致。
请问针对这种情况有没有什么好的解决办法?
但是如果这样做的话。由于之前系统中各个模块之间的联系比较紧密。所以如果拆分成DLL.那么这些DLL无法互相访问。有些全局性的配置信息也无法取得。而且如果独立成DLL.那么这些DLL中都会自带公用函数库。这样一来无法保证这些函数库版本一致。
请问针对这种情况有没有什么好的解决办法?
解决方案 »
- 怎样读取access中的一行数据显示在stringgrid中
- 开发ACTIVEX控件遇到的两个(含)以上IE打开包含该控件的网页时出现问题
- 我根据SGIP(联通短信协议)编写的短信接口程序,大家观摩多提意见!!
- 有一个字符串,中间以逗号“,”分开,比如aaa,bbb,ccc我怎么能把aaa和bbb和ccc分别单独提取出来
- 大家好,我把本地数据库放到网上,为什么奇慢无比?
- 一个关于DBGrid的问题
- 如何在DELPHI中实现循环操作控件呢?? (100分)
- 这个sql怎么写,对两个表查询?
- 各位大虾快来指路
- 检查delphi或c++builder内存泄漏的工具?
- delphi Tdataset问题
- 谁有好一点的注入dll到系统进程的代码?
√Build with runtime packages
vcl;rtl;这样vcl的对象就能共用、Dll和普通程序就一样写了。自带公用函数库也可以编译成bpl。-------关键的你得分析模块与模块间的调用接口,将独立的功能进行分离和封装。
根据不同情况,方案很多,关键是否适合你的情况.比如楼上伴水说的BPL型DLL拆分就是其中一种易行的方案,对原有的代码影响最小。楼主觉得呢?
非常可惜,有得必有失,
1,开发的时候,应用程序最好保证内存中只有一个RegGroups对象。也就意味着,使用的各个BPL,必须依赖同一个BPL,由这一个BPL提供唯一的RegGroups实例访问。 其实这不太算缺点,倒可以算架构设计约定的注意事项。2,BPL机制绕开了DLL导出函数,给多了自由,带来了灵活性,却牺牲了接口约定的约束力度。
这样,当系统面临部分模块多个版本存在时,就是头疼开始的时候。想要更好的解决版本变化影响,有几个关键之处:
A。 对象的创建与释放过程抽象化。
B。 对象的接口清晰化,稳定化,以及版本变化的应对策略。
我准备把程序中的几个比较大的模块先用BPL来封装,然后对于需要变动的模块实现不通的BPL。这样在发布的时候发布不同的BPL。这样保证程序的主体框架一致。变动只限制在不同的模块中。然后等这中架构稳定了。我再继续逐步细化各个模块,将变动的部门再提取出来。分成更细的BPL来实现。不知道这样的想法可行不
假如我模块化后的程序结构为:一个主程序Main.exe 一个模块CHECK.BPL另一个Query.BPL
我在主程序中分别加载CHECK.BPL和Query.BPL而且保证这两个BPL中的主要功能实现类只有一个实例。
然后如果CHECK.BPL这个模块根据用户需求有所变化,我就重新实现一个NewCHECK.BPL。我在发布程序的时候根据用户需要选择发布CHECK.BPL还是NewCHECK.BPL。通过这种方式一方面使得代码模块化减少模块之间的耦合性,另一方面也保证了程序主版本代码的统一。
大家觉得这样的适用方法可行吗?