Spiga

纪念那个死去的ASP.NET CMS系统,附死了的源码

2010-12-12 17:08 by Loning, 3288 visits, 收藏, 编辑

    该项目是在高中保送之后的那段时间开发的,那时朋友希望放弃ASP的CMS开发,转而做其他平台,由于我对.NET比较喜爱,便强力推荐他做.NET的。不过由于当时我比较追求所谓的架构,朋友也不怎么理解,最后就自己一个人做了。当时也是一边学习一边做,很多东西理解的层次自然十分浅薄,比如三层,当时根本不懂,以为一个项目就是一层,接口单独出来一个项目以为又多出一层,呵呵。做也是比着葫芦画瓢,抄PETSHOP。但是真的做完这个项目,我对.NET才算是真正了解了。记得当时也是在园子吧,看天轰穿老师的视频,学到好多控件的用法。

    由于当时就认识到.NET WEBFORM效率极其低下(每次数据回发量太大了)、页面元素难以控制,因此在网站前台决定不使用ASP.NET的任何控件,完全基于类似ASP、PHP的输出方式。当时不了解MVC,ASP.NET官方的MVC也没出来。而在web的后台,为了开发的便捷性,使用了WEBFORM,当然后果是十分严重的,最近用chrome打开后台发现菜单错位了,好在IE中还是正常的。但是如果没有WEBFORM,相信我一个人难以做出那么多东西来。便捷的东西就是这样,很难以去控制其中的方方面面,即便是有一些方法能够实现,在真正实现之后发现比自己写一套还要麻烦。

Figure 1 错位了

    该项目是比着PETSHOP做的,因此分了三层,在数据层使用了一个支持ACCESS与MS SQL的组建(其实并不是完全兼容的,只是在这个项目中没用到譬如触发器之类的东西罢了,当时居然还会考虑ACCESS…)。因此对两种数据库有一些兼容性,比较讽刺的是兼容却放在Data Layer来做了,其实自始至终也没实现过其他的Data Layer,然后这个项目就死掉了。

    先说说后台的开发吧。微软还是很强大的,能在WEB上做出事件驱动来。感觉很强大的就是数据绑定功能,在三层的基础上,我只要为每一个Data Source指定一个Business Object,.NET就可以通过反射自动的提供相当多的信息到Grid View,Detail View里面,然后需要修改的地方就是改改每个Column的Name。对于需要特定显示的地方,还可以更改相关控件的模板,在模板中可以用各种各样的控件,而且也是支持绑定的,所以在这一层的工作相当清晰,就是控制数据的表现形式。而且通过Data Source,可以很轻松的实现几个控件的联动。Data Source可以很方便的绑定Business Object提供的方法的相关参数,可以绑定到Request,绑定到某个控件的属性。

Figure 2 后台界面截图

    在后台的开发过程中,对自定义服务器控件,自定义用户控件等都有了一定的了解。控件化的好处就是拿来就用,FCKeditor(现在应该叫CKedirot了)的那个控件很轻松的就融入了系统。还了解到了ASP.NET的权限控制,对目录的权限也可以有,在系统中也加入了相关的配置页面。

    在前台,受朋友开发的ASP系统的影响,引入了使用标签的模板系统。自己写了一套asp.net的小型模板,标签形式都是自定义的,而且是可扩展的,也用了反射。但是现在看来,用反射而又没有做一些处理,效率应当是十分低下的。其基本工作原理就是正则表达式匹配标签,而后通过标签的进行多态,把相关的内容返回然后REPLACE。后期发现确实挺慢的,还引入了缓存,其实就是很傻的放到ASP.NET的内存中,缓存策略也很傻,更改时删掉那个缓存项。

Figure 3 前台某模板界面

    前台直接实现了一个Http Module,这个Module是可配置的,也是通过反射来加载一些模块。现在看来Http Module有点像Router,加载的模块有点像Controller了。

Figure 4 配置节点的一些信息

    前台的交互则是使用的jQuery + Web Service,由于Web Service支持Json的序列化,所以相关数据交互还是很轻松的。

