На данный момент полностью реализована backend-часть проекта. (web-interface api + nginx + docker + entityframework) Клиент с использованием react-а находится в доработке.
К реализации самой страницы никаких требований нет - можно делать на свое усмотрение.
На странице необходимо иметь возможность настроить следующее:
- количество кассет (от 1 до 8)
- номинал для каждой кассеты (100, 200, 500, 1000, 2000, 5000 руб)
- настойка кассеты (сколько в ней осталось купюр)
- статус кассеты (исправна/неисправна)
На этой же страничке необходимо предусмотреть возможность ввода произвольной суммы в рублях без копеек.
Далее, по кнопке, необходимо вычислить можно ли выдать клиенту указанную сумму купюрами, находящимися в кассетах.
Если да, вывести сколько купюр из какой кассеты потребуется. Также вывести время, которое потребовалось на вычисление в миллисекундах.
- Модифицировать appsettings.json для корректного использования БД.
- Открыть в VS (>Средства >Диспетчер пакетов NuGet >Консоль)
add-migration {MigrationName}
update-database
- Запустить DockerCompose
- Запустить CashMachineWebApp
- Открыть localhost
Идея частной сети с использованием Docker. (На данный момент, в клиенте проставлена прямая ссылка на API)
После запуска docker compose создается частная сеть для контейнеров.
Контейнеры в ней могут обращаться по имени сервиса и порту. Для каждого был выделен внешний порт (5000 и 5001).
- Пользователь обращается к домашней странице, в нашем случае это localhost и 80й порт по умолчанию.
- 80й порт прослушивает контейнер, проваливаемся в него и попадаем на веб-сервер. Он видит обращение, которое происходит на стартовый url и перенаправляет на контейнер client:3000. (react всегда на 3000м)
- От клиента получает страницу и отправляет обратно пользователю.
- На странице, когда нажали на кнопку, выполняется запрос на указанный url, например, GET: "api/users", обращение снова происходит на localhost, 80й порт, проваливаемся опять в контейнер к веб-серверу.
- Веб-сервер видит, что url начинается с api и перенаправляет на контейнер backend с портом 80, получает от него данные и так же отдает пользователю
- Клиент, получив данные от сервера, перерисовывает страницу.