最近要搞一个项目,感觉挺大的那种,其实也就是Delphi + SQL Server 管理系统.
俺经验不足,想请教下各位大鸟,该如何组织软件的结构.
因为 软件挺大的,感觉要用到的窗体一定很多,这些窗体该如何组织?是全部放到一起(跟主EXE窗体),还是用DLL,以前用DLL的发现很多问题,还是其他呢,MDI子窗体?还有写数据库动态连接问题,DataModul控件如何使用,以及一些数据控件的组织.是不是还设计到一些设计模式问题.如果要系统学习设计模式 和软件架构这方面知识,应该看哪些资料呢.请大家赐教,高分奉送,绝对诚信,不够再加.

解决方案 »

  1.   

     DELPHI  開發也有少方式。  EXE+DLL+BPL ,EXE+DLL,EXE+BPL, 這些無非就是為了縮少單個應EXE的大小,方便模塊化開發。
             
     這裏面你要考慮訪問方式ADO, 幾層的架構,  多用戶操作的並發,等等。 遠程操作的處理!!! 問題太多,:)
      

  2.   

    建议你还是全部放到一起吧,不要用dll,这样便于控制。微软建议不要用MDI。我是用PageControl来模拟MDI的效果的。
    DataModule不是控件,你可以把它看成一个特殊的form,只用于放跟数据库操作相关的组件。
    设计模式,可以看《delphi模式编程》
    最后,说一句:一套好的框架实在是非常重要。框架设计得好,可以省下很多工作。
    比如说,你把一些公用的控件都放在基窗体上,而且在基窗体上实现大部分基础的工作,比如说,对数据库的插入、编辑、删除等等,然后,做具体的业务模块,你就会发现非常方便,像搭积木一样,写少量代码就可以了。
    一切源于积累。
      

  3.   

    刘艺的两本书,可以好好看看《Delphi面向对象编程》以及《DELPHI模式编程》。
      

  4.   

    上网搜索下,有《delphi设计模式简体版.chm》资料
      

  5.   

     建議不代表不能用。 在乎你的功力夠不夠!!
     項目大你做成一個EXE,???  服了
      

  6.   

    项目大的话,还是应该考虑用DLL封装,要不然你的exe文件就很大了,执行效率也不高,现在的程序都是针对数据库开发,利用数据库开发,可以有效的减小目标文件的大小和提高程序的执行效率。
      

  7.   

    推荐:delphi 三层开发经验汇总贴(大家来补充)
    http://topic.csdn.net/u/20081104/12/3F49F0F4-22AF-498E-A50F-8BEFE29BADA4.html
      

  8.   

    你说的很有道理,但是前段时间 我做过一个东西,就是用DLL封装的,发现Delphi的DLL实在是不好用,很多控件放到DLL中都有问题,BUG太多.所以现在想放弃DLL,换种方式.可能是功力不够吧,象DLL这种功能应该如何修炼呢?
      

  9.   


    问题是楼主的功力够吗?我是结合他的实际情况才给他这个建议的,有错吗?
    你服不服是你的事。
    再说了,用dll也是要考虑到实际情况的,并不是每个项目,或者说每套框架都适合用dll的。
      

  10.   

    DataModule很好用,你把数据库连接写到里边,其他的窗体即可通过DataModule打开数据库,写大程序建议考虑模块化,一个模块一个功能,不建议使用dll
      

  11.   

    如果需求够稳定,后续变化少而且系统使用者比较单一的话,做成一个exe未尝不可,毕竟现在硬盘足够便宜
    凡是过犹不及,dll分的太多,容易陷到“dll hell”里
    一个都不分,程序的部署分发也会是问题dll可以用在3种场景下:
    1、需要复用,比如多个exe有公用部分,
    2、需要经常变化的部分
    3、需要扩展的部分,比如可以用dll做插件,来扩展系统功能实际上“大中型”项目,基本上都不会是一个exe,同一个程序营业员和老总都能用,有可能就是子系统划分有问题
      

  12.   

    一些比较独立的业务逻辑封装成DLL还是很好的
      

  13.   

    我是支持用dll的,大中型项目如果使用单一的exe,以后维护起来很麻烦的,本来改的小BUG,就会造成全部更新,数据连接建议你在主程序起来的时候建立连接,然后调用其他的dll的时候把连接传给dll,dll的接口一定要定义成统一的,DLL建立窗口的时候你可以把连接继续传给窗口,由窗口自动赋给你的数据库控件,窗口可以划分开,比如说数据显示的DBGrid住窗口,编辑窗口,可以把编辑什么的功能在父窗体里写好, 那么继承下来的需要写的代码相对少一点了把程序编译成动态的,最后把控件统一发布出去,以后更新起来就会小很多
      

  14.   

    另外你可以把菜单和业务的dll关联起来,放在数据库或者本地配置文件,如果要设置权限那就放在数据库,程序只需要读取培植文件,动态加载菜单,因为dll的接口统一起来,所以以后要扩展dll,只要在配置里加上该菜单和相应的dll关联就可以了
      

  15.   

    有时候,我都想辞职换个环境去学习点新东西! 有感而发,欢迎接分讨论http://topic.csdn.net/u/20081226/09/f7a2ca50-fee5-4624-a33e-f3025f88b8a1.html
      

  16.   

    谢谢你的建议.
    前断时间写的一个程序,用了DLL,结果很多本来正常的控件在DLL中不正常了,BUG一个接一个,都怕了.所以现在不倾向用DLL封装,但是如果不用DLL的话,程序要模块化,该如何封装呢?
      

  17.   

    恩,这样的方法很好,最近就一直在改dll模块,的确很方便。
      

  18.   

    建议使用dll+exe这样便于模块化开发,另外,如果系统比较大,可以一部分一部分的开发,而且只要发布新的DLL,无需更新主程序,也算是插件式的吧