Figure 5 基于Web Service与 JS 的登录系统

    这么多层,代码自然不是全部是自己写的,用了代码生成器来做跟数据库有关的事情。自己下了个模板改了改,就是这样。

    对.NET的配置有了一些了解,譬如如何自定义配置节点。强类型的配置信息还是比较好用的,最近在WINFORM下做配置信息都没那么麻烦的做过了,直接用Settings。也没有比较过二者有何不同,或者就是一样的?

    用户系统则使用了ASP.NET的Membership,挺强大的,而且不用那些登录控件也完全可以实现登录。自己实现了一个Membership Provider,毕竟要使用三层中的Data Layer。

    已经很长时间没动过这个代码了,今天翻硬盘的时候偶然发现的,但是又不忍心删掉,写此文以纪念。

    代码在此提供下载:http://wiisio.qiqikaka.com/kingcms.7z

    用户admin 密码 123456

 

作者:马昊伯 a.loning at gmail.com

出处:http://loning.cnblogs.com/

 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,否则保留追究法律责任的权利。
Add your comment

20 条回复

  1. #1楼 彦斌      2010-12-12 17:15
    楼主是在高中学开发的啊? 好早哦。
     回复 引用 查看   
  2. #2楼[楼主] Loning      2010-12-12 17:16
    引用彦斌: 楼主是在高中学开发的啊? 好早哦。

    比较喜欢写程序:)之前做过asp的...
     回复 引用 查看   
  3. #3楼 netguid      2010-12-12 19:47
    鼓励
     回复 引用 查看   
  4. #4楼 yongfa365      2010-12-12 20:02
    传说中的kingCMS的.net版,怀念
     回复 引用 查看   
  5. #5楼[楼主] Loning      2010-12-12 22:25
    引用yongfa365:传说中的kingCMS的.net版,怀念

    囧,传说。。
     回复 引用 查看   
  6. #6楼 Alan@Net      2010-12-13 01:22
    高中,那一年的事情了?这么早就接触ASP.NET了?
     回复 引用 查看   
  7. #7楼 Aloner [Sofire]      2010-12-13 08:23
    厉害!高中就可以接触了。
     回复 引用 查看   
  8. #8楼 吉他爱好者      2010-12-13 08:32
    支持一下吧!我在开发站群,cms已出来了,正在整站群
     回复 引用 查看   
  9. #9楼 大肚小男人      2010-12-13 09:11
    支持楼主!谢谢,已经你死掉的源码好好安葬了!
     回复 引用 查看   
  10. #10楼 欧阳寒玟      2010-12-13 09:15
    支持哦,我们高中的时候只有接触vb6和asp,。net才2003好像,还是楼主幸福哦,接触.net都是在大学了,悲了个具的。
     回复 引用 查看   
  11. #11楼[楼主] Loning      2010-12-13 10:59
    引用欧阳寒玟:支持哦,我们高中的时候只有接触vb6和asp,。net才2003好像,还是楼主幸福哦,接触.net都是在大学了,悲了个具的。

    那时候偶也是自己掏钱买书看啦,特别是上语文课啊,还有XX没用的文科的时候,他们看小说偶就看C#,仅此而已。。。
     回复 引用 查看   
  12. #12楼[楼主] Loning      2010-12-13 11:00
    引用吉他爱好者:支持一下吧!我在开发站群,cms已出来了,正在整站群

    这个代码其实不好的,仅供参考了,.net还是mvc吧
     回复 引用 查看   
  13. #13楼[楼主] Loning      2010-12-13 11:00
    引用大肚小男人:支持楼主!谢谢,已经你死掉的源码好好安葬了!

    呵呵~~
     回复 引用 查看   
  14. #14楼 think_fish      2010-12-13 13:23
    我接触.net是毕业一年后……
    整个大学基本上就是天天画建筑图……
     回复 引用 查看   
  15. #15楼[楼主] Loning      2010-12-13 13:25
    引用think_fish:
    我接触.net是毕业一年后……
    整个大学基本上就是天天画建筑图……

    (:^_^:)画图也是很好的。。。。偶现在其实也整天画图写文档。。。唉。。。
     回复 引用 查看   
  16. #16楼 无邪兮      2010-12-14 16:54
    高中就学了.
    强啊!
     回复 引用 查看   
  17. #17楼 airwolf2026      2010-12-14 18:11
    俺小时候也想干楼主那样的事情...
    可是自从有了电脑后就game了....
     回复 引用 查看   
  18. #18楼[楼主] Loning      2010-12-14 18:12
    @airwolf2026
    我当时也是边dota边写的。。。
     回复 引用 查看   
  19. #19楼 airwolf2026      2010-12-14 20:36
    哈哈.那楼主潜力无限哈.
     回复 引用 查看   
  20. #20楼 please_借过      2010-12-17 15:50
    够早哇,高中就已经开发了
     回复 引用 查看