`
sunli_qun
  • 浏览: 13368 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个cms系统的想法

阅读更多
最近突然有这样一种冲动,想要开发一套cms系统,可能是因为网站作的多了,有很多问题想清楚了以后却没有机会去解决了。这里说说我的想法,大家给提提意见。

首先说我对一个cms系统的理解:

我理解一个最简单的cms系统应该实现的功能就是文档的录入,维护和展示。
当然只有这点是不够的,我们还有更多,比如用户系统,评论系统,广告系统,工作流,版本控制,抓取等等。不过我想那些都可以作为后续的迭代慢慢考虑起来,今天我主要是想跟大家说说最基础的部分。

我面临的问题:
本来一个文档的录入,维护和展示其实就是个增删改查,顶多在加上一个分类,但是实际情况可能要复杂一点。

首先,系统需要能支持不同类型的文档,比如在一个网站应用中,我们可能需要维护产品,商品,公司,新闻等等,这些都可以称作文档,如果给每一种文档建立一个表的话,很是麻烦。

第二:文档在不同的情况下需要有不同的属性,比如公司和新闻,他们的字段肯定是不相同的吧,那不同分类的公司呢,比如饭店和商场,描述他们的属性肯定也是不同的。

第三:文档和文档之间是存在关联的,比如:公司下面有很多的产品,之类的关系,其实这种关系也可以看作一种属性:我们可以这样理解,公司这个对象有一个属性,叫作“我的产品”这个属性的值是一个对象数组。

所以,其实我们看到,从面向对象的角度上来考虑,我们存储的就是一系列的文档对象,每个对象或者说每一种对象都有自己的属性,这些属性可以是:简介,名称,作者,发布时间,甚至可以是:图片,图组,对象数组等等等等。

我的设计思路:
基于以上的灵感,我想我们可不可以设计一套这样的系统,这个系统当中可以自定义对象类型和对象的属性,其实就相当于java当中的Class,只不过这个Class是放在系统后台设计的。

用户设计好了Class以后,我们就可以根据Class的定义动态的生成一个有关这个Class的录入,维护的表单供用户路如何维护文档对象。

至于查询,想象一下hibernate的那种查询方式,举例来说,我想查询一下所有的作者是刘祥的文章,这可能比数据库查询的方式要复杂一些,但是应该也是可以实现的。

底层的数据结构:
关于底层的数据结构,我想当然还是需要支持数据库的,那么数据库怎么实现这样的一个结构呢?
我是这样想的:
一个Class表,一个Object表,一个Property表和一个PropertyValue表

Class表表达了类的定义,它里面有一个类名,当然Class表本身是自关联的树型结构(继承,呵呵)
Object表和Class表是多对一的关系,每一个对象都有一个类型,这个类型是类树下面的一个子节点。
Property表是属性的定义,比如名称,它和Object表之间通过PropertyValue表,也就是属性的取值关联,也就是说,一个对象在某一个属性上可能有一个值。
当然PropertyValue必须能实现多值(对象数组的情况)
另外Property表和Class表也是有关系的(类决定了应该有哪些属性)而且这种关系应该能实现继承,我的意思是,如果父类有的属性,自类自动继承。
这样的话,根据Property和Class之间的关系,我就可以动态生成录入表单了!

前台页面的展示:
前台页面的展示我们还是假设最基本的需求:列表页面和终端页面
先说终端页面,终端页面就是一个对象的完全展示页面,我是这样想的,如果我们能实现一个api,从对象中取出相应的属性,就好像company.getName那么简单的话,其实终端页面的制作就应该像填表一样的简单。
列表页面,列表页面接受复杂的查询条件,比如,我要查所有的上海的,有打折的,卖乔丹牌衣服的商店
其实,在这种情况下,所有复杂的查询都归结为两种条件:类型和属性,在上面的例子里面,商店是类型,其他的条件都是属性,我想如果靠sql查出这些东西的话,应该也不是难事,sql的例子我就不列举了,还有一个好处就是,整个发布平台上的90%的查询我应该可以通过这一个接口完成。


用户体验:
这样一套系统,你可能会这样使用他:
1、初始化系统,建立类树
2、在类树上面建立属性,完成了这两步,就相当于我们的类图做出来了!
3、录入文档对象,系统会根据类设计的结果,动态生成表单,供用户录入
4、制作前台页面模板,把你想显示的信息像填表一样的添进去就可以了(这一不做得好的话,应该可以让非技术人员完成)

其它问题:
1、工作流:工作流传递的就是对象,所以和工作流系统应该可以对接
2、版本:这样的一套系统的版本其实是非常容易控制的,因为每个属性都是单独存放的,所以两个版本之间我甚至可以比较出作了那些更改
3、性能:性能我一直是习惯最后考虑的东西,不过这个东西比较复杂,性能肯定没有传统的模式好,但我们也有我们的优点,那就是重用度高,在重用度高,接口高度统一的情况下,我想一些缓存的方案是比较容易集成的!

我希望能把这套系统做起来,单纯是因为兴趣问题,如果有可能的话,不断完善,把它搞到一个开源的project也不错!希望大家多提宝贵意见。
分享到:
评论
5 楼 luoba 2008-12-07  
正开始写CMS
4 楼 agile_boy 2008-01-09  
有人用grails开始实现类似wiki的东东,你可以参考一下
http://gatewiki.sourceforge.net/
3 楼 lijie250 2007-12-12  
用JAVA做CMS系统是不是成本高了点!给别人订做差不多!不过分析还是不错的!
2 楼 auauau 2007-12-12  
不错的想法!
我看过一些其他的cms,也有你说的这种实现方法。整个设计当中,最不容易控制的就是查询,保证查询的准确性和效率是一个问题。
1 楼 sunli_qun 2007-12-12  
有一点刚刚想到的,补充一下,Property也应该有一个Class的字段,因为一个属性也有它的类型嘛。
可以先弄几个基本类型放在系统当中,比如字符串啊,文本域拉,图片,附件什么的,也可以让一个属性属于某一个系统元数据中的Class,还可以是List<Class>这种形式。

相关推荐

    轻博客CMS系统php版

    总的来说,轻博客CMS系统php版是一个理想的个人博客解决方案,尤其适合那些希望拥有自己的网络空间、分享想法和心得的非专业程序员。它不仅提供了基本的博客功能,而且具备良好的可扩展性和定制性,让每个用户的博客...

    基于大淘客API开发的一套CMS淘客网站系统!

    偶然间进了大淘客的开发行列,觉的还不错,产品不用自己管理,只要做好自己的推广就好,但...所以当时就萌生了通过大淘客给的API开发自己的CMS,通过调用API来实现自己的网站自己做主的想法! 所以微淘客便就此诞生了!

    CMS001 3.0 Beta.rar

    您可以根据自己的想法设计网页,从而建立一个有自我风格的网站。 CMS001 3.0 改进说明:2011-4-1 1、改进了标签系统,在标签中支持标准的ASP代码,用{}来代替,让标签有更强的扩展性。尤其在隔行换色,条件输出...

    ImpressPages CMS v1.0.14 开源英文建站系统.rar

    ImpressPages是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新调整大小...

    苹果cms白菜app版本一.zip

    "苹果cms白菜app版本一"是该系统的一个特定版本,专为移动端设计,允许用户在手机或平板设备上方便地浏览和管理网站内容。此版本被称为“白菜app”,可能是开发者为了形象地表示其价格亲民或易于获取。 在这个...

    PHP实例开发源码-gpEasy CMS 内容管理系统.zip

    【PHP实例开发源码-gpEasy CMS 内容管理系统】是一个基于PHP编程语言构建的开源内容...同时,对于想要搭建自己的网站或对内容管理有兴趣的初学者,gpEasy CMS提供了一个良好的学习平台,可以从中借鉴并实践自己的想法。

    淘宝客优惠券CMS网站程序源码 TaobaoCouponCMS.rar

    1、文章系统及专题系统采用CMS内核,用过的人都知道它强大的后期扩展性和SEO优化空间,殊不知,ECSHOP是市场占有率第一的电商CMS系统,他就是第一,他就是有原因,有优势排第一! 2、商品24小时自动采集,采集淘客...

    DotNetNuke_04.05.03asp.net cms 内容管理系统

    DotNetNuke(DNN开源的.Net CMS系统) Dotnetnuke是一个免费、开源、可扩展、几近完美的内容管理系统。可广泛应用于商务网站、企业内网(Intranet)和外网网站、在线内容发布网站。Dotnetnuke是建立在微软ASP.NET平台...

    wallcms智能CMS系统 1.1 内测版.rar

    wallcms 智能CMS系统是一个开拓性的智能建站系统!它是经过作者历时2年开发的一个产品 可以说产品本身凝聚着作者的独特的想法与心血 相信 WallCms不会令您失望的! 安装方法: install.aspx 进行安装 ! 如安装...

    wallcms智能CMS系统 v1.1 内测版.rar

    wallcms 智能CMS系统是一个开拓性的智能建站系统!它是经过作者历时2年开发的一个产品 可以说产品本身凝聚着作者的独特的想法与心血 相信 WallCms不会令您失望的! 安装方法: install.aspx 进行安装 ! 如安装...

    秦氏家族源码 php cms

    4. **论坛或评论系统**:提供一个讨论区,让家族成员可以交流想法、提问或分享故事。 5. **隐私设置**:由于家族信息可能涉及隐私,系统需要有相应的访问控制,确保信息只对家族内部开放。 6. **模板和主题**:...

    常见ASPCMS系统综合人气排名

    **概述**:乔客是一款历史悠久的ASPCMS系统,经历了多个版本的发展迭代。尽管近年来面临着竞争压力,但仍保持一定的市场份额。 **特点**: - **模块化设计**:集成了多种模块,如论坛、博客、视频、音乐、下载等,...

    ImpressPages CMS 4.2.5.zip

    ImpressPages CMS是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新...

    ImpressPages CMS 2.6.zip

    ImpressPages CMS是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新...

    ImpressPages CMS v2.6.rar

    ImpressPages是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新调整...

    Arlicle cms 网站系统 v0.74.gz

    Arlicle 是一个面对中小企业,小团体,个人和学校网站的解决方案,它操作简单,管理方便. Arlicle 是开源并基于GNU GENERAL PUBLIC LICENSE Version 2 协议发布的. 有没有一个小小的网站程序,可以完成小网站要的...

    针对俄罗斯进行了优化的免费CMSUNO CMS -开源

    总的来说,Uno CMS是一个专为俄罗斯市场定制,且具有强大开源背景的CMS解决方案。它的高效代码优化、易用的管理界面以及丰富的社区资源,使其成为个人、小企业乃至大型组织构建网站的理想选择。通过持续的更新和社区...

    CMS系统:一个用于学术目的和实践后端开发的网站

    因此,在这里我有了一个想法,专家将通过发布许多内容来共享他们的知识,并且人们可以按照建议进行操作。 将有一个评论系统,人们将在相关主题中提出疑问并获得答案。 这将是一个绝佳的平台,专家们可以在此平台上...

    UMS:UMS Lite - 通用管理系统 - 适用于任何 CMS、CRM 或类似应用程序的通用核心

    统一管理系统通用管理系统 - 适用于任何 CMS、CRM 或类似应用程序的通用核心2007 年,一个更好的 CMS 的想法在我们的脑海中诞生。 最初的步骤非常困难,一切都从头开始,并且非常缺乏经验。 TesiaManager CMS 2.0 版...

Global site tag (gtag.js) - Google Analytics