1、数据库:
(1)数据库类型:claroline只支持mysql,moodle可以支持多种数据库。claroline不需要考虑太多的事情,只需要考虑怎么样优化mysql,所以在数据库操作上要占一些优势。
(2)数据库分表:claroline为了加快查询,所以为每一个课程建了一组表(1.9版大约50个表)。而Moodle所有的课程,所有的资源都集中在那几个固定数据表中,这就造成了数据量大的时候,访问性能会降低!Claroline从基础的设计开始,就考虑了数据库的垂直和水平分隔,这样在做大型应用的时候性能会更好一些。另外Claroline还可以采用分库的模式,每个课程对应一个数据库,这样更容易实现数据库的分隔。
但是Claroline的这种模式带来另外一个严重的问题,会造成许多零星的小数据表,如果课程数量一旦多起来,会对单机的数据库服务器带来性能的瓶颈,因为每一个数据表就对应于文件系统的3个文件,如果按2000门课程的规模,则会给文件系统带来近百万个文件,这有时会直接会拖垮整个OS。
Claroline这种分表模式还带来另外一下毛病,一般不能放到租用空间上,因为它很容易达到数千个数据表的规模,给空间提供商的备份、管理带来很大的问题,所以很容易遭到封杀。
(3)Moodle已经实现了PDO,不知道为什么还没有应用起来。Claroline的数据库操作比较原始。
(4)Moodle2.0仅使用mysqli连接,不知道跟rc版有没有关系,虽然性能上会好一点,但有一些系统上没有mysql。
2、权限控制:
权限控制的整体设计上,两者出奇的相似,同样是基本角色的控制。
Moodle的权限控制做的很详细,仅数据库方面就动用了十多个表,并且基本上涵盖了每个模块。其中心就是用context表来控制每一个课程中的每一个模块,大多数的源代码中都要或多或少涉及一点context的事情。
这是一种好的设计,但是在性能上也会带来一定的影响。
Claroline的目标也跟moodle差不多,想控制每一个工具的使用,但是它没有去想控制每一个页面,比如Claroline对论坛工具的控制,只想控制到允许哪一部分人使用,而不是去控制哪些人可以访问哪些页面。它只用三个表,然后联合工具,来判断哪些课程中哪些工具,仅供哪些人使用。相比于moodle,更有点轻装上阵的感觉,所以性能会更好一些。
3、语言包
moodle的语言包比较繁琐,要近千个文件,而Claroline只有三个文件而已。在制作中文包方面,moodle绝对是一个体力活,而claroline只有不到三千行的翻译量,几个晚点就可以轻松解决。
从语言包的使用方面,moodle采取了一个比较好的方案,就是需要哪个部分就去读哪一部分,各部分互不干涉。在用论谈的时候,只需要去读论谈的语言包就可以了,不需要管wiki的语言。而claroline则使用了“全局”一些的方案,把所有的语言都放到一个文件中去,并且用一个全局变量去负责存储这些语言包,这造成了一些内存上的浪费,需要的和不需要的,都一起读出来了。1.9版以后,它还把网站的默认语言放到数据库里了。
但是也有一个好处,因为所有的语言都有一个变量控制,速度上应该有优势,典型的“以空间换时间”。
Moodle的方式也有两个坏处:(1)重复翻译,增加了翻译工作量。(2)也许会在某些情况下,老是去读翻译文件,浪费一些文件IO(没仔细去读,不知道具体的情况)。
gettext的效果还不错,为什么这两个系统都不用它呢?
4、模块
Claroline模块设置简直就是等于摆设,如果你想给它添加一个功能,那么只好重新做一个全新的工具,想放个钩子,没门!——没有几个人喜欢为了添加一个小的功能就去做一个工具,这是它设计最失败的地方。
moodle的模块分了很多类,基本上可以渗透到课程中的每一个地方。
但是Claroline工具(模块)要比moodle清晰,在根目录下一览无余,每个基本的模块也遵循工具的设计原则,代码位置也相对固定,读moodle感觉老是到处跳(也许是不熟悉有关)。
准备再读moodle的模块代码,然后再向下写……
正在读代码中,看法会不对,大家前来指正:
阅读(1830) | 评论(0) | 转发(0) |