badaninslava писал(а):Что касается сервера - не уверен, что учительский компьютер (128 Мб оперативки, да и процессор не акти) его потянет... Но работать надо... Стремиться применять информационные технологии в учебном процессе.
Для веб-сервера это более чем достаточно. Первый сервер клуба
Шаманград работал на сервере с 64 Мб оперативной памяти, правда не долго, после чего одна из планок сгорела и он работал на 32 Мб
Чего было вполне достаточно для небольшого сайта.
Да и в вашей задаче сервер скорее всего тормозит не от большой нагрузки, а от не эффективной реализации или от слабой сети и/или от использования не сжатых форматов данных (например, картинок, видео).
Да, я тоже думаю что это проще решается веб-технологиями (если ими владеешь) или "гибридом" - WEB+GUI, как у нас на Шаманграде. Сейчас в основном веб-интерфейс, но постепенно развивается API для подключения GUI-программ.
Идея проста:
1. на сервере крутиться веб-сервер (например Apache + PHP), на котором реализован
XML-RPC сервер.
2. API описывается XML файлами, например
http://svn.shamangrad.net/pms/branches/ ... c/user.xml3. XML-файлы описаний обрабатываются XSLT и получается документации (вам может и не нужна) и модули для доступа к API
http://svn.shamangrad.net/pms/branches/ ... index.htmlhttp://svn.shamangrad.net/pms/branches/ ... anager.pas4. Простеший пример использования:
- Код: Выделить всё
program demo;
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$ASSERTIONS ON}
uses SysUtils, Classes,
wsrpcbase (* базовые определения *),
wsxmlrpc (* шлюз XML-RPC (транспортный уровень) *),
UserManager (* API управления пользователями *);
var
user: TUserManager;
gate: TWSXMLRPCGate;
var
UserInfo: TUserInfo;
begin
gate := TWSXMLRPCGate.Create('http://shamangrad.net/rpc.php');
gate.AuthType := atBasic;
gate.authorize('login', 'password');
user := TUserManager.Create(gate);
try
UserInfo := user.UserByLogin('alex');
writeln('id: ', UserInfo.id);
writeln('login: ', UserInfo.login);
writeln('avatar: ', UserInfo.avatar_url);
writeln;
except
on E: Exception do
begin
writeln;
writeln(E.ClassName, ': ', E.Message);
end;
end;
user.Free;
end.
Но для всего этого надо иметь хотя бы небольшой опыт веб-программирования.
XML-RPC работает в режиме запрос-ответ, т.е. все действия по инциативе клиента (у вас наоборот описано по инициативе сервера, но имхо, это не так важно - клиент может по таймеру опрашивать сервер на предмет новых команд: показать слайд, начать тест и т.п.). При этом соединение устанавливается только на время выполния запросов и сервер может обслуживать "одновременно" даже тысячи пользователей (за счёт того, что они как правило работают не совсем одновременно). Но 10-20 клиентов это не так уж и много, чтобы сервер с 128 Мб оперативной памяти тормозил от действительно одновременных соединений.
PS:
Как всегда есть два пути, либо увеличивать ресурсы, либо влючать моск и оптимизировать
Добавлено спустя 17 минут 41 секунду:badaninslava писал(а):Я не программист, но в образовательном процессе встают задачи, которые желательно решать...
Гы, на главную фразу не обратил внимания.. А оно вам нужно втягиваться в область, в которой вы не разбираетесь?..
Без обид, но может лучше найти студента/школьника который уже имеет хотя бы небольшой опыт программирования?.. Вы опишите задачу, предоставите материалы (тестовые слайды и задания). Он там подумает, скажет что он реально может сделать, что не потянет, уточните задачу и пусть делает.
Студент к примеру может сделать такую систему в рамках курсовой или дипломной работы или на производственной практике (если конечно выбранный студент не бездарь и работа организованна правильно - кроме студента желательно опытный руководитель/наставник, который сможет что-то подсказать, направить дело в нужное русло).
Если такой подход к проблеме интересен, но есть проблема с талантливыми студентами, могу подсказать пару своих знакомых, может возьмуться. А если ещё небольшой грант под это дело выбить и заплатить студенту за его работу, то тогда вообще все будут счастливы.