none
winform(C/S)应用程序如何重新设计? RRS feed

  • 问题

  • 原有的应用程序设计如下:(感觉很难管理) 一个主窗体:菜单栏,层叠式导航菜单,工作区,状态栏。其中工作区是TabControl将子窗体添加到主窗体中的或移去子窗体 1、通过导航栏新建子窗体到工作区,将主窗体的菜单栏与子窗体的菜单栏合并 2、有时候要通过子窗体中的事件生成一个新的窗体到主窗体中作为一个新的子窗体存在 现在因程序越来越大,窗体越来越多,我想将原来一个项目里的窗体按类型分开到几个项目中去,分主项目(主窗体)和其他一些子项目(按类型分的),但原有的功能不变: 首先,不知道我的设计模式有没有问题 其次,我在网上找了有关反射方面的信息,(以前还不知道这个概念,有可能表达不对),可以将子项目中的窗体反射到主窗体中去,但不知道怎么将子窗体中的菜单与主窗体中的菜单合并,另外也不知道如何通过子窗体中的事件在主项目中的主窗体上创建新的子窗体 最后,我说的都是UI层设计,是不是UI层是不能分开调用的 在此先谢谢各位,请大家赐教,谢谢
    2009年12月3日 15:08

答案

  • 你好!
         我谈谈个人的一些意见,希望对你有帮助:
         1,建议把一些公用的类(窗体类)放到类库项目,其他项目可以引用这个类库!
         2,建议抽象出一些窗体基类,也可以把这些基类放到类库项目,其他项目可以引用这个类库!其他窗体继承这些类,这样可以减少工作量,并且可以让窗体的风格尽量的统一!
         3,合理的使用TabControl来减少窗体的数量!实现同一个业务功能的一些控件可以用TabControl来组织分类,放到一个窗体中,这样可以减少窗体的数量!
         4,如果没有充足的理由,不要建立过多的项目,这样反而不容易维护!
         5,另外,看目前的状况,开始并没有做分层的设计,如果考虑到今后的扩展性,重用性和维护性,可以采用流行的三层架构来重新设计系统,当然工作量比较大,请根据项目的实际情况做决策!现在的情况是你改动UI,很可能要改动代码,这需要也需要根据项目的实际情况做一个权衡!
         6,不要盲目的动手,这个工作量很可能比想象的要巨大,而且存在不确定的风险!很可能出现的情况是,比重新开发的工作量还要大!如果要做重构,一定要做好版本管理工作,每次改动都要备份,一旦出现意外,可以版本回滚,尽量减少损失啊!
         6,另外一个非技术的建议,最好还是聘请有经验的架构师来重新设计系统,然后全程的指导重构,不然存在很大的风险!
        
    周雪峰
    2009年12月3日 16:13
    版主