Coder Social home page Coder Social logo

dotnet-2's Introduction

Промышленное программирование. Проект № 2

Аннотация

Цель

Знакомство со способами реализации клиент-серверных проектов.

Задачи

  • Реализация объектно-ориентированной модели данных
  • Изучение сериализации данных в XML и JSON
  • Изучение одного из способов реализации серверных приложений
    • WebAPI/OpenAPI
    • gRPC
    • SignalR (WebSockets)
  • Реализация клиентского приложения с использованием WPF или других технологий
  • Изучение паттернов проектирования
  • Повторение основ работы с системами контроля версий
  • Unit-тестирование

Схема сдачи

  1. Первый PR делается по серверной части приложения.
  2. Второй PR делается по клиентской части приложения и всему проекту в целом.

В остальном схема идентична схеме сдачи первой лабораторной работы:

  1. Получить задание
  2. Если вдруг задание не понравилось - согласовать и изменить тему
  3. Сделать форк данного репозитория
  4. Выполнить серверную часть задания
  5. Сделать PR в данный репозиторий
  6. Исправить замечания после code review
  7. Получить approve
  8. Прийти на занятие и защитить работу
  9. Повторить пункты 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: Свой вариант

Вы разрабатываете приложение на свою собственную тему.

Тема и минимальный разрабатываемый функционал должны быть согласованы с преподавателем.

Возможные источники данных:

dotnet-2's People

Contributors

hoangnv123 avatar kolyanch avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.