Знакомство со способами реализации клиент-серверных проектов.
- Реализация объектно-ориентированной модели данных
- Изучение сериализации данных в XML и JSON
- Изучение одного из способов реализации серверных приложений
- WebAPI/OpenAPI
- gRPC
- SignalR (WebSockets)
- Реализация клиентского приложения с использованием WPF или других технологий
- Изучение паттернов проектирования
- Повторение основ работы с системами контроля версий
- Unit-тестирование
- Первый PR делается по серверной части приложения.
- Второй PR делается по клиентской части приложения и всему проекту в целом.
В остальном схема идентична схеме сдачи первой лабораторной работы:
- Получить задание
- Если вдруг задание не понравилось - согласовать и изменить тему
- Сделать форк данного репозитория
- Выполнить серверную часть задания
- Сделать PR в данный репозиторий
- Исправить замечания после code review
- Получить approve
- Прийти на занятие и защитить работу
- Повторить пункты 4-8 для клиентской части задания
Целевая платформа: .NET 5
Целевой UI-фреймворк: WPF или альтернатива (в случае альтернативы необходимо уведомить преподавателя)
Хранение данных на сервере: XML или JSON в зависимости от варианта.
Обязательно:
- Реализация как серверной, так и клиентской части системы
- Реализация серверной части на .NET 5
- Реализация серверной части на указанной в варианте серверной технологии
- Реализация unit-тестов
- Создание минимальной документации к проекту: страница на GitHub с информацией о задании, скриншоты приложения и прочая информация
Факультативно:
- Автоматизация тестирования на уровне репозитория через GitHub Actions
- Интеграционное тестирование
- Реализация серверного хранилища в виде базы данных
Примеры сообщений для тестирования через Postman для варианта SignalR
{"protocol":"json","version":1}�
{"arguments":["postman", "hi"],"invocationId":"0","target":"SendMessage","type":1}�
Символ в конце сообщение (UTF8): 0x1E
Варианты распределяются случайным образом преподавателем. Вы также можете предложить идею для своего проекта.
Вариант 1: Система учета заказов
Вы разрабатываете систему по продаже свежих фруктов. Пользователем системы является поставщик продукции, которому необходимо вести учет сведений о продажах.
Минимальный функционал:
- хранение информации о продуктах
- хранение информации о клиентах
- хранение информации о заказах
- выполнение CRUD-операций с перечисленными выше сущностями
- управление статусами заказов
- вывод отчета за месяц - самые продающиеся продукты и их суммарная стоимость
Варианты серверных технологий:
- OpenAPI
- gRPC
Вариант 2: Список задач
Вы разрабатываете корпоративную систему ведения задач.
Задачи представляют собой:
- текстовый заголовок
- текстовое описание
- статус
- кому назначена
- набор тэгов, ассоциированных с задачей
Минимальный функционал:
- хранение информации о задачах
- хранение информации об исполнителях задач
- хранение информации о тэгах
- выполнение CRUD-операций с перечисленными выше сущностями
- управление статусами задач
Варианты серверных технологий:
- OpenAPI
- gRPC
Вариант 3: Чат
Вы разрабатываете чат для обмена текстовыми сообщениями между пользователями.
Минимальный функционал:
- хранение информации о пользователях на сервере
- хранение истории сообщений на клиентах
- поддержка групповых чатов с сохранением истории и состава группы на сервере
Варианты серверных технологий:
- gRPC
- SignalR
Вариант 4: Многопользовательская игра
Вы разрабатываете игру, в которую могут одновременно играть несколько пользователей.
Варианты:
- Driving game - "гонки"
- Snake game - "змейка"
- Pong game - "пинг-понг"
Минимальный функционал:
- обеспечение работы нескольких пользователей
- хранение информации о пользователях на сервере
- хранение информации о набранных очках на сервере
В качестве клиентского приложения может выступать как WPF-приложение, так и Unity
Варианты серверных технологий:
- gRPC
- SignalR
Вариант 5: Telegram-бот
Необходимо реализовать бота для Telegram, который будет оповещать в нужное время пользователя о предстоящем событии (например, предстоящей лекции).
Перечень событий должен храниться на сервере
Добавление события должно производиться в клиентском приложении (вне Telegram)
Минимальный функционал:
- хранение событий в привязке к пользователю
- обеспечение CRUD-операций с событиями
- поддержка повторяемых событий (например, раз в неделю в указанное время)
Библиотека для работы с API Telegram: https://github.com/TelegramBots/telegram.bot
Варианты серверных технологий:
- OpenAPI
- gRPC
Вариант 6: Геоинформационное приложение
Вы разрабатываете приложение для отображения банкоматов на карте.
Каждый банкомат должен содержать информацию:
- о банке
- количестве денежных средств
Оператор системы может изменять количество денежных средств.
В клиентском приложении необходимо обеспечить функционал:
- отображения объектов на карте
- при выборе объекта на карте необходимо отобразить информацию о нем
- изменения количества денежных средств в конкретном банкомате
Компонент для отображения карты: http://mapsui.com/documentation/getting-started-wpf.html
Сведения о банкоматах: https://github.com/itsec-labs/dotnet-2/blob/main/atm.geojson
Варианты серверных технологий:
- OpenAPI
- gRPC
Вариант 7: Свой вариант
Вы разрабатываете приложение на свою собственную тему.
Тема и минимальный разрабатываемый функционал должны быть согласованы с преподавателем.
Возможные источники данных: