Новый клиент-серверный протокол
Новый клиент-сервер предполагает передачу сообщений на языке xml по протоколу http.
Таким образом, работа с базой данных переносится полностью на сторону сервера.
Это позволит увеличить безопасность системы.
Также планируется запрашивать информацию о задаче, компиляторах только один раз, а не при скачивании нового решения.
Описание протокола
# Пояснения.
# c – сообщение посылаемое сервером
# k – сообщение посылаемое клиентом
к. 1) Запрос клиента на решение {get_solution}
с. 2a)пустой ответ сервера(задач в очереди нет) {empty_queue}
с. 2b)ответ сервера, содержащий мета-информацию о решении {meta_info_of_solution}
к. 2с) запрос текста решения {get_source}
с. 2d) передача текста решения {source}
к. 3) = 8)Сообщения клиента об ошибке компилляции {compile_error}
к. 4)запрос клиента информации о задаче {request_task_info}
с. 5)Ответ сервера (информация о задаче) {task_info}
к. 6)запрос клиента тестов {request_ test_archive}
с. 7)Ответ(набор тестов) {send_test_archive}
к. 8)Отправка результатов тестов {result_of_test}
c. 9) Ошибка авторизации {auth_failed}
c. 10)неподдерживаемая версия протокола {unsupported_version}
c. 11)Ошибка сервера {common_server_error}
к. 12)поддержание соединения {ping}
Формат сообщений (замечания):
http-заголовки.
Content-Type: application/xml
Content-type: application/zip
PS это первоначальная версия протокола клиент-сервера, скоро допишу изменения
Проблемы
1) протокол в принципе изначально предполагает возможность пересылки данных по нескольким задачам (информацию по задачам, отчет о результатах по нескольким решениям)
пока не определено как этим воспользоваться