欢迎光临112期刊网!
网站首页 > 论文范文 > 教育论文 > 学前教育 > 教育教学数据Open API设计与实现

教育教学数据Open API设计与实现

日期:2023-01-24 阅读量:0 所属栏目:学前教育


  中图分类号:TP319

  文献标识码:A 文章编号:1672-7800(2015)005-0115-04

  作者简介:黄小冬(1986-),男,江西石城人,硕士,重庆工商职业学院教务处助教,研究方向为教育信息化;陈薇(1986-),女,重庆人,硕士,重庆工商职业学院建筑工程学院助教,研究方向为教育学原理。

  0 引言

  教育教学数据管理系统是教学信息化中的核心部分, 众多教育教学管理系统的涌现,给教育教学带来便利的同时也带来了不少挑战。各教育教学系统数据相互隔离,无法进行共享;在进行各种教育教学数据填报过程中,大量数据重复采集、统计。此外,新的教育教学系统投入使用,重复导入教师、学生数据等初始化操作,数据存在大量冗余度和不完整性。本文针对教育教学数据管理的共性问题提出了一种数据服务架构,通过建立一个完整、统一的教育教学数据Open API,实现教育教学数据的完整、开放、共享。

  1 教育教学数据Open API需求分析

  1.1 教育教学数据特性

  教育教学数据应用在从计算机管理教学(Computer-Managed Instruction,CMI)发展到基于数据的决策(Data-Driven Decision Making,DDDM)过程中,自身也在发生着变化[1],其具有以下突出特性:①动态性:教育教学数据是动态变化的,在教育教学过程中存在着大量的更新变化,数据也会不断累积;②分布性:教育教学数据存储于不同的数据管理系统中,存储的数据库类型不尽相同,既有关系式数据库(SQL),也有文档式(NOSQL)数据库;③冗余与冲突:由于业务需要而导致各教育教学信息系统中大量重复的数据存在,这部分数据又因为难以做到更新一致而容易产生数据冲突;④结构复杂:教育教学数据庞杂,数据之间存在关联,结构非常复杂。

  针对教育教学数据的特性,教育教学数据Open API设计与实现要满足以下需求:①教育教学数据的获取:Open API服务的数据源是分布且结构复杂的,需要根据数据的关联获取相应数据;②教育教学数据的封装:将获取的数据进行处理后封装,提供统一格式的数据,并按照提供数据的类型进行描述;③教育教学数据的安全访问机制:采用授权访问机制,保证安全获取教育教学数据。

  1.2 REST风格

  REST是Roy Fielding在其博士论文中提出的一种软件架构风格[2]。RESTful Web服务亦称RESTful Web API,即一种使用HTTP并遵循REST原则的Web服务。REST 要求开发人员显式地使用 HTTP 方法,并且使用方式与协议定义一致。通过 HTTP 协议中定义的方法(PUT、GET、POST和DELETE)对资源进行 CRUD 操作[3]。所谓资源,就是封装后供调用的数据处理方法:①若要创建资源,使用POST 方法;②若要检索某个资源,使用GET 方法;③若要更改资源状态或对其进行更新,使用PUT 方法;④若要删除某个资源,使用DELETE 方法。

  RESTful Web服务紧密结合Oauth认证协议,共同构成了Open API服务。Oauth(open authorization,开放认证)是一个开放认证标准。Oauth1.0在2010年4月获得IETF的编号:5 894[4],标志着Oauth1.0正式成为互联网标准协议。Oauth2.0消除了Oauth1中Access token几乎无限期所带来的安全隐患,目前互联网开放平台几乎全部采用Oauth2.0认证授权的RESTful Web API访问。

  2 Open API服务功能模块

  根据教育教学的特性与REST架构风格,Open API服务构建为3个功能模块:

  ①数据源管理模块;②API接口定义模块;③访问授权模块。

  (1)数据源管理模块。教育教学数据的数据源分布于不同的教育教学业务系统中,Open API服务的数据源管理模块旨在提供一个松耦合的数据连接方式,既保证分布性的数据能够聚合,也使业务系统的升级不影响Open API服务的运行。

  Open API服务中教育教学数据分为本地(Local)数据与分布(Distribution)数据。本地数据主要包含教师、学生、学校部门和授权访问客户端等基本数据,以及经过认证审核后的统计数据;分布数据为各类教育教学业务系统中的教师、学生、学校部门等业务数据。连接方式上,数据源管理模块直连本地数据,分布数据则通过RPC的方式连接业务数据源。

  (2)API接口模块。本研究中API接口是指响应数据请求,按一定逻辑进行处理后,统一返回状态与数据格式的传输方法。API接口模块是Open API服务的核心模块,其以REST方式处理数据请求,采取统一路由映射,在URI中设置Prefix区分API版本,便于Open API的版本升级,将API访问映射到Controller中相应的Action,对数据进行处理并作出状态响应。

  (3)访问授权模块。访问授权是指为保证数据安全,只对已接入的客户端授权,并对每次数据API访问请求进行安全验证。对请求数据的客户端权限域scope、请求的AccessToken与ResfreshToken、状态state、用户标识等进行验证。   3 教育教学数据Open API设计

  教育教学数据Open API服务采用三层架构:即数据访问层、API接口层和访问授权层,如图1所示。Open API服务还包括了数据库。

  (1)数据访问层:负责连接本地数据库与分布数据库,为API接口层提供各类数据的添加、删除、查询、修改方法,封装对数据库的访问。对分布数据的访问采用RPC方式,一定程度上减少与具体教学业务系统数据结构的耦合度。

  (2)API接口层:负责响应数据请求,根据数据请求的不同方式、访问的资源进行相应的数据处理并返回数据。流程上, API接口层通过路由规则将请求由GET、POST、PUT、DELETE转发到Controller,进行数据的查询、新增、更新或删除,将处理状态值与需要返回的数据封装为JSON返回。另外,API接口层根据API接口的名称、类别、需要的数据域等自动生成API文档,便于Open API的第三方使用。

  (3)访问授权层:负责维护API的数据安全,包括客户端管理与访问验证服务。客户端申请接入后,需要请求数据时,客户端将请求跳转到Open API的授权页面,验证用户身份后,将用户的ID标识与AccessToken返回客户端,完成授权。在数据请求时,访问授权层则主要检查AccessToken是否有效,无效则拒绝服务,有效则响应数据。

  4 Open API服务原型实现

  基于教学教学数据Open API的设计,本研究采用了Phalcon-Micro框架及多种技术手段实现Open API服务的原型。Phalcon是C语言实现的高性能PHP框架,具有丰富的功能及完善的文档社区支持,Phalcon-Micro是特别适合RESTful API开发的工作模式。

  4.1 数据访问层实现技术

  Open API服务的本地数据采用了Mysql与MongoDB数据库。Mysql主要存储的是结构化的基本数据,MongoDB则存储统计评审后的数据。数据访问层使用Phalcon的ORM(对象关系映射)方式连接本地Mysql数据库,使用ODM(对象文档映射)方式连接本地MongoDB数据库,将数据库访问操作封装为对数据模型的方法调用。采用Phalcon Devtools的phalcon model TABLE_NAME命令可以快速自动生成Model类,简单调用其静态方法即可实现数据的增删改查操作。以使用邮箱与密码查询授权用户信息为例,代码片段如下:

  $conditions = " email = :user_id:AND teacher_pwd = :pwd:";

  $parameters = array(

  "user_id" =>$user_id,

  "pwd" => md5($pwd)

  );

  $user = OdpTeacher::findFirst(array($conditions,"bind"=>$parameters));

  对MongoDB的操作,则需要自定义Model类,但其数据操作与phalcon的ORM基本一致。

  对分布数据的操作,本研究采用Yar(http://pecl.php.net/package/yar)这一开源并行RPC框架。实现上,Yar Server使用相应数据库驱动封装对各种业务系统数据库的访问,根据Open API的数据需求提供数据操作接口。在业务系统升级涉及到数据库调整的时候,只需要修改Yar Server中的相关部分,就可以保证教育教学数据Open API不受影响。其中Open API的Yar Client实现代码如下:

  function callback($retval,$callinfo) {

  var_dump($retval);//返回数据

  }

  Yar_Concurrent_Client::call("http://host/api/","api",array("parameters"),"callback");

  4.2 API接口层实现技术

  API接口层要实现API访问的路由规则,使用的是Phalcon-Micro的MicroCollection类,通过实例化后设置对应的Controller名称,以及添加版本标识为资源前缀,设置不同的请求方法响应Action等,代码片段如下:

  $api = new MicroCollection();

  $api->setHandler('ApiController',true);

  $api->setPrefix('/api/v1');

  $api->get('/teacher/info/{teacher_id}',"getTeacherByIdAction");

  $api->get('/teacher/feature/{teacher_id}',"getTeacherFeatureAction");

  $api->post('/teacher/info/{teacher_id}',"addTeacherAction");

  ……

  $app->mount($api);

  API接口层的数据加工处理由MicroCollection实例绑定的Controller中的Action完成。处理流程:首先获取请求传递的数据,资源名称中正则的直接作为Action函数的参数使用,其它GET、POST、PUT、DELETE则从Phalcon的DI容器中REQUEST对象获取;然后调用数据访问层封装的数据操作进行加工处理,将处理状态码、状态描述和返回数据封装为JSON包,代码如下:   private function send_result( $code,$description,$data )

  {

  $obj = array();

  $obj['code'] = $code;

  $obj['msg'] = $description;

  $obj['data'] = $data;

  header('Content-type:application/json');

  die( json_encode( $obj ) );

  }

  API接口层的文档服务采用ApiDoc(http://apidocjs.com/)自动生成。ApiDoc支持多用编程语言的自动化API文档生成。在API接口层的Action函数前,用注释块的方式,描述该API的名称、分组、版本、权限要求等,如“@apiName GetTeacher”即表示该API的名称为GetTeacher。部分描述关键词如表1所示。

  执行ApiDoc的编译命令后就会自动生成Open API文档,如:apidoc -i myapp/ -o apidoc/ -t mytemplate/。文档服务将教育教学数据Open API的细节展示出来,方便第三方使用。

  4.3 访问授权层实现技术

  本层采用了目前流行的Oauth2授权认证方式,对API访问进行授权验证。在接入客户端时,记录客户端的client_name与redirect_url,生成其client_id、client_secret,分配grant_type类型与scope种类。访问授权层的认证服务主要分为生成与验证AccessToken(ATK)。为了安全考虑,ATK生命周期较短,使用过期的ATK访问API无法通过验证。需要请求API时,客户端检查存储在本地cookie中的ATK是否过期,若过期,可使用RefreshToken(RTK)获取新的ATK,RTK也过期则需要重新授权。

  为了实现访问授权层的Oauth2 Server,本层引用了一个开源的OAuth2 Server库(https://github.com/bshaffer/oauth2-server-php-docs)。为了降低服务的开销,将Oauth2的认证授权类封装为单例模式。其授权时的代码片段如下:

  $oauthServer=new OauthServer();

  $server = $oauthServer->getServerInstance();

  $request = OAuth2\\Request::createFromGlobals();

  $response = new OAuth2\\Response();

  // 验证authorize中参数是否合法

  if (!$server->validateAuthorizeRequest($request,$response)) {

  $response->send();

  die();

  }

  ……

  //验证用户身份后授权

  if($server->handleAuthorizeRequest($request,$response,$is_authorized,$teacher->teacher_id)){

  $response->send();

  }

  在请求教育教学数据Open API时,对请求所发送的ATK进行验证,代码片段如下:

  $oauthServer=new OauthServer();

  $server = $oauthServer->getServerInstance();

  if (!$server->verifyResourceRequest(OAuth2\\Request::createFromGlobals(),null,$scope)) {

  $server->getResponse()->send();

  die;

  }

  其中verifyResourceRequest就是Oauth2 Server封装好的请求验证方法,其会自动获取并解析请求所发送的ATK参数,验证其是否真实、是否在有效期内。其中的$scope指所请求API的权限要求,验证时会根据ATK查询到对应客户端的Scope权限域组中是否含有此Scope,含有则验证通过,响应API处理。

  5 结语

  针对教育教学数据动态性、分布性、冗余与冲突、结构复杂等特性,本文设计完成了基于REST风格的教育教学数据Open API,完成了数据源管理、API接口与访问授权的模块设计,在此基础上进行了整体的三层架构设计;采用PHP的Phalcon框架及多种开源库实现了教育教学数据Open API的原型。

本文链接:http://www.qk112.com/lwfw/jiaoyulunwen/xueqianjiaoyu/230411.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学