HDWiki是一个功能很强在的系统,也提供了良好的插件机制,在扩展上也较容易,不过从以上的分析,你也可以看出,在内核方面还不是太完善,当前也有功能上的。
3.1 目录结构不合理
像base、HDWiki、db等类,其实可以放到其它的文件夹中,而目前是放在了model中,这显示不太合理。系统的核心是区别与一般文件的,model文件夹最好也只放模型文件。
3.2 核心类职责不明确
比如base类,目前它不但是控制器的父类,而且又具备了一些其它的杂项的功能,这不太合理。倒不如把它的职责进行拆分,从而使控制器更专注做自己的事情,而其它的功能该单独组成系统函数的就组成系统函数,该成助手的就写成助手。
3.3 核心功能不完善
比如说模板引擎,你无法用它方便的生成静态爷,而系统本身也不支持静态化的功能,做为WIKI系统,大部分词条是在完善几次之后再完善的机率就少了,所以,生成静态页还是很有必要的。再比如说缓存的方式,目前也只是支持文件缓存,像memcahced等其它方式的缓存还不支持。
3.4 静态化功能
如果能够让用户选择在后台是否启用静态化会更好,如果启用了静态化则在添加和修改词条时重新生成,这样会大大减少服务器的负载。
4 建议
以下仅仅是我在读了HDWiki后站在个人角度的建议,也不一定就正确,之所以写出来是为了总结下自己思考的结果。
4.1 调整目录结构
把系统的核心类、系统函数等放入单独的文件夹中。模型、视图和控制器可以根据用户的需求组成模块,而不是把所有的模型、视图和控制放在各自的文件夹中,这样会更灵活。
4.2 抽象出控制器和模型基类
目前系统的基类几乎就是base,这样显然不太合理,抽象出控制器基类,让它更专注于系统业务逻辑的处理这样会更好。而目前模型层的功能太弱,可以抽象出独立的模型基类,使数据的操作更方便,灵活。更详细些的可见图2,我们说下它们之间的关系。
Control类与Template之间
其实,Template最常用的也就是assign()、display()方法,所以,可以在Control中代理Template实现相关操作,这样用户就不用管tpl这个template的实例了,这样会比较透明。
Control和ConcreteControl之间
在Control中可以定义一些构子,常用的部分也可以定义成算法,这样让ConcreteControl实现会更灵活。
Model和Db之间
通过Model封闭Db的操作会更灵活,更方便,即使用户要扩展,那么可以直接从Model继承或通过其它办法,而不用像原来那样没有Model的基类。
当然还有其它的问题,比如在何时静态化,C和M之间如何交互,助手类如何加载,插件如何管理等等,就还要有其它的设计,把它们粘合起来,即相互独立又能很好的协作。

图2 各模型间的关系
4.3 静态化部分页面
目前系统采用的是动态访问,虽然提供了文件缓存功能,但如果提供了静态化功能会更好些,尤其是对首页,频道页进行静态化!生成静态页可以手动生成,当然可隔一定的时间自动生成一次更好些。
对HDWiki的分析就写到这里了,由于学识和能力问题也不能深入的写,文中可能也有错误的地方,还希望朋友们指出来,也希望与学习和使用HDWiki的朋友进行交流。
作者:林超旗
QQ:82099927
Email:lcq.1983@qq.com。
公司网站:http://www.h863.com。






