Пойди туда — не знаю куда. Или место расположения обучающих ресурсов в распределенной сети

Иногда выгодна ситуация, когда обучающие ресурсы располагаются не на том же сервере, где установлена СДО, а непосредственно на компьютере пользователя или где-то еще в локальной сети. Это позволяет разгрузить сервер, снизить затраты на трафик, обеспечить быструю загрузку элементов курса.

При таком подходе нам нужно знать путь к обучающим ресурсам относительно конкретного рабочего места, ведь в разных локальных сетях эти пути будут различны.

Традиционным подходом для решения этой задачи является ведение базы данных внутри СДО: каждому филиалу ставится в соответствие адрес, по которому в нем размещены ресурсы. Каждый из обучающихся приписан к какому-то из филиалов. Таким образом, мы знаем, какой абсолютный путь подставлять к названию файла, чтобы этот файл открылся из локальной сети для конкретного обучающегося.

Целью данной статьи является описание технологии открытия обучающих ресурсов без необходимости ведения базы данных о том, где у какого пользователя расположены курсы (разумеется, мы все равно должны иметь список путей, по которым курсы расположены в филиалах).

Вернее речь пойдет даже не обо всей технологии, чтобы не получилось слишком громоздко, а только об элементе, ответственном за идентификацию пути.

Проблема отчасти связана с тем, что в нашей ситуации из соображений безопасности не возможна встроенная функция, которая проверяла бы, существует тот или иной файл в локальной сети пользователя или нет. А раз нет такой функции, то не возможно средствами программирования организовать цикл проверки путей. Однако есть способ обойти это препятствие.

Итак, имеем название файла, который должен быть запущен и список путей, по которым он может быть расположен в локальной сети. Нужно понять какой путь верный.
Идея реализации проста: страничка делится на фреймы. Две колонки. В левой колонке находится сообщение, о том, что файл в процессе открытия эта колонка занимает 100% размера экрана.

Таким образом, правая колонка оказывается невидимой. Мы её делим на столько подфреймов, сколько ссылок нам нужно проверить. В каждый из этих невидимых подфреймов загружаем комбинацию «проверяемый_путь + имя_файла». Если комбинация не существующая, то ничего и не происходит. Но при правильной комбинации «путь+файл» в наш фрейм загрузится … нет, не сам курс, но промежуточный файл, который загрузит курс в главное окно («parent») вместо всех ранее созданных фреймов. Впрочем, промежуточный файл может выполнять и некую другую функциональность.


Комментарии

Алексей Корольков написал(а)…
Андрей,
мне кажется, что такое решение эффективно в случае если СДО не поддерживает локальное расположение учебных материалов на уровне ядра. В этом случае можно переложить ответственность за поиск контента "на плечи" электронного курса.

Если поддержка есть, то разработчикам курсов и думать об этом не нужно. Например, в WebTutor сделано так:
есть справочник расположений курсов, в справочнике для каждого расположения указано URL (может быть адресом http сервера или файлового сервера или CD) с которого для данного расположения берется материал. Это расположение задается либо для курса либо для пользователя (в принципе можно, чтобы пользователь Учебного портала сам указал где у него CD - на диске D или E, например). Когда пользователь нажимает кнопку "начать обучение" система сама отдает ему учебные материалы с нужного места. При этом сотруднику центрального офиса она отдаст материалы с центрального портала, а сотруднику филиала с CD.

Проблема с локальным расположением материалов в том, что браузер (по крайней мере IE) накладывает серьезные ограничения по безопасности на передачу баллов от учебного материала с CD в СДО. Так в некоторых случаях не будет работать SCORM, только AICC, т.к. может быть запрещен кросс-доменный вызов JavaScript
Андрей Балыков написал(а)…
Алексей, приветствую!

Собственно речь не идет о том, чтобы что-то перекладывать на плечи курса. Лично я категорически против этого. Нет сомнений, что в WebTutor все сделано правильно.

