前几天,写了一个“论坛程序的发展方向”,第四部分提到论坛程序应该参考windows的构架,将论坛程序构造成一个所有网络服务的基础支撑平台,在此基础上,可以二次开发出各种网络服务,比如:博客、WIKI、威客、网摘、问吧等等,当然也包括现在的论坛一样的系统。

这篇文章将尝试构思一下这样的“论坛系统”(以下称“基础论坛系统”)应该由那些功能和特征:

一、标准化数据库操作接口
   作为一个基础论坛系统,应该提供一个标准的数据库操作接口,这个接口应该屏蔽掉所有数据库的个性特征。也就是说,在二次开发的时候,都无须知道整个基础论坛系统是使用何种数据库进行存储。同时,基础论坛系统所使用的数据库发生变化的时候,也不影响其上的网络服务的服务。

二、完整且标准化的用户及用户权限体系
   基础论坛系统应该有一个基础的用户数据系统(包括注册、登陆、密码管理等服务),供给所有服务系统调用。同时基础论坛系统应该提供一个完整的可扩展的用户权限体系,一方面,自身需要对所有用户的权限进行管理,另一方面,也应该提供给服务系统进行用户权限管理的接口支持。

三、完善的“服务系统”管理机制
   作为基础论坛系统,并不直接的对用户提供服务,而是通过二次开发的服务系统来提供服务。所有,基础论坛系统必须对其上运行的“服务系统”拥有良好的管理机制;
   比如:对于“服务系统”的安装与删除,将完全通过有管理权限的用户通过基础论坛系统管理界面进行安装和删除。确保任何安装和删除操作都不会影响其他服务系统的运行(至少非致命的影响)。

四、指定部分通用服务系统的标准框架
   基础论坛系统同时也需要规定一些标准的服务系统的功能性借口。比如,对于BLOG系统,就应该有一个标准的接口规范,使得管理员可以任何时候服务系统的进行更换而不会对用户带来灾难性的影响。
    比如:BLOG系统必须支持一个标准的日志结构,使BLOG系统进行更换的时候,用户的数据不会发生灾难性的丢失。

五、标准的程序调用标准以及通道
   基础论坛系统应该规定一个标准的服务系统之间相互调用的协议,并且拥有一个调用通道,即任何两个服务系统之间可以使用标准的接口通过基础系统进行相互调用。
   也即使说,只要双方都基于标准的协议,那么一方并不需要知道另外一方究竟是什么系统甚至什么语言,而只需要通过标准的接口协议就可以了。
   比如:一个论坛系统与BLOG系统的互动,将用户的一个帖子推送到用户的BLOG中去。那么论坛系统在获得用户的这个操作指令后,就将在用户ID、帖子标题、帖子内容、帖子ID传递给基础论坛系统,基础论坛系统获得已安装的默认的BLOG系统,并且将这些数据发送给BLOG系统。这个时候,论坛系统与BLOG系统都不需要知道对方是谁,甚至对方存在与否都不用管。

六、支持基于事件的处理体系
   基础论坛系统应该提供一个事件处理机制,即任何服务系统可以在基础论坛系统中注册自己对某个事务的处理代码。
   比如:当用户登陆的事件发生后,触发“OnLogin”事件,执行所有已注册的事务处理代码(按照权限级别、注册先后、以及管理员设置的顺序)

七、支持跨站点(域名)的交互服务
   基础论坛系统必须建立完善的跨站点(域名)的交互体系,使任何网络服务可以分别在不同的网站、域名之间实现安全的交互操作。

……
以上构思不够细致与全面,希望抛砖引玉。有机会我将不断补充,同时非常希望有一个有远见的开发商能够实现,或者有一个有远见的投资商能够投资我,让我来实现。

首发:SOHU BLOG,发表评论或者查询本人资料,请进SOHU BLOG


8条评论

  1. …. 推荐专业电子商务网站,可发布产品

    http://www.cccnp.com 企业电子商务一站式服

  2. 有兴趣,请搜索。第五代门户网

    一起创业如何?

    你文章不错

  3. 作者的思想比较远,要做这样一个基础平台,是相当浩大的工程。

  4. 孤陋寡闻了吧

    google一下FIREBIRD BBS,看看人家

  5. 重点在于:你如何提供二次开发的工具。

  6. 叠床架屋!拥有这样的架构已经不是论坛了,作为WebOs的开发起点差不多。这样的思想可以和kehui那样做全站的讲,但论坛的核心要义不在于以不同形式涵括信息交换的各方面,它的实现仅在于技巧地呈现主贴的发起与回应,内在的数据结构与外在的内容展现形式才是考虑的要点。

    您提到:“将论坛程序构造成一个所有网络服务的基础支撑平台”,这是应用层面上社区发展过程中必然出现的野心,而对于构建网络基础服务的整合平台,您描述的信息处理机制在事实上已经超出了论坛本身定义出的结构,以论坛应用为起点进行思考也许并不是程序员创建这一浩大工程的最佳趋进路线。

    敬佩阁下的大局观!

  7. 这还是论坛么,感觉像一个可以定制的网站。

  8. 二次开发的工具,其实并不需要,只需要提供一个标准的开发规范以及一个调试系统就可以了。

    开发的方式与现在的开发方式没有实质变化。

    比如说,现在读取数据库,是通过一个构造并执行SQL语句。

    未来就只是需要调用一个对象的接口,比如:

    BLOG.DATA.Get(blogid),就可以获得一个指定ID的BLOG的文章数据。

发表评论

评论也有版权!

click to change验证码