当前位置:首页>>软件教程>>新闻内容  
内容管理系统的设计和选型
作者:车东 发布时间:2004-1-30 8:53:07 | 【字体:

写于:2003/03 最后更新: 01/30/2004 08:48:15

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/cms.html

关键词:"content manage system" cms 内容管理系统

内容摘要:

内容管理系统概述


内容管理系统是一个很泛的概念:从商业门户网站的新闻系统到个人的Weblog都可以称作发布系统。

  • 框架型:本身不包含任何应用实现,只是提供了底层框架,具体应用需要一定的二次开发,比如Cocoon,Vignette;
  • 应用型:本身是一个面向具体类型的应用实现,已经包含了新闻/评论管理,投票,论坛,WIKI等一些子系统。比如:postNuke xoops等;

但无论如何,在发布系统选型之前,首先了解自己的实际需求是最重要的:想根据现成系统将自己的需求硬往上照搬是非常不可取的。访问量,权限控制和各种功能需求。每个模块和功能自己都比较清晰一点以后,再去网上找找类似的实现:你会发现其实每个环节到目前上都有比较成熟的实现了,而且还在不断完善和发展中,如果没有:你的需求太特殊,或者可以尝试分解成更小的系统组合实现。

内容管理系统被分离成以下几个层面:各个层面优先考虑的需求不同

  1. 后台业务子系统管理(管理优先:内容管理):新闻录入系统,BBS论坛子系统,全文检索子系统等,针对不同系统的方便管理者的内容录入:所见即所得的编辑管理界面等,清晰的业务逻辑:各种子系统的权限控制机制等;
  2. Portal系统(表现优先:模板管理):大部分最终的输出页面:网站首页,子频道/专题页,新闻详情页一般就是各种后台子系统模块的各种组合,这种发布组合逻辑是非常丰富的,Portal系统就是负责以上这些后台子系统的组合表现管理;
  3. 前台发布(效率优先:发布管理):面向最终用户的缓存发布,和搜索引擎spider的URL设计等……

内容管理和表现的分离:很多成套的CMS系统没有把后台各种子系统和Portal分离开设计,以至于在Portal层的模板表现管理和新闻子系统的内容管理逻辑混合在一起,甚至和BBS等子系统的管理都耦合的非常高,整个系统会显得非常庞杂。而且这样的系统各个子系统捆绑的比较死,如果后台的模块很难改变。但是如果把后台各种子系统内容管理逻辑和前台的表现/发布分离后,Portal和后台各个子系统之间只是数据传递的关系:Portal只决定后台各个子系统数据的取舍和表现,而后台的各个子系统也都非常容易插拔。

内容管理和数据分发的分离:需要要Portal系统设计的时候注意可缓存性(Cache Friendly)性设计:CMS后台管理和发布机制,本身不要过多考虑“效率”问题,只要最终页面输出设计的比较Cacheable,效率问题可通过更前端专门的缓存服务器解决。

此外,就是除了面向最终浏览器用户外,还要注意面向搜索引擎友好(Search engine Friendly)的URL设计:通过URL REWRITE转向或基于PATH_INFO的参数解析使得动态网页在链接(URI)形式上更像静态的目录结构,方便网站内容被搜索引擎收录;

---------------    ---------------     ---------------                    
|新闻管理子系统| | BBS论坛子系统| | 商城子系统 |
--------------- --------------- ---------------
| \ / | \ / 内
| ----------|--- \ / 容 <== 业务子系统(零件生产)
| / | \ \ / 管
--------------- | --------------- 理
|专题制作子系统| | |全文检索子系统|
--------------- | ---------------
\ | /
-------------------------|---------------------------------------------
\ | / 频
--------------- 道 <== Portal系统(产品组装)
| Portal 系统 | 管
--------------- 理
|
-------------------------|---------------------------------------------
| 前
| 台 <== 发布系统(分发代理)
--------------- 发
|前台发布系统 | 布
---------------
/ \
/ \
--------------- ---------------
| 用户浏览器 | |Search Engine|
--------------- ---------------