Дополнительная же возможность, о которой идет речь в статье, заключается в том, чтобы «поддержка на уровне ядра» осуществляла автоматический поиск пути расположения курса по списку возможных путей. То есть, без необходимости вести справочник, что требует трудозатрат. И без необходимых перенастроек, если, к примеру, сотрудник приехал на недельку в командировку в другой филиал.

А проблема с передачей балов при локальном расположении SCORM-курсов, надеюсь, еще найдет какое-либо типовое решение.

Одно из возможных решений, о котором я уже писал, заключается в том, чтобы передающая данные SCORM-оболочка курса располагалась на сервере, а контент в неё подгружался с CD.
Алексей Корольков написал(а)…
Андрей,
все равно проблема остается - где будет основной javascript - если на сервере, то все ОК, но в большинстве авторских средст его крайне трудно отделить от основного контента. Если хотя бы часть javascript на CD - все те же кросс-доменные проблемы безопасности. Т.е. для экономии траффика за счет видео-роликов этот способ хорош. Для более сложно организованных видов контента - могут быть проблемы.

Но в целом идея интересная - попробуем где-нибудь использовать...
Андрей Балыков написал(а)…
Алексей, Вы правы.
К сожалению, универсального способа нет. Всё равно приходится приспосабливаться к обстоятельствам.

Кстати, хотя вынос именно видео-роликов может дать существенную экономию, в качестве кандидатов «для оптимизации» к списку «тяжелого» контента я бы добавил Flash-ролики, большого размера картинки (например, крупные блок-схемы, диаграммы), таблицы, приложения, справочники, хрестоматийную литературу. То есть, всё то, что допустимо открывать во внешнем окне.

В этом случае теоретически можно избежать доработки курса под разные варианты его использования. Интересен вариант, когда открывшееся внешнее окно начинает перебирать пути из справочника возможных мест расположения контента. Пробует загрузить видео с компакт-диска, с жестких дисков пользовательского компьютера, из локальной сети. Если ни по одному из путей искомый ресурс не найден, только тогда загрузка идет с сервера из комплекта курса.

К моему сожалению, вопросы экономии трафика и скорости канала в нашей стране всё еще остры. Иногда для преодоления связанных с этими вопросами ограничений приходится «чесать себя правой рукой за левым ухом». Уверен, что оптимизируя функциональность Web-Tutor, Вы научились справляться со всеми такого рода вопросами.
Andrey Firsov написал(а)…
Андрей, честно говоря идея мне Ваша с ходу понравилась...
но по мере того, как задумывался - как это в коде реализовывать - много всякого всплывает...
в общем сильно начал сомневаться - реализуемо ли это...
вернее - реализуемо ли так - как задумано, чтобы автоматом - да с наилучшего места...
простой пример - загрузка маленького файла с СД или из локальной сети может занимать порою больше времени, чем с удаленного сервера (СД - время на раскрутку и доступ, локалка - резолвинг имени), а на больших файлах - совсем наоборот...
и получится - что центральное окно заблокирует вовсе не локальный файл...
но главное - все-таки проблемы с безопасностью локальных вызовов...
в корпоративных системах решение проблем с настройкой браузера настолько существеннее, чем расстановка мест загрузки, что может оказаться что сама идея - безусловно интересная - будет просто невостребованной...
Андрей Балыков написал(а)…
Андрей, идея, когда открывшееся внешнее окно начинает перебирать пути из справочника возможных мест расположения контента не относилась к технологии описанной в посте: тут нужен другой механизм… (он существует)

Вообще, если только ради спортивного интереса, то на эти эксперименты не стоит тратить время…

Но, если стоят реальные задачи (по экономии трафика, например), то применительно к конкретным условиям могут быть найдены весьма изящные решения…

Что же касается настроек, связанных с корпоративной политикой безопасности, то тут, Вы правы, возможны любые неожиданности. На то она и безопасность… В частности поэтому и не получается изобрести универсальный способ.

Популярные сообщения из этого блога

Какие инструменты необходимы для организации дистанционного обучения

С чего начать внедрение геймификации?

Как быстро перейти от очного обучения к онлайн-форматам?