Задание
Напишите сервер статистики для многопользовательской игры-шутера. Матчи этой игры
проходят на разных серверах, и задача сервера статистики — строить общую картину по
результатам матчей со всех серверов.
Сервер должен представлять собой standalone-приложение, реализующее описанный
ниже RESTful API.
Общая схема работы такая: игровые сервера анонсируют себя advertise-запросами, затем
присылают результаты каждого завершенного матча. Сервер статистики аккумулирует
разную статистику по результатам матчей и отдает её по запросам (статистика по
серверу, статистика по игроку, топ игроков и т.д.).
Нельзяиспользовать.NETCore. Требования к решению
● Сервер должен реализовывать описанное выше API.
● Сервер должен поддерживать работу на произвольном HTTP-префиксе (задается
при запуске).
● Сервер не должен терять данные при перезапуске. Если на PUT-запрос сервер
вернул 200 OK, данные не должны быть потеряны даже в случае аварийного
завершения приложения. Допустима потеря данных при внезапном выключении
хоста.
Дляхраненияданныхможноиспользоватькаксобственноерешение,таки
готовуюembedded-базуданных.ВкачествеБДнерекомендуется
использоватьMSSQLLocalDB.
● Сервер не должен падать при получении некорректных запросов. На такие
запросы нужно отправлять ответ с кодом, отличным от 200 OK. Допустимы любые
коды вида 4xx и 5xx.
● Сервер должен быстро обслуживать все виды запросов.
● Сервер должен уметь логировать ошибки.
● Код должен быть покрыт тестами.
● Код должен быть написан аккуратно и с любовью к деталям.
Оформление решения
● Все внешние модули, от которых зависит решение, должны содержаться в папке с
решением. Также допускаются зависимости от nuget-модулей.
● Решение должно успешно собираться с помощью msbuild: nuget restore &&
msbuild /p:Configuration=Release. В результате сборки папка
Kontur.GameStats.Server/bin/Release внутри папки с решением должна
содержать всё необходимое для работы приложения.
● Сервер должен запускаться из папки bin/Release следующим образом:
Kontur.GameStats.Server.exe --prefix http://+:8080/, где вместо
http://+:8080/ может быть любой UrlPrefix.
● Можно использовать в качестве заготовки проект из репозитория на гитхабе:
https://github.com/DQKrait/Kontur.GameStats