Протоколы передачи данных для систем дистанционного обучения
Автор: Гроцев Алексей Романович
Журнал: Образовательные технологии и общество @journal-ifets
Статья в выпуске: 2 т.14, 2011 года.
Бесплатный доступ
В статье рассматриваются протоколы передачи данных для использования в RIA-приложениях. Данные протоколы могут быть использованы при передаче больших объемов данных, что свойственно дистанционному обучению: презентации, мульмедийные приложения и т.п. Приводится краткое описание современных возможностей приложений, их особенности и потребности, а так же описание и сравнение некоторых реально используемых протоколов
Передача данных, протоколы
Короткий адрес: https://sciup.org/14062325
IDR: 14062325
Текст научной статьи Протоколы передачи данных для систем дистанционного обучения
Проблема повышения эффективности и качества образования в настоящее время является актуальной, т.к. спрос на высококвалифицированных специалистов и количество необходимой им информации неуклонно растет, а значительно увеличить время обучения не представляется возможным. Поэтому в последние годы широкое распространение получило компьютерное обучение на базе Интернета, используемое при дистанционном образовании и повышении квалификации. Для поддержки компьютерного обучения создаются и широко используются различные среды, платформы и порталы, обучающие и тестирующие программы, исследуются и разрабатываются методы и технологии электронного обучения, а так же специализированные алгоритмы управления процессом обучения и взаимодействия с обучаемым [1-4]. Однако, техническая сторона вопроса, а именно эффективная передача больших оъёмов данных, еще недостаточно исследована. В основном учебные материалы содержат мультимедиа-данные, передаваемые по сети клиенту, который их выводит на экран или проектор.
Rich Internet application (богатое интернет-приложение) — это приложение, доступное через интернет, богатое функциональностью традиционных настольных приложений, не поддерживаемой браузерами непосредственно и не требующее скачивания дополнительных файлов на компьютер пользователя. На сегодняшний день доступны следующие варианты технологий построения RIA:
o Adobe Flash;
o Adobe Flex;
o Java Applets;
o Microsoft Silverlight.
Термин «RIA» впервые был упомянут компанией Macromedia в официальном сообщении от марта 2002 года. Эта концепция существовала несколькими годами ранее со следующими названиями:
o Remote Scripting, Microsoft, около 1998 года;
o X Internet, Forrester Research в октябре 2000 года;
o Rich (web) client;
o Rich web application.
Google в конце 2009 года анонсировала платформу для совместной работы и общения в реальном времени Google Wave. Однако, по заверениям разработчиков, она построена исключительно на основе возможностей HTML5, т.е. будет запускаться в последних версиях браузеров без дополнительных надстроек, что не даёт возможности назвать эту технологию полноценным RIA.
Отличительные черты передачи данных между обычными программами и RIA состоят в том, что обычно интернет-приложения требуют постоянного (или очень частого) обмена данными с сервером, чтобы отражать последнюю актуальную версию данных, например меняющиеся слайды презентации и комментарии к ним, видеопоток с камер преподавателя и студентов и.т.д. Для этого необходим протокол, позволяющий передавать данные с минимальными задержками на парсинг, в идеальном случае быть бинарным с возможностью сериализации данных. Целью данной статьи является сравнение протоколов ARM, RTMP, XML и plain-text и определение наиболее подходящего для передачи данных в системах дистанционного обучения.
Описание протоколов
AMF (Action Message Format) – сравнительно новый протокол обмена сообщениями, разработанный Adobe. Его спецификация была опубликована в декабре 2007 года и он предназначен для передачи бинарных данных между flash-приложением, написанным на ActionScript и сервером, в виде которого может быть как сервер от разработчиков, Flash Media Server (на данный момент это Flash Media Interactive Server), так и сторонние разработкие, такие как Wowza/Red5 и другие. Перед посылкой данные сериализуются, а все строки приводятся в UTF-8. Стандарт AMF3 даёт возможность передавать 13 разных типов данных [5], которые перечислены в таблице ниже:
Таблица 1
Типы передаваемых данных в AMF3
Тип |
Описание |
undefined-type |
Тип неизвестен, данные не передаются |
null-type |
Хотя значение данных - пустота, сам обьект существует |
False-type |
Логическое ЛОЖЬ |
true-type |
Логическое ПРАВДА |
integer-type |
Числа без знака в интервале от 0 до 228 |
double-type |
Числа со знаком в интервале от 0 до 228 |
string-type |
Описание цепочки символов в кодировке Unicode |
xml-doc-type |
Описание класса flash.xml.XMLDocument, размер до 256MB |
Date-time |
Время в формате Unix timestamp UTC+0 |
Array-type |
Определение массива. Массивы могут быть нумерованые, асоциативные и пустые |
object-type |
Самый частоиспользуемый тип. Содержит обьект, его параметры и указатели на них. |
xml-type |
Необходим для поддержки формата E3X, схож с типом xml-doc-type |
bytearray-type |
Отдельный тип данных для бинарных цепочек, размер до 256MB |
Чтобы передать данные с помощью протокола AMR, необходимо создать инстанцию обьекта NetConnection. После подключения можно использовать передачу используя в виде запаковщика данных встроенные во Flash/Flex классы:
private var echoResponder:Responder = new Responder(echoResult, echoStatus);
В данном примере на сервер методу remote_Procedure была передана строка Hello world . Если метод вернёт результат, будет вызван обратный (callback) метод – echoResponder .
Похожий на предыдущий, но имеющий расширенные возможности, протокол RTMP (Real-Time Messaging Protocol) был так же придуман Adobe, и его спецификация появилась в свободном доступе только в середине 2009 года. Протокол задумывался как средство быстрого начала общения, т.к. изначально он мог передавать данные только с Flash-клиентов, которые, по статистике на декабрь 2009 года, установлены на 99% всех компьютеров [6], и в виде источника видео может служить любая малобюджетная видеокамера. Так как протокол позволяет передавать видео, его структура отличается от AMF, однако, содержит в себе тело AMF-обьекта. Описание типов данных RTMP-протокола приведено во второй таблице.
Таблица 2
Типы передаваемых данных в RTMP
Тип |
Описание |
Chunk size |
Размер "куска" данных |
Bytes Read |
Количество переданных данных (для контрольной суммы) |
Ping |
Контрольная единица потока, содержит внутренний обьект |
Server BW |
Скорость скачки с сервера (статистика) |
Client BW |
Скорость скачки от клиента (статистика) |
Audio Data |
Пакет с аудио-данными |
Video Data |
Пакет с видео-данными |
Flex Stream |
Поток с внутренними обьектами |
Flex Shared Object |
Поток с общедоступным обьектом с информацией о размере |
Flex Message |
Статус-сообщение с возможными аргументами |
Notify |
Вызов, для которого не предусмотрен callback |
Shared Object |
Общедоступный объект с подтипами |
Invoke |
Данные вызова метода без возвращаемого значения, для внутреннего использования |
Object |
Указывает один или несколько FLV-тегов, каждый тег содержит 11 байтов заголовков, (1 байт – тип, 3 байта – размер, 3 байта – время, 1 байт, – уточнение времени, 3 байта – идентификатор потока), после которого идёт тело FLV-кадра, который заканчивается 4 байтами-меткой, которая так же содержит размер тела. |
Вызов методов и передача аргументов производится аналогично AMF.
Расширяемый язык разметки ( XML , eXtensible Markup Language), также может быть использован для синхронизации данных с сервером. Язык разметки представляет подтип языка SGML, который понятен как компьютеру, так и человеку. Данными в протоколе передачи, использующем XML, могут быть любые символы, которые не включают в себя „<” и „>”. Все данные передаются в таком виде, в каком они были запакованы в XML, т.е. передача UTF-8 текста должна быть реализована именно на транспортном уровне, а не на уровне самого формата, т.е. следующий корректный XML-код должен быть передан без ошибок, хотя и содержит как русский текст, так и китайские иероглифы из расширенного набора Unicode.
< 俄語 >Китайский язык 俄語 >
Бинарные данные, обычно, не передают в "чистом виде", а кодируют используя Base64. XML широко распространён среди интернет-приложений благодаря своей реализации в протоколе XML-RPC, который позволяет запрашивать данные с сервера вызывая удалённые процедуры и получая данные в виде ответов. Такие приложения, как GoogleTalk и Jabber тоже используют XML для связи со своими клиентами [7, 8].
Конечно, существуют и неструктурированные форматы данныx, передаваемых текстом без форматирования (plain-text) как в XML, допустим это протоколы IRC, HTTP, SMTP и многие другие. В них данные передаются такими, какие они есть, обычно отделяя системную информацию (заголовки) от содержимого (тела) двойным переносом строки. Обычно такого рода протоколы уникальны в пределах своей задачи и не могут служить для решения разнообразных задач, как AMR или XML.
Заключение
Оценивая возможности перечисленных протоколов, а так же опираясь на схожие исследования в данной сфере [9-11] можно сделать следующие выводы:
o Простота внедрения зависит, в основном, от доступности библиотек/расширений языка программирования, где уже реализован необходимый протокол. Например, XML парсеры есть практически во всех современных языках программирования, тем не менее для RTMP библиотеки доступны только на C/Java/PHP/Ruby/C#/Erlang.
o Необходимые вложения на внедрения - если не считать уже рассмотренной простоты внедрения, это, безусловно, лёгкость разработки и поддержка средствами профилирования/отладки. На данный момент только XML обладает широкой базой модулей интеграции в различные среды разработки. Однако, программу, использующую любой другой текстовый протокол, удобнее отлаживать, чем бинарно-ориентированную в связи с возможностью сделать полный сброс пришедших данных в отладчик для более подробного анализа без использования дополнительных инструментов декодинга.
o Если сравнивать разнообразие передаваемых типов, то тут лидирует RTMP, т.к. только у него из рассматриваемых протоколов есть возможность передачи аудио- и видео-данных.
o Как было сказано, RIA приложения чувствительны к перебоям с доставкой данных, соответственно, протокол должен быть оптимизирован для низкоскоростных линий и быть устойчивым к разного рода воздействиям, таким, как потери и задержки. RTMP и AMR, являясь бинарными протоколами, более предпочтительны [12], нежели текстовые протоколы из-за хорошего сжатия и возможности асинхронной передачи данных, что в случае с текстовыми протоколами могло привести к каше на стороне приёмника.
Таким образом, для систем дистанционного обучения в качестве удобного и выгодного применения можно практически однозначно рекомендовать следующие протоколы передачи данных: при использовании мультимедиа-данных (моделирование, демонстрация физических процессов и т.п.) – протокол RTMP; в остальных случах – протокол AMF.