Open edX架构

来源:互联网 发布:人工智能的原理与作用 编辑:程序博客网 时间:2024/05/16 10:53

Open edX架构

OpenedX是一个可以生成、发布、分析在线课程的基于web的平台。该平台为edx.org等其他在线教育网站提供软件框架。

技术(Technologies)

平台服务端源代码主要基于 Python 编写,在浏览器端主要是通过 Javascript 实现,在Web应用层框架基于 Django 框架下的Mako模版系统开发,它的体系结构设计模块化,方便开发和插入新的组件。

平台的代码位于github上。主仓库是 edx-platform ,它涵盖了LMS 和Studio(或 CMS)。还包括 XBlocks课件组件。Open edX的工作原理极具可扩展性。大量的模块及其各自的数据库可以在单独的机器上运行并可以轻松地进行缩放。

该软件是用 Python、Ruby和Javascript,与几个扩展编写的:
- Django + Mako
-Ruby on Rails
- NodeJS
- Coffeescript
- SASS

组件(Components)

Open edX中包含了以下方面:
- LMS
- Studio
- XBlock
- …

学习管理系统(LMS)

  • 学习者用于访问课程内容,包括视频,教科书和问题,并检查他们在课程中的进度。同时,LMS系统也向授课教师提供操作界面,可以通过浏览器直接使用LMS。
  • LMS系统使用了一定数量的数据存储。课程存储在Mongo数据库中,视频源主要存放在YouTube和亚马逊云存储中,每个学习者的数据信息存在MySQL数据库中。
  • 对于课程团队成员,LMS包括教师仪表板,具有注册学习者,生成报告和管理课程的选项。同时可以提供一个讨论论坛和wiki,学习者和课程小组成员都可以做出贡献。

工作室(Studio)

  • 工作室组件式 面向作者 的应用环境,是用于构建课程的Open edX工具。
  • 课程开发团队运用工作室组织机构创建、更新课程内容,包括问题,视频和其他资源。可以通过浏览器直接使用Studio。不需要任何其他软件。
  • 工作室组件和LMS系统使用同一个Mongo数据库存储课程数据。

XBlock

XBlock 体系结构是Open edX 技术最大的成功之一。由第三方开发人员设计,用于创建新的课件组件 — — 视频播放器,交互式的 Javascript 功能或讨论论坛等。XBlock是一种用Python编写的可扩展系统,可以处理用户的输入,任何形式的存储,显示等。

比较好的XBlock的例子有:
- Staff Graded Assignment
学生可以将学习成果上传,教师可以下载这些文档进行评分。
- Mentoring
它可以自动真实指导edX 上的课程工作流。它支持形式自由的答案,多项选择和响应问题、 评定标准和进展跟踪
- Drag and Drop
学生需要根据任务将文本或者图片拖放到不同的位置。
- Image Explore
它允许将带有课程内容的图片显示在工具提示栏。

查看更完整的列表,以及官方的解释的 XBlock 体系结构。

课程浏览(Course Browsing)

  • OpenedX平台提供简洁的前端页面用于浏览课程。edx.org网站的主页和课程发现网站不是开源的。

课程结构(Course Structure)

OpenedX平台利用XBlocks作为课程的组成单元,任何人可以编写新的XBlocks。框架为教育者和技术专家提供可扩展的组件方式去开发他们的课程。

有5种方法扩展Open edX:
- XBlocks

形成 edX 的组件体系结构允许课程的创造者将元素从所有类型的web服务集成,使用 Python 扩大平台功能。他们可以写入存储和呈现各种数据。
- LTI 组件

Open edX仍处于发展中,目前支持 LTI 1.1 和 LTI 2.0 。它适用于例如Canvas等平台。以下是如何集成 LTI 组件的概述:一旦我们有了必需的身份验证参数,如:key和secret,以及启动URL和可能语境和资源链接Id(根据LTI工具),我们可能会登录到”高级设置”下Studio上的”设置”。作为”先进模块”下的策略值输入”[“lti”]“政策的关键。在”lti_passports”下, 按照以下格式添加 ID,密钥和秘密:[“::”]。额外的身份验证参数将取决于您的LTI工具提供商的需求。广场的集成提供了一个很好例子。将它的可见性设置为公共,通过点击”在新窗口中查看资源”开始使用。
- JSinput

Open edX有很强的扩展性,可以评估和呈现各类问题。与XBlocks,JSinput不同的是,它是在浏览器上运行,这就意味着教师可以直接利用而不需要在服务器上更改这个平台。
- 修改核心代码

您可以更改任何东西,虽然这并不简单。如所述”开放源码倡议”,你必须牢记Open edX AGPL许可证。
- 自定义分级

分级并不一定要在主服务器上发生。这将允许教官返回并呈现精心制作动态创建的 HTML 块作为答案而不是只是字母或数字。

课程讨论(Discussions)

  • 课程讨论组件被安置在名叫CommentsService服务器中。
  • 讨论组件是平台中极少不使用Python语言开发的组件。该组件使用了Ruby语言的Sinatra框架编写。
  • LMS系统使用API调用,将课程讨论功能嵌入到课程系统。
  • 论坛包括了触发器进程,用于向学习者发送兴趣主题更新通知

移动应用(Mobile application)

Open edX平台拥有基于IOS和Android系统的移动应用,移动应用可以向学习者提供视频课程。

分析系统(Analytics)

  • 用户学习行为数据被OPenedX平台的分析管道进行捕获。行为数据被存储在JSON中,利用HADOOP技术进行分类聚合等操作,然后将结果数据发布在MYSQL中。
  • 结果数据利用RESTAPI被解析,最后利用Django框架开发的应用区域分析发现学习者正在做些什么、他们的课程如何去被使用。

后台工作(Background Work)

有很多后台工作正在进行,工作量不亚于网页应用。这些后台工作主要通过Celery和RabbitMQ工具进行队列和分发,具体如下:
- 课程分级
- 邮件群发
- 生成答案分析报告
- 生成课程认证

平台包括用户队列组件称作XQueue,该组件可以执行用户分类。这是一个独立的进程去进行学习者学习相关业务。

搜索功能(Searching)

平台建立了课程搜索、评论搜索、用户笔记搜索等搜索功能。

参考资料

  1. OpenedX
  2. Open-edX-eBook中文版
  3. edX研究指南
  4. Open edX开源项目架构文档
原创粉丝点击