模块化程序设计,用DLL还是COM/COM+?(总额可达1000分,先发300分)(300分)

W

WiseAnt

Unregistered / Unconfirmed
GUEST, unregistred user!
  我现在要写一套工厂的物料管理软件,有四个人参与,预计两个月时间。
  项目六月份正式启动,我负责规划代码框架,主代码编写及模块分工。
  我要在6月10日前决定上述问题,我以前是一个人写项目的,没有这方面的经验,
不知道如何去进行模块化分工,用DLL好还是用COM好,它们在开发时间、效率、稳定性
等方面有哪些异同。
  我个人想象的话,应该是COM好一些吧?但我还真不知道COM对实际的软件编写有何
意义,哪些软件应该用COM技术,哪些不必用,希望大虾能指点一二,或给我一个小示例,
不胜感激!!!
  我希望可以实现模块动态组装(如同动态装载DLL),并将所有的模块功能化封装在
模块DLL中,DLL中是可以包含窗体,并且也可以存放MDI子窗口,但COM中能放窗口吗?
如何通信呢?在我看过的几本书中都是讲的一些COM理论,或者给我感觉是COM服务器的
功能仅仅是将一些封装的功能提供给COM客户端,客户端必须服务器端的接口声明单元
才能访问COM服务器,这样的话能做到动态装载功能模块吗?
  哪位大吓做过功能模块化分工的项目设计,给点实际经验或建议好吗?
 
COM 最大的特点就是多语言合作,比如您用 VC++ 做 COM,VB 做界面。
另外一个特点就是可以输出您系统中的对象给其他程序使用(VBA或者其他界面)。
 
//COM的道理我也知道,不过实际用时,还是听课先。
 
也是听课!
 
也来听课!
 
COM有两种存在形式,动态连接库(DLL)和可执行程序,
但DCOM(分布的COM,在网络上的另一台计算机上执行)必须是可执行程序.
因为DCOM不可能在客户程序的内存空间运行,所以不能是动态连接库.
客户程序不必知道COM的存在形式,只需统一的接口调用方式。
所以你说的用DLL好还是用COM好?
 
程序设计重要的也许是类设计、Design Pattern, DLL、COM 只是包装形式,重要性其次。
还有一点很重要,COM+/DCOM 不久就会被慢慢被抛弃、死去。
 
模块化设计肯定是要的,DLL也是可用的。COM+就没有必要了,
有四个人参与,预计两个月时间,即使要用COM+恐怕你也完不成任务。
 
建议你采用DLL.你本身对COM熟悉程度不够,时间上可能也来不及。
用DLL,遇到的问题应该会比COM少,这样你们调试时间也会相应减少。
另外一点,正如YYSUN说的,DLL,COM只是包装形式。关键还在于类的设计。
尽可能使用自己比较熟悉的技术,这样出来的程序才有稳定性而言。
DLL,COM的出现只是为更加方便的让开发者进行开发。开发者应该根据自己需要进行
选择,而不是一味说技术,毕竟我们给客户的,客户认可的是产品而不是技术。


 
用什么都不重要,最重要的是满足客户的需求,你的时间并不宽裕,还是多考虑一下软件的体系结构或模型,把类结构规划好是最重要的。
 
com提供对象,dll提供函数;com+仅仅是商业上的称呼,同com没有本质区别。
从开发效率上dll明显高于com,除非你是不同的开发工具,否则完全没有必要用dcom,
用packeage也是一个不错的选择。
 
用你自己熟悉的技术,并不是靠想象某一技术会好些这样能做项目的。
八人月的项目,想来也不会大到哪去,又何必搞得这么复杂呢
关键是业务上的分模块,以及把各模块公用的东西抽取出来,避免重复工作
各模块间的协作关系一定要先搞清楚
 
  非常感谢各位的关注!
  我已决定先用DLL来做这个项目,希望做过模块化设计的大吓能否提供一个实际项目
中抽象出的例子,让小生了解一点实际的东西。
  我目前规划该项目为MDI模式,菜单动态生成,提供菜单/模块维护工具,通过该工具
可以方便的挂接或增加所需的功能模块,所有的功能模块用DLL来写并向用户开放源代码,
用户可直接进行二次开发。
  那么,如果将每一个子功能(即MDI子窗口)都写一个DLL的话,一定为数众多;如果将
多个功能模块写成一个DLL的话,可能"采购"一个DLL,"仓库"一个DLL......只要几个DLL
便可以了,但维护及二次开发可能不太方便。不知做过这方面项目的大虾们如何认为呢?
  再者,我想将所有的MDI子窗口写在DLL中,通过约定的函数来创建该子窗口,且所有
模块DLL中都必须提供该接口函数,DLL调用其它DLL也采用这个方式,大家认为这样会有
问题吗?
 
当然要以模块化的方式来一个功能一个DLL,
不然,可能会有很多问题存在,
模块化了,就会明确功能模块的界限,
减少之间的联系,
这样,由其对多人合作开发非不常有利。
 
yysun:
COM+真的不久就会被抛弃吗?但我感觉在很长一段时间内会和WebService等新的技术并存。
 
一个功能模块一个dll
有重用价值的也用dll
 
如果本身业务流程不规划好。
即使做'好'了,也。。。
 
采用插件试技术(刚听说饿)
 

Similar threads

回复
0
查看
516
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
737
DelphiTeacher的专栏
D
D
回复
0
查看
741
DelphiTeacher的专栏
D
顶部