这里,我把在内容发布系统选型中找到的一些资料总结如下:

    内容管理系统的选型

    关键词:CMS Content Manage System

    CMS行业研究
    http://www.cmswatch.com
    http://www.cmsreview.com
    http://www.cmsinfo.org

    CMS讨论邮件列表
    http://www.cms-list.org

    商业软件和开源项目列表:
    http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Content_Management/

    推荐:基于XML的发布框架
    http://cocoon.apache.org/

    具体实现复杂程度可能会根据需求的不同而不同,但越是大型的系统越是需要分工:将内容(数据),表现(模板)和应用逻辑(程序)尽可能分离和对这3 者的管理。

    Portal---门户系统
    Open source Projects:
    http://jportlet.sourceforge.net/
    Apache Software Foundation: Jakarta JetSpeed 1.3
    JetSpeed home page: http://jakarta.apache.org/jetspeed/site/index.html
    JetSpeed Portlet API: http://cvs.apache.org/viewcvs/jakarta-jetspeed/proposals/portletAPI/
    http://www.liferay.com/home/index.jsp
    http://basicPortal.com/
    http://www.jahia.org/
    http://jporta.sourceforge.net/

    商业软件:
    BEA WebLogic Portal - http://edocs.bea.com/wlp/docs81/javadoc/com/bea/Portal/model/Portlet.html
    IBM Websphere Portal - http://www.software.ibm.com/wsdd/zones/Portal/
    Oracle Portal Developer Kit - http://Portalstudio.oracle.com/

    其它:
    PSML - http://jakarta.apache.org/jetspeed/site/psml.html
    BEA: Web Logic Portal 4.0 http://www.bea.com/products/weblogic/Portal/index.shtml
    IBM: WebSphere Portal 2.1 http://www-4.ibm.com/software/webservers/Portal/
    iPlanet: iPlanet Portal Server 3.0 http://www.iplanet.com/products/iplanet_Portal/home_Portal.html
    Oracle: Oracle 9i Portal http://www.oracle.com/ip/deploy/ias/Portal/index.html
    SAP Portal: http://www.iviewstudio.com
    Epicentric Portal: http://www.epicentric.com/solutions/products/efs/

    参考:
    Wafer:Java开发框架研究
    http://www.waferproject.org/index.html

    门户(Portal)系统相关开发框架:
    http://udoo.51.net/mt/archives/000011.html

    广告管理系统

    关键词:ad server

    广告系统和内容的分离,可以大大降低系统之间的关联度。
     
    专业行业研究网站:
    http://adres.internet.com

    相关厂商和开源项目:
    http://directory.google.com/Top/Computers/Programming/Languages/PHP/Scripts/Ad_Management/?il=1
    http://directory.google.com/Top/Computers/Software/Internet/Servers/Advertising/?tc=1
    http://www.jspin.com/home/apps/admanage?cob=winedit
    http://www.scriptdex.com/dex/php_ad_management.shtml

    推荐:
    http://www.phpadsnew.com/ 功能性比较强
    http://oasis.sourceforge.net/ 免费 基于日志记录和定期导入MYSQL统计,可以负载50万请求/每小时 以上

    如果看重广告的第3方特性,可以选择第三方服务:
    http://www.doubleclick.net/
    http://www.allyes.com/

    论坛/社区系统

    关键词: BBS FORUM

    论坛软件介绍:
    http://directory.google.com/Top/Computers/Internet/Web_Design_and_Development/Message_Boards/

    推荐:
    http://www.phpBB.com PHP + MySQL open source
    http://www.vbulletin.com/order/ PHP + MySQL  有付费的商业支持85-160$

    http://www.jivesoftware.com/products/pricing.jsp 商业论坛系统,1000$-2500$ 有知识库扩展应用
    http://yazd.yasna.com/features.jsp 基于 Java

    所见即所得(WYSIWYG)编辑器

    在内容的录入管理方面,所见即所得是比较重要的,这样可以大大简化对系统中布局排版的需求。
    基于浏览器的WYSIWYG(所见即所得)编辑器是CMS设计中,编辑工具的主要考虑方面。目前主要是通过JAVASCRIPT调用IE或其他浏览器的内置方法实现。其中基于IE5.5浏览器的实现最为简洁。这里有一个完整的例子:
    http://www.devarticles.com/printpage.php?articleId=90
    http://www.devarticles.com/printpage.php?articleId=116

    主要功能:

    • 能够通过JAVASCRIPT实现的基本功能:加粗,斜体字,居中,添加链接,添加图片,模式切换:HTML和文本模式的切换,
    • Word垃圾代码过滤
    • 图片上载接口:图片上载最好通过其他独立模块实现。

    选型指标:

    • 不依赖服务器端代码:只通过JAVASCRIPT或客户端控件实现代码,可以保证以后系统迁移的方便。
    • WORD垃圾代码过滤

    可视化编辑器大全:
    http://www.bris.ac.uk/is/projects/cms/ttw/ttw.html

    推荐:
    http://www.aine.be/aynhtml/

    图片/文件上传组建

    图片和文件等非结构化数据还是分别使用另外的服务解决比较好。这样可以大大简化CMS本身的复杂程度。

    推荐:
    文件上传:
    Apache Commons项目
    http://jakarta.apache.org/commons/

    ImageJ:图片处理缩略图生成和水印等
    http://rsb.info.nih.gov/ij/


    文章来源:车东
     放生
     愚爱
     够爱
     触电
     白狐
     葬爱
     光荣
     画心
     火花
     稻香
     小酒窝
     下雨天
     右手边
     安静了
     魔杰座
     你不像她
     边做边爱
     擦肩而过
     我的答铃
     怀念过去
     等一分钟
     放手去爱
     冰河时代
     你的承诺
     自由飞翔
     原谅我一次
     吻的太逼真
     左眼皮跳跳
     做你的爱人
     一定要爱你
     飞向别人的床
     爱上别人的人
     感动天感动地
     心在跳情在烧
     玫瑰花的葬礼
     有没有人告诉你
     即使知道要见面
     爱上你是一个错
     最后一次的温柔
     爱上你是我的错
     怎么会狠心伤害我
     不是因为寂寞才想
     亲爱的那不是爱情
     难道爱一个人有错
     寂寞的时候说爱我