一直以来,我试图找到一种通用的、可扩展的操作办法来组织我的程序。至少到目前,我还没有成功。 首先说一下我的软件组织历程: 最开始,我采用DevExpress作为软件的皮肤,XPO访问数据库来处理一个小型的办公程序。不出意外,程序能较好的运行。但是,烦恼却来了:单位领导看到这个程序不错,说可以推广一下。可是我使用是盗版的控件,说出去没有底气,不能说是完全自主知识产权,另外,当数据流大了后,我没有做分页处理,没敢答应,只能说做下贡献,不敢推广。 于是,我开始了又一次的重构。这次,我采用了CSLA.net作为我的数据访问引擎,并设计了一种通用的操作方法:C#的泛型。我花了大约两个月的时间,并使其健壮起来。每一个类(相对于数据库中的一个表),可以直接通过泛型方法来进行增、删、改、查,并结合了CSLA.net优秀的权限管理机能,框架能很好的运行!我太高兴了,准备进行下一步的开发。烦恼又来了:当一个表单需要跨几张表时,我的框架却无能无力!比如我有个项目信息,项目下面有很多的人员,我想在一个类中处理时,框架却不能工作了,他仅对单个数据库表起作用。 这个打击对我来说非常大,两个月的努力白费了。看来,程序是不可避免的又要重构了。出错的原因是因为要跨几张表的类,较好的处理方法只能通过手工处理SQL来完成。C#的泛型处理增、删、改、查的方式显然不适用于较大型的程序。为了验证这个想法,我下载了大型游戏的服务端源代码进行分析,发现别人都是用SQL拼接的,速度快,且灵活。 下次,我准备重构时,经过深入思考,我决定还是采用WCF+ CSLA.net配合SQL语句来进行开发,界面采用微软提供的原始控件,这样在版权方面就不会有问题了。这里任然有潜在的问题:CSLA的交互能力很差。 很不甘心。因为我花了大量时间来熟悉DevExpress的TreeList控件,而且又很难找到一个好的类似控件。没有办法,只能再硬着头皮再去学习了。 经验教训:作为一名业余开发人员,应多注重知识的积累,不要把过多的精力放在第三方控件的收集与学习中,因为这种经验是无法扩展和通用的,另外还要多学习一下设计模式,组织良好的程序框架。
|