`
sunli_qun
  • 浏览: 12866 次
  • 性别: 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>这种形式。

相关推荐

    基于大淘客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网站程序源码 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 进行安装 ! 如安装...

    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 协议发布的. 有没有一个小小的网站程序,可以完成小网站要的...

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

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

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

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

    千博购物系统 v2019 Build1001

    千博免费开源网上商城购物系统是一套能够适合不同类型商品、超强灵活的多功能在线商店系统,为您提供了一个完整的在线开店解决方案。网上商城系统除了拥有一般网上商店系统所具有的所有功能,还拥有着其它电子商城...

    MoMoCMS企业建站系统 v4.4.7.rar

    那么整个CMS系统所有问题水到渠成,迎刃而解。 在MoMoCMS(默默企业建站系统)中,前端只有2个页面,分别为首页和内页。 而其他产品、列表、新闻页面全部由后台生成。 只需在内页上分别加载不同的功能模块即可。 ...

    ImpressPages CMS v4.2.5.zip

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

    MoMoCMS企业建站系统 v5.9.zip

    然而,我并不满意,很多系统更多的像一个单一整站系统,而不是真正意义上的CMS,后台菜单项的繁琐是我所不满意的。 CMS重要的是什么?不是SEO,不是静态化,不是全部后台智能控制。 而是要有自己的中心思想,一套...

    lin-cms-tp5:ThinkPHP 5.1实现的简单实用的CMS

    专栏教程连载更新中,通过实战开源前后端分离CMS——Lin CMS全家桶(lin-cms-vue & lin-cms-tp5)为一个前端应用实现内容管理系统。一套教程入门上手vue、ThinkPHP两大框架,自用、工作、私单一次打通。 读者反馈: ...

    inoERP:inoERP是基于PHP的开源企业管理系统,可以与多个数据库一起使用-例如Oracle 12c,MariaDB,MySQL。 ERP系统包含运行任何制造,服务或分销组织所需的所有功能。 这些功能与Oracle R12 Fusion Application和SAP非常相似。 它还包含一个轻量级CMS,可与ERP系统无缝集成

    inoERP背后的想法是提供一个基于动态拉动的系统,其中需求/供应经常变化,而传统的计划系统(例如MRP或看板)无法提供良好的库存周转率。 什么是动态拉力系统 动态拉力系统是拉力系统的高级版本,它涵盖了传统拉力...

Global site tag (gtag.js) - Google Analytics