最近突然有这样一种冲动,想要开发一套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也不错!希望大家多提宝贵意见。
分享到:
相关推荐
总的来说,轻博客CMS系统php版是一个理想的个人博客解决方案,尤其适合那些希望拥有自己的网络空间、分享想法和心得的非专业程序员。它不仅提供了基本的博客功能,而且具备良好的可扩展性和定制性,让每个用户的博客...
偶然间进了大淘客的开发行列,觉的还不错,产品不用自己管理,只要做好自己的推广就好,但...所以当时就萌生了通过大淘客给的API开发自己的CMS,通过调用API来实现自己的网站自己做主的想法! 所以微淘客便就此诞生了!
您可以根据自己的想法设计网页,从而建立一个有自我风格的网站。 CMS001 3.0 改进说明:2011-4-1 1、改进了标签系统,在标签中支持标准的ASP代码,用{}来代替,让标签有更强的扩展性。尤其在隔行换色,条件输出...
ImpressPages是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新调整大小...
"苹果cms白菜app版本一"是该系统的一个特定版本,专为移动端设计,允许用户在手机或平板设备上方便地浏览和管理网站内容。此版本被称为“白菜app”,可能是开发者为了形象地表示其价格亲民或易于获取。 在这个...
【PHP实例开发源码-gpEasy CMS 内容管理系统】是一个基于PHP编程语言构建的开源内容...同时,对于想要搭建自己的网站或对内容管理有兴趣的初学者,gpEasy CMS提供了一个良好的学习平台,可以从中借鉴并实践自己的想法。
1、文章系统及专题系统采用CMS内核,用过的人都知道它强大的后期扩展性和SEO优化空间,殊不知,ECSHOP是市场占有率第一的电商CMS系统,他就是第一,他就是有原因,有优势排第一! 2、商品24小时自动采集,采集淘客...
DotNetNuke(DNN开源的.Net CMS系统) Dotnetnuke是一个免费、开源、可扩展、几近完美的内容管理系统。可广泛应用于商务网站、企业内网(Intranet)和外网网站、在线内容发布网站。Dotnetnuke是建立在微软ASP.NET平台...
wallcms 智能CMS系统是一个开拓性的智能建站系统!它是经过作者历时2年开发的一个产品 可以说产品本身凝聚着作者的独特的想法与心血 相信 WallCms不会令您失望的! 安装方法: install.aspx 进行安装 ! 如安装...
wallcms 智能CMS系统是一个开拓性的智能建站系统!它是经过作者历时2年开发的一个产品 可以说产品本身凝聚着作者的独特的想法与心血 相信 WallCms不会令您失望的! 安装方法: install.aspx 进行安装 ! 如安装...
4. **论坛或评论系统**:提供一个讨论区,让家族成员可以交流想法、提问或分享故事。 5. **隐私设置**:由于家族信息可能涉及隐私,系统需要有相应的访问控制,确保信息只对家族内部开放。 6. **模板和主题**:...
**概述**:乔客是一款历史悠久的ASPCMS系统,经历了多个版本的发展迭代。尽管近年来面临着竞争压力,但仍保持一定的市场份额。 **特点**: - **模块化设计**:集成了多种模块,如论坛、博客、视频、音乐、下载等,...
ImpressPages CMS是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新...
ImpressPages CMS是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新...
ImpressPages是一个开源的内容管理系统,它可以让你快速建立功能和有效的网站。 它的界面是用户友好的,可适应您的需求。 它的多语种的,绝对的自由和开放源码。 如果你花费大量的时间,编辑字体类型,重新调整...
Arlicle 是一个面对中小企业,小团体,个人和学校网站的解决方案,它操作简单,管理方便. Arlicle 是开源并基于GNU GENERAL PUBLIC LICENSE Version 2 协议发布的. 有没有一个小小的网站程序,可以完成小网站要的...
总的来说,Uno CMS是一个专为俄罗斯市场定制,且具有强大开源背景的CMS解决方案。它的高效代码优化、易用的管理界面以及丰富的社区资源,使其成为个人、小企业乃至大型组织构建网站的理想选择。通过持续的更新和社区...
因此,在这里我有了一个想法,专家将通过发布许多内容来共享他们的知识,并且人们可以按照建议进行操作。 将有一个评论系统,人们将在相关主题中提出疑问并获得答案。 这将是一个绝佳的平台,专家们可以在此平台上...
统一管理系统通用管理系统 - 适用于任何 CMS、CRM 或类似应用程序的通用核心2007 年,一个更好的 CMS 的想法在我们的脑海中诞生。 最初的步骤非常困难,一切都从头开始,并且非常缺乏经验。 TesiaManager CMS 2.0 版...