关于Winform的点点滴滴

           最近从ASP.NET转到Winform上开发了几个项目。现在总结一下开发经验。
          1.做过的这几个winform程序都是利用分层做。虽然几个都这是么做的可是感觉不是很好,尤其是颇有一种杀鸡焉用宰牛刀的感觉。毕竟N层架构比较
适合做服务器应用程序,因为服务器应用多是比较复杂可以用N层开发这种结构去做。但是对于桌面应用程序来说最好采用分模块的横向系统结构去做。
仅仅是一个一个想法还没有正在在项目里面试过。。。
          2.在做winform开发的时候也可以很容易的实现模块话开发。尤其是微软在winform下用一个UserControl类(并非System.Web下的用户控件,
而是System.Windows.From下的用户控件类)可以通过一个主界面里面的一个panel控件(或者其他容器控件)的Controls属性的Add方法实现对控件的动态调用。
当然也有人把很多panel放到一个窗体里面燃用通过事件机制使指定的panel停靠的窗体。虽然这样也可以,但是项目略微一大管理和阅读这些代码就比较费劲。当然
并不是所有的项目都适合采用用户控件这种方式。如果你按照功能划分出来不少的用户控件。但是每个用户用户控件直接通信相当的频繁,这样每个用户控件又引用其
他的用户控件,管理起来也是相当复杂的。所以最好是权衡一下。
          附注:Visual C++里面实现类似这种模块化界面的功能是通过CDialog类来实现的。即一个对话框里面可以动态的加载其他对话框。
         3.主要的界面窗体最好封装的一个单独的或多个模块中(最好是dll)。不要都集中到一个exe程序中。这样做主要是为了有时候需要在程序启动的时候做一些特殊的处理、
诸如启动画面可能会应用的多线程之类的复杂类或者负载的程序结构,个人认为最好单独处理为好,这样编译出来的.exe文件仅仅提供一个入口点。腾讯的qq是采用了这种方式
如果项目规模不大,可以直接把所有代码放到一个模块中,但是每个功能模块可以采用不同的命名空间放到项目文件夹中,这样便于集中管理又可以在编译的时候编译成一个程序
集。例如微软的企业库也是采用类似的方式。
        4.通过资源文件我们可以很容易的实现系统语言版本的切换。但是管理语言版本确实一个相当复杂的工作。我们第一个项目是一个进销存的管理系统。刚开始做的
时候没有考虑多语言。但是到了最好要求加入繁体、英语。这样一改本来一个不大的项目,当当增加资源文件加入切换语言的功能就多划分了一周多。所以在一开始就考虑一下
多语言的问题。如果放到最好去做当当打字也够人受的!
        5.如果做共享软件一定记住关于软件的注册信息不要存放到数据中。因为多数共享软件很多用到了access数据库。而access数据库的密码形同虚设。随便个工具就可以破解。
        6.多线程的问题,winform对于asp.net似乎天生就是一个单线程的应用程序。每次只有一个线程可以访问用户界面,任何交替进行的线程都需要通过windows消息泵来处理。
        7.Winform本身运行给人感觉比较慢,尤其是在一个窗口上有很多控件的时候。除了优化必要的算法发,多数我会有一个启动加载会面来加载所有控件已经窗体并且用其构造函数进行初始化。然后调用的时候直接调用其Show()方法。

posted @ 2009-09-12 16:08  Justin Liu  阅读(866)  评论(0编辑  收藏  举报