一、概述
CMS是Content Management System的缩写,意为“内容管理系统”。关于CMS的系统介绍,在网上可以找到很多,在此不做过多说明。CMS的产品也是多种多样,并且有各种平台的,价格从免费到上千万也是千差万别,每个企业在选择的时候需要根据自己的实际需要进行。
HIPPO是本人在吸取了BroadVision这个顶级的CMS系统的核心设计方式的基础上,加上Oracle EBS的一些特色技术,组成的一个小型CMS系统,考虑到商用的实际情况,目前可以支持MSSQL及Oracle,暂不提供对Access的支持,因为Access数据库缺少多种企业级数据库的特性,不能像其它数据库一样发挥优势。数据库连接封装了专门的组件,这个组件是本系统的基础模块,在各个层面都会调用,在用户自定义网站的时候,可以直接使用。
本产品的核心采用Meta-Data驱动方式,所谓Meta-Data,就是把所有的基础信息抽象出来,存储在数据库中,然后在使用的时候从里面进行调用,再组装成一个页面,这样就保证了系统的灵活性,并且为以后的多语言奠定了基础。
系统中大量的采用“对象”的模式,如“用户”,“内容”等,用户注册的模块里面不需要再向以前一样去写插入语句(INSERT),只要建立一个用户,并给用户对象赋上相关的属性值即可,用户登录验证的时候,只要调用相关的验证函数即可,不需要再写SQL语句进行验证,有效的防止了SQL注入攻击,并且可读性及可维护性都得到大大的提高。所有对象的属性都可以扩展,扩展的信息就存储在Meta-Data中。
本系统采用的是微软的dotnet技术架构,采用ASP.NET语言,使用灵活,共享ASP.NET的多种优势,特别是在多语言方面,可以实现真正意义上的多语言,多语言部分采用类似资源文件的方式,但是又有所不同,操作简单,语言的扩展只需要提供相应的翻译资料即可,不需要对程序进行修改,也不需要重新编译,最大限度的降低了后期维护的难度及成本。
为了达到更好的用户体验,采用了第三方现成的组件进行封装,这样可以得到相当完善的控件,并且开发速度快,质量高。特别是GRID组件的使用,使用手感就如同CS结构一样,可以实现多种多样的控制,比如右键菜单等,再加上多文档效果的使用,效果非常绚。当然,在得到较好的用户体验的同时,也会带来一定的负面效应,就是需要更大的带宽资源,因为复杂的界面需要传输更多的信息,不过在当今的网络情况下,加上我推广的实际情况,我认为增加一点带宽资源换来的好处,是非常值得的。当然这种很复杂的效果仅出现于后台管理程序,前端会员使用的网站继续采用传统的HTML方式。
关于前端网站的实现,本系统并没有像有些小型CMS产品那样提供现成的网站直接使用,而是以framework的形式提供给使用者,这样可以更充分的进行客户化定制,特别是美工方面,完全不需要本产品提供模板,而是可以采用标准的MVC架构进行开发,灵活自由,由于本产品封装了大量的组件及控件,所以开发难度极低,在开发过程中,不需要知道数据库的存在,直接调用数据库组件即可。很多大型系统均采用这种框架结构。
与前端展示不同,后端管理程序是本产品的组成部分,可以直接使用,并且在管理程序部分对系统的各个模块进行配置,在客户化中如果需要新增加功能,只要在菜单里加上相应的连接即可,不需要对主程序做过多的变动。
关于数据存储,有一个重要的指标就是安全性。本系统的登录密码采用MD5加密算法,与其它产品类似,即便能进入数据库,得到密码串,也无法反推出密码的原文,因此就无法进行正确的登录。但是针对所管理的内容,如果进入数据库,虽然没有密码,一样可以看到数据的真实内容,比如您的系统如果管理着上千万的会员信息,或房屋置换信息,那么会员的联系电话就成了非常敏感的信息,如果被竞争对手拿到,会对公司造成致命打击。针对这种情况,本产品有一个专门的加密策略,可以对某个表的某个字段进行单独加密处理,这样在数据库中直接查看的时候,就只能看到一些乱码,只有登录系统后才能看出原文。
从下一章开始,介绍一下Meta-Data驱动,这是本系统的设计核心所在。