打造一个SNS、论坛、CMS等的整合系统(有源码)
如何将SNS、CMS、论坛、博客等整合起来?这是一个长久困扰我的问题,也可能是困扰其他人的问题。今天不谈具体的细节,只是谈两点总体思路,欢迎批评指正。
一、以SNS为基础平台,将CMS、论坛、博客等作为app加上去
互联网各类web应用的发展已经有好多年,近些年SNS最为火爆,以我的看法,也是SNS最具包容性。
其实,可以换一种角度来看SNS,不是简单的按照字面理解成“社会化网络服务”(Social network service),而是理解成一个在线的多用户操作系统。如果将SNS看成一个 web os,看成一个真正的在线底层平台,我相信许多问题便有了解法。
虽然 facebook 的部分界面模仿了操作系统,但毕竟是外表。关键的还是它的多用户插件机制。正是这一特点,让我觉得,CMS、论坛、博客等都应该直接跑在SNS上。SNS和CMS、论坛、博客等的关系,不是并列的关系,而是操作系统和其上的应用程序的关系。只要考虑周密、设计合理,一切app都可跑在SNS平台上。
二、多用户系统模型
为什么SNS的火爆让微软也要投资2.4亿美元占其1.6%的股份?我的理解是,这是因为 facebook 社会化的内在威力。还是按照上面的操作系统的角度来理解SNS,那么多用户的SNS型在线OS和windows等OS的区别在于哪里?技术不同当然是一方面,更重要的区别在于,我以为,在线的SNS型OS具有社会化的特点。windows等本机的操作系统,虽然也是多用户的OS,但不具备多用户实时在线和社会化交流的能力。
如何设计一个在线的、多用户的、带社会化特点的用户系统?
还是我的理解,我觉得一个复杂的多用户的在线系统,就像一个社会一样,会有无数个参与方。那我们就以每天身处其中的社会为例,来分析一下用户系统的构成。一个社会往往可以分成三种类型的成员(Member):
1)自然人。也就是个人,在法律层面,他们对他们自己的私人行为负责(从私人领域的角度讲,还可以包括家庭)。
2)政府。作为公共权威,政府制定法律,管理公共资源,判决纠纷,执行法律。同时,政府也是社会的直接参与者,也可以购买资源,参与经济活动。政府由职业性质的自然人参与管理。
3)在私人领域和政府之间的领域。由不同的自然人组成的群体或活动空间,比如经济组织(公司等)、学校、医院、各类NGO等,你也可以理解成 civil society。
我们认为,一个在线的系统,其实也就是一个在线的微型社会,也可以划分成不同类型的三类成员。作为成员,他们都实现IMember 接口。
1)User : IMember, 注册的用户,代表自然人。
2)Site : IMember, 网站,由一些特殊角色的User(比如管理员)管理。
3)Group : IMember, 群组,由多个 User 组成的,非Site型组织。
User之间可以通过发送消息、分享、留言、评论等方式互动交流,User可以安装各类程序,来促进对在线系统的参与程度和交流深度。User也可以因为在公共领域的积极作为,而被推举或指定为Site的管理人员。同时,User也可以自由加入各类组织Group。
Site作为公共权威或政府型机构,全面管理公共资源,对网站的介绍,对User注册登记的核实,对各类用户发布信息的审核管理等等。同时,Site也是在线系统的直接参与方,也可以安装各类程序,通过各种程序,全面展现Site的形象,并通过各类app实现和User以及Group的交流。
Group往往是由一群有共同兴趣,或共同目的的User组成,作为在线系统的直接参与者,Group和User,Site一样,也可以安装各类应用程序。
——以上是wojilu framework,尤其是“我记录网站综合系统”对用户系统的理解。所以在 wojilu framework 中,直接定义了 IMember 接口,而在“我记录网站综合系统”中,则全面实现了这个接口,定义了 User/Site/Group 三种领域模型。正是以这三种类型的成员为基础,“我记录网站综合系统”才能够方便的集成SNS/论坛/CMS/Blog等程序,才能够统一集成、思路一致。
需要说明的是,二次开发者完全可以通过实现IMember接口,扩展“我记录网站综合系统”中的用户系统,比如创建一个“公司”这样的领域模型,Company:IMember,让商业用户在系统中找到自己的位置。
总结
第一点思考,“以SNS作为基础平台”,已经是包括facebook在内的许多SNS的实践,我只是做了一个简单概括;而第二点思考,关于用户模型,没有参考任何既有系统,我也不了解facebook用户模型的实现方案,所以,纯属个人想法,欢迎批评指正。
“我记录网站综合系统”(含源码)下载网址:http://www.wojilu.com/