无尽的爱――开源项目DNN研究心得

2005年12月,公司又接到了一个小型网站建设的项目,需求相对简单:页面要求美观大方,后台基本上就是新闻发布、留言板,最新产品推介、访问统计、论坛等常用功能,多年来网站建设的经验,使我深味中小型网站的需求特点:后台功能基本相同,而前台页面则要求精美,设计有创意,这就促使我多年来一直在寻求一种框架:它能够随心所欲的改变页面视觉效果,能够快速的开发定制模块,并且以插件的形式嵌入到现有的系统中,漫漫求索路,黄金框架哟,你到底在何方?
 
一次偶然的机会,我接触到了.net平台下名扬四海的开源项目DotNetNuke(简称DNN),一股电流刹时涌遍我全身,我感觉到了一见钟情,感觉到了全所未所的震撼,我希望与朋友们一起分享这恋爱般的感觉。
 
DNN首先是开源的,并且采用BSD开源协议,也就是说你可以任意修改源代码、传播、作为商品出售,仅有的要求就是保留源代码中的版权文字,这就解决了我多年来的心病:我知道动网新闻发布系统、微软官方论坛等都做得相当不错,可惜源代码都是不公开的,并且有着很严格的产权保护,你在做项目时不得不多考虑一些东西,但是DNN不一样,它几乎赤裸裸的以至于你可以为所欲为,并且得到了官方的稳定支持,学习和开发资料相对齐全,这么好的东西,我为什么不采用拿来主义呢?
 
DNN部署是很简单的,没费多大劲,我从官方网站( http://www.dotnetnuke.com )下载了安装版,数据库只支持SQL Server,不过它提供了接口,你可以自己开发让它也同时支持Oracle,Access等,但是工作量不小哦。
 
当我输入localhost进入刚安装完毕的DNN时,启动速度相对很慢,我的笔记本特别兴奋,硬盘使劲的转着,十几秒后终于看到了首页,界面设计属菜鸟级的,一如陈世美相遇秦香莲,没多大兴趣也没多大惊喜,而且扑面盖地的英文,好在本人英文水平也还凑合,据说和子怡姐姐不相上下,整个网站没有Flash。我很快找到了登录窗口,想进入后台看看,程序员嘛,多少都是偷窥狂,都渴望尽早的撕开那美丽的外衣,渴望尽早的感受那惊心动魄的内部结构。
 
我以最高权限Host用户进入了,后台不是我想象中,如动网一样的Outlook菜单,而是和前台没多大区别,多个了工具栏,每个模块,如新闻、友情链接都多了一个小箭头,鼠标晃过去就出现了菜单,很多功能所见即所得,真正震憾之旅开始了,要说清出这一大堆的前因后果,得听我细细道来。

 
我首先遇到的问题是汉化,我不可能拿个英文版的东西给客户吧?人家当时就可以用中文骂死我,但是我不知道DNN如何实现多语言?看了一下开发文档,原来DNN是以资源包的形式实现的,我当时大笑,英雄所见略同啊。就是有一大堆的xml文件,你要变成中文的,就加个xml文件,按条目将标签对照着翻过来就行了,而强大之处在于,你可以在后台直接上传个中文包就立即汉化,也可将自己手动汉化的内容导出成xml资源文件包。这里特别感谢dnnChina.net网站,将绝大部分都成功翻译成中文了,而且相当专业,我从dnnChina.net网站下载完中文包,几秒钟后,网站全成中文的了。不过后来经常发现一些乱码,于是我在web.config文件中,把默认编码utf-8换成了gb2312,乱码问题都顺利解决,我当时就纳闷:你utf-8不是号称支持全球文字吗?怎么一遇到中文就水土不服呢?郁闷了好久,始终不得其解,打电话咨询相关机构,老外一口英文,他说的话我全能听懂,可是我说的英文这家伙竟然一句都听不懂,这老外听力根本不行,于是更郁闷了。
 
汉化问题解决了,那么紧接着是改变页面视觉效果了,这是我最耗时间的地方,客户经常以页面设计来决定整个项目的成败,我当时呕心沥血,穷尽所思,终于设计出了令客户满意的页面,当时真的很崇拜自己,美工编码双料冠军,人世罕见(臭美一下)。那么如何将这些定制的页面套到DNN呢?DNN自己定义了一系列的标准,按照这个标准,我几乎当天就制作做完了HTML页面,传到后台中就自动套上了,真的很神奇啊。
 
皮肤问题搞定,然后就是要实现内容的后台添加了。DNN以模块的形式实现这些功能,比如,客户要一个在线调查,直接插入相关模块就行了,而且各个模块可以在页面中自由的移动,很方便。其实所有模块中,最重要的是就是文章管理模块了,可惜DNN没有自带这个模块,上网搜出一个免费的,备受国内开发者推崇的Article模块,可惜不太好使,没办法,只好自己开发一个。我觉得这才称得上是黄金框架,你开发一个模块,DNN提供了很好的接口,不用改变原系统一行代码,开发完成后,再以插件方式套上去,DNN自动识别并可以立即使用,真正的即插即用。
 
你如果能开发出第一个模块,其他的产品推荐、留言板模块就特别快了,不过很多模块DNN都自带了,不好使的可以到网上去搜,很快就可以找到,后来发现国外好多程序员在网上卖DNN模块,有个我花一天完成的同样功能模块,老外竟然卖2美元,真是黑啊,商业意识真强啊。
 
不过,当下DNN也有一些问题急待解决:1、性能不是很好,我用DNN搭建完成的这个项目后,用LoadRunner测试了一下,50人同时在线,首页打开竟要32秒,并且DNN是很耗资源的,我分析了一下,DNN由于产品化,为支持多语言、多数据库等功能增加了许多额外的代码,自带的模块从数据库读取数据时没做优化,都是按一股脑的绑到了DataSet中,当数据量到万条以上,服务器估计就得撑不住了。
 
2、自带的模块大多不太好使,很多模块连基本的翻页功能都没有,例如友情链接模块,就只支持文字而不支持图片链接,只好自己重新开发了。
 
3.调试代码太耗时间。由于DNN本身代码量就不少,每次要调试一个功能时,你最好旁边放杯茶,当你茶喝完了,要调试的代码也就出来了。后来自己开发模块时干脆就自己建立解决方案,把需要的dll都引入,这才大大提高了开发效率。于是当时我又纳闷了:Windows上千万条代码,也不知他们是怎么调试的?
 
中国软件现状:大企业买解决方案,小企业买产品,在中小企业建站这块,一直没有出现成熟的商业产品,此时,DNN却吹响了这个令人心动的号角,我大胆预测,未来两到三年,DNN在中小网站中必将大行其道,我将迎着这个趋势大步走在社会主义软件开发的康庄大道上。
 
这里有一本介绍DNN使用和开发的书籍,《Professional DotNetNuke ASP.Net Portals》是DNN开发者写的,权威性和可读性都很强,不过是全英文版的,有需要的朋友可以发电子邮件向我索取: [email protected]
 

你可能感兴趣的:(无尽的爱――开源项目DNN研究心得)