本文首发于http://blog.sina.com.cn/s/blog_4c59c08a0100es79.html
两个星期前SMS短信平台项目就已经测试完毕,经历了最后一次更新和测试之后已经投入使用了。紧接着,也就是前一个星期,我们很快又进入了另一个项目——上海复旦大学一博导接的一个项目,DDPS(光盘直接打印系统)。因为这位博导一个人开发不能保证项目准时上线,所以就外包给我们公司了。这个系统用的是MVC模式,数据处理用的是LINQ to SQL。LINQ我们已经在短信平台项目中使用过了,只要SQL的基础不差,一般人都能快速熟悉,这次的挑战主要是MVC模式。
在备考软考的时候,我就了解了MVC的概念,即Model-View-Control。后来还进一步了解到它是属于表现层(UI)的模式,与我们之前项目中用到的三层架构不是一回事。接触DDPS项目之前,经理召集我们开了个会,告诉我们不要再去找MVC的资料系统学习,而是遇到问题之后再去找资料学习……我并没有严格地按他说的来做,而是在博客园上找得到了一套精简的主题为“从零开始学习MVC”的教程,快速的理解了MVC中URL请求、Controler/Action、Model、View之间的关系、工作机制,MVC中的常用方法等,从代码实例中快速学习了MVC。
凭着对MVC工作机制的准确理解,以及平时在学校练就的搜索资料的能力(这要感谢李胜老师),我负责的Linq动态查询、Html.DropDownList动态绑定,数据分页部分,最后都成功完成了。那个“Html.DropDownList的动态绑定”,在国内就只找到一篇相关文章……,有时间我会在我的博客中整理一篇文章介绍一下。
在团队中我还协助其他队友迅速进入了状态,不过这次我负责的部分,技术方面没多少难点,难点主要是对MVC的准确理解。而别人负责的“在线支付”、“光盘图案打印”、“发送邮件激活账号”,“验证码”等才是我比较倾心的,虽然在设计过程中我和他们交流过,但并不是我身体力行过的,还是有些遗憾……
这个项目不愧是博导设计的,里面面向对象的程序写的相当漂亮,很多地方都值得学习。当然,也有不足的地方,就是系统中的数据都是从Model中取到UserService类中然后供相应的Cotroler中的Action调用的。一个UserService文件,很多页面的Action都会用到里面的方法,团队开发很不方便,我只得弄个脱离源代码管理器的副本在本地测试好之后粘贴到UserService再签入……不过,微软的MVC1.0今年4月才发布,这位博导就应用了,还说自己没把科技转换成生产力,实在太谦虚了……
这个系统是我做的项目中让我感觉最吃力的,难怪别人说MVC让ASP.NET回到了ASP时代,因为MVC项目里,工具箱中拖的控件是用不了的……很多代码都要手写。这点虽然与BoBo社区项目要求用AJAX无刷新技术,杜绝用服务器控件有点类似,但这个项目却比多层架构的BoBo项目难多了。当然,现在我们已经熟悉这个系统了,对MVC也不再陌生了,加之那位牛叉的博导已经完成了这个项目的部分功能,之后的开发不会再有大的难点了。
参与这个项目的前几天是最难熬的,每天都在查资料和摸索, F9、F5、F11成了常用键……,很多地方都是反复单步调试,遇到有疑问的地方查找资料仔细研究才完成的……
这个星期主要是修复上周六测试出的项目中一些不完善的地方。终于我也接到了比较有挑战性的任务——循环链验证、上传图片处理等。JAVA组已经派了一部分人来测试这个项目,下个星期估计主要是修复项目中存在的一些BUG,实现新的需求。做完这个项目希望我们能有时间梳理一下MVC的相关知识,继续加强对OOP、XML、CSS、JavaScript以及框架,设计模式等的学习,积累自己的解决问题的方法论,不断的迭代,去拓展和深入。