杨静
(河南省电子产品质量监督检验所,河南郑州450002)
社会化网络服务(Social Network Service,SNS),专指旨在帮助人们建立社会化网络的互联网应用服务[1].一个社会化网络是指一组人或组织、其他社会实体之间的一组具有社会意义关系的连接[2].随着用户对社会化网络服务认同度和参与度的逐渐提高以及商业模式的日益清晰,社会化网络服务的重要性已不言而喻.目前社会化网络服务在给人们带来便利的同时,在用户体验和操作维护上出现了数据可携性问题.
近年来,随着SNS在互联网应用中的价值和地位不断提高,出现了大量的SNS服务提供商.这些SNS站点形成了信息孤岛,一个SNS站点的信息无法在其他SNS站点中使用[3],这些站点建立在独立的系统之上,由于程序和接口的不同,导致站点之间无法交互[4].因此,社会化网络服务所面临的主要问题是数据可携性问题,具体表现为以下三个方面[5]:①社会化网络服务疲劳问题.每加入一个新的社会化网络服务,用户就必须重新填写个人基本信息、重新添加好友、重新进行好友分组归类、重新进行系统通知设置、重新指定隐私设置等.②档案更新维护问题.当用户的个人信息改变时,难以同时更新其他站点的相关信息.③好友更新维护问题.当用户的好友关系变更时,难以在各个不同的社会化网络服务之间统一维护好友列表.
本文从服务依赖方和提供方的角度出发,研究建立满足数据可携性的OpenConnect模型,并给出扩展框架及其实现方法.
SNS通常以社交图形式表现,即网络用户也存在“六度分隔理论”[6]所描述的社会关系,而这种关系反映在SNS服务模型中.
SNS模型中主要涉及3个重要的方面:体系结构、用户数据和身份认证.目前现有SNS模型的体系结构主要采用单一架构,缺少交互机制;在身份认证机制上,主要采用集成式的身份认证方式,存在着用户重复注册的问题;对于用户数据,大多数互联网应用数据并不是结构化的数据,难以被计算机直接理解,不便于自动化操作.
为了实现数据的可携性,一个相对集中的数据控制中心是必要的、可行的,用户数据在该控制中心的控制和管理下,在不同SNS网站应用之间移动.控制中心可视为服务提供方(OpenConnect Provider,OCP),提供用户及其好友信息管理.不同SNS网站应用可视为服务依赖方(OpenConnect Relying Party,OCRP),将SNS的核心部分社交图服务分离出来,使用户的社交图功能可以统一的地进行管理和控制,不存在服务垄断的缺点,用户可以自由选择使用已实现互联互通的服务提供商.
在身份认证方面,使用开放标准的去中心化身份认证协议OpenID[7],任何SNS网站都可以使用OpenID作为用户登录的方式,用户的OpenID在用户转移到不同的服务提供商后仍可保持不变,维护方便快捷.
在用户数据方面,利用XML实现文档结构化,用语义网中的RDF数据模型提供语义关系,从而通过RDF/XML来描述好友关系(社交图数据),使用RDF格式描述用户的贡献内容,包括博客、微博客和评论等社会化媒体内容.
在该模型中,用户首先注册使用一个OCP,接着注册一个OCRP,OCRP提供传统SNS功能,用户在OCRP中的档案信息、好友关系、社会化媒体内容等信息会在OCP中进行同步,当用户使用另外一个OCRP时,这些信息同样也会进行同步,从而实现SNS的数据可携性.
虽然OpenConnect模型并不局限于任何平台和编程语言,但为了能够快速开发,本文选择广泛使用且技术成熟的PHP语言来开发基于REST(Repre-sentationalState Tranfer)的MVC(Model/View/Controller)框架[8],开发在Windows平台下进行,服务器使用开源的Apache.
基于REST的MVC框架如图1所示.
图1 Open Connect框架Fig.1 OpenConnect framework
在图1中,主体框架为MVC框架,控制器处理用户输入,创建或修改适当的模型对象,同时将模型映射到界面中,控制用户界面的数据显示.此外,为了解决非结构化的用户数据问题,将用户社交图数据和社会化媒体信息用RDF/XML词汇进行解释,完成相应的输入输出操作.
为了将MVC框架融入REST,采用REST路由机制,即通过调度器(Dispatcher)分析请求URI,并按照固定的方式将请求URI中的各个部分映射至控制器、方法和参数中例如用户请求URI:http://example.com/posts/edit/1,MVC框架首先使用调度器来分析请求的URI,URI中除了host地址外,其余3个部分分别为posts、edit以及数字1.
调度器通常需要做如下处理:
(1)将posts映射至Posts控制器;
(2)调用Posts控制器的edit方法,将参数1传入此方法.
这种处理方法是最简单有效的,但不够灵活,因为映射是“硬编码”在框架中的,如果开发者想将URI的各部分自由地映射至指定的控制器、方法以及参数中,使用这种映射方案便无法满足开发者的需求.
这里,基于REST的MVC框架采用“标注法”.具体过程如下:
(1)在每个控制器的方法上使用指定的格式书写注释,标注哪些URI(或者URI模式)需要映射到该方法上;
(2)通过标注解析引擎来分析这些标注,并通过调度器调用相应的控制器的方法,以及为方法传入参数.
在该类中有两个方法,comingFromGet()和comingFromPost().在两个方法的上面均用标注法指定了需要映射的具体URI.不同于普通的注释,标注法使用“/**”作为注释的开始,然后紧跟着“!Route”指令,表示路由功能,“!Route”指令之后的标记是HTTP应用协议的方法,主要包括GET、POST、DELETE以及UPDATE等四种方法,分别对应于资源的获取、创建、删除以及更新操作.在PHP中,识别请求所用的方法是通过其内置变量$_SERVER['REQUEST_METHOD']的值进行判断.
在HTTP应用协议方法之后是具体需要指定的URI.其中,第一个方法的标注为“/**!Route GET,/same/url*/”,其含义为满足 URI为“/same/url”并且使用 GET方法的请求,将被路由至控制器TestController的comingFromGet()方法,例如用户通过浏览器发出“http://example.com/same/url”这个URI请求时,调度器将会调用控制器TestController的comingFromGet()方法.第二个方法的标注与第一个方法不同的主要是HTTP应用协议方法,它使用的是“POST”方法,当用户通过表单或者其他客户端使用POST方式提交“http://example.com/same/url”这个URI请求时,则调度器将调用控制器TestController的comingFromPost()方法.
在图1中,可以看出处理细节已被封装进框架中,开发者无需进行具体的方法判断,只需使用上文提到的标注方法将具体的URI映射至控制器的方法中即可.
在REST中,利用HTTP1.1协议中的内容协商机制,客户端程序可以向服务器请求一种特定格式的表述,这些内容包括媒体类型、语言、字符集和编码等.在对资源、语言、编码、字符集的请求中,服务器会按照顺序对不同q值排序,尽量满足客户端的要求.默认的q值是1、0,如果q=0则表示拒绝某种类型.
为了验证OpenConnect模型与实现框架的正确性,设计实现了数据可携式SNS系统,其中OCP模型实现了MyOpenConnect.com和OpenConnecty.com两个具体应用,OCRP也实现了JiaoYou.com和SuiYu.com两个具体应用,并且每个系统均以虚拟的站点名称进行描述,使其更符合实际情况.
以OCP系统为例,其用例图如图2所示,按角色对OCP系统的用例进行描述.
图2 OCP系统主要用例Fig.2 OCP System use case diagram
3.1.1 注册 由于OCP系统同时也是OpenID服务提供方,OCP系统之间可以通过OpenID方式进行快速注册,即如果用户已经注册了某个OCP系统,则用户可以通过该系统的OpenConnectID在另外未注册过的OCP系统中进行快速注册,该注册方式也称之为关联方式注册.因此,OCP系统有两种注册方式:普通注册方式和关联注册方式.
3.1.2 个人基本信息管理 OCP系统负责维护用户的个人基本信息,如姓名、性别、邮箱、主页、自我描述、兴趣以及头像等信息.用户的个人基本信息在OCP系统中进行集中维护,并在各个OCRP系统以及其他与之关联的OCP系统之间进行同步.
3.1.3 好友关系管理 与个人基本信息管理相类似,用户的好友关系也集中在OCP系统中进行维护,当用户在某个OCRP系统中更新了好友关系时,通过OCP系统,其他OCRP系统中用户的好友关系将得到同步更新.
3.1.4 社会化媒体内容跟踪 与个人基本信息和好友关系信息不同的是,用户在OCRP系统中的社会化媒体内容不进行同步操作.OCP系统负责对用户的社会化媒体内容进行跟踪,当用户在某个OCRP系统中更新了社会化媒体内容时,通过OCP系统,在用户的其他OCRP系统上将出现更新提示,并让用户自行决定是否对更新的内容进行导入操作.
3.1.5 授权管理 当OCP系统与OCP系统之间,或者OCP系统与OCRP系统之间进行关联时,需要进行系统之间资源访问的授权操作.用户在OCP系统中对这些授权声明进行管理(例如用户解除某个授权声明).
3.1.6 日志管理 OCP系统记录了与其他系统进行交互的事件日志,通过事件日志,用户可以清晰地了解OCP与其他系统的交互过程,并且可以从事件的状态结果中获得事件是否正常进行等相关信息.
3.2.1 授权管理 OCP系统之间进行联合操作时(在多OCP模式下),需要对系统之间进行访问授权操作,以使双方能够在信任的条件下进行通信.
3.2.2 服务关联管理 OCP系统之间在多OCP模式下可进行关联操作,关联后的两个OCP系统将进行同步更新.
OCRP系统之间的信息将通过OCP系统进行同步更新或导入操作,实现信息同步管理.这些信息包括个人基本信息、好友关系以及社会化媒体内容.
以MyOpenConnect.com系统为例,主要包括个人基本信息管理模块、好友关系管理模块、社会化媒体内容跟踪模块、授权管理模块、日志管理模块、服务关联管理模块以及注册模块,其使用界面如图3所示.
图3 My Open Connect.com界面Fig.3 MyOpenConnect.com interface
用户向OCP1发出快速注册请求,并提供OCP2的OpenConnectID标识,OCP2向用户返回其登录页面,用户登录OCP2,OCP2进行身份验证和访问授权,之后将用户的个人基本信息发送给OCP1,OCP1收到信息后,进行服务关联,并请求用户确认个人信息,用户确认信息后,OCP1即可利用这些信息创建账号并返回给用户.
用户使用MyOpenConnect账号登陆OCRP系统并与之关联后,MyOpenConnect系统与OCRP系统之间的交互将会以日志的形式被记录下来,这些交互包括个人基本资料的变更、好友关系的变更、社会化媒体内容的产生等.
通过事件日志,用户可以清楚了解MyOpenConnect与OCRP系统的交互过程,并得知交互的结果以便作出决策.
通过原型系统运行试用,从实际效果来看达到了OpenConnect模型和框架设计目标,系统具有数据可携性.
数据可携性研究是社会化网络服务中的热点问题,本文从技术的角度对OpenConnect模型的设计机理以及实现框架与实现方法进行了阐述,提出数据可携性问题的初步解决方案,下一步还需要在系统的安全性进行深入研究和探讨.
[1]Baidu Baike.SNS[EB/OL].[2012-06-18].http://baike.baidu.com/view/8258.htm.
[2]Wellman B.An Electronic Group is Virtually a Social Network[M].In Culture of the Internet,1997:179-205.
[3]Breslin J G,Harth A,Bojars U,et al.Towards Semantically-Interlinked Online Communities[M].The 2nd European Semantic Web Conference,2005.
[4]David Simonds.The economist laments“The problem with today’s social networks is that they are often closed to the outside web”[EB/OL].[2012-05-22].http://www.economist.com.
[5]Tantek C.Social Network Portability[J].IEEE Intelligent Systems,2001,4(17):46-53.
[6]Watts D J,StrogatzSH.Small world[J].Nature,1998,393:440-442.
[7]Recordon D,Reed D.Open ID2.0:a platform for user-centric identity management[M].NY:Proceedings of the second ACM workshop on Digital identitymanagement,2006:11-16.
[8]刘克.MVC架构及其在Web应用开发中的应用[J].计算机应用与软件,2006(23):57-59.