@Egolds
Junior .NET Разработчик

Как лучше связать frontend с backend-ом на c#?

Добрый день!
Я разрабатываю онлайн сервис, главная функция которого, это сбор некой информации на внешних ресурсах и её вывод в виде карточек/таблицы пользователю.

Основной функционал я реализовал на C# .Net Framework, то есть консольное приложение, которое работает на сервере в бесконечном цикле. Оно проверяет в базе определенные поля, на наличие изменений, если таковые имеются, то запускается отдельный поток, в котором выполняется сбор информации на внешних ресурсах. После чего собранная информация записывается в базу.

Фронтенд планирую реализовать на HTML + JS. А также часть бэкэнда на php для записи запросов в базу.

Схема:
Пользователь -> Создает "задание" собрать некую информацию -> Нажимает "Начать" -> На странице крутиться колесико загрузки.
В момент создания пользователем "задания", PHP скрипт -> Создает в базе запись о запросе пользователя.
C# приложение, работающее на сервере -> Обрабатывает запрос пользователя и выполняет сбор данных -> Записывает собранные данные в базу.
Всё это время пользователь ждет обработку, и тут думаю сделать чтобы JS каждую секунду выполнял запрос к PHP скрипту, который проверит есть ли уже собранные данные. Как только в базу поступят данные, содержимое страницы обновляется. А именно вместо колесика загрузки добавляются карточки с собранной информацией или просто таблица.

Ввиду моей неопытности в разработке подобных приложений, уверен что это далеко не лучший способ реализации. Напишите, как правильно реализовать задуманное, не отходя от схемы в которой основной функционал будет выполнять C# приложение на сервере.
С уважением.
  • Вопрос задан
  • 252 просмотра
Решения вопроса 3
firedragon
@firedragon
Senior .NET developer
чем вам не нравится net mvc, net api ?
странички хоть на рэзоре пишите хоть на mvc, а можете и просто vue, react , angular

Зачем PHP ????
Ответ написан
GavriKos
@GavriKos
Ну в целом - нормальный способ. Можно только если еще "не готово" - отсылать данные через сколько пнуть сервер еще раз. Чтобы не стучаться каждую секунду.
Еще вариант - сокеты. Тогда сервер сам оповестит клиента.
Ответ написан
summoner2015
@summoner2015
Backend всему голова
Неплохо было бы сделать rest api, на стороне сервера, и стучать в него с клиентской части (html+js+ajax, или разобраться с vuejs и использовать его).
В api сделать:
  1. ручку для постановки задачи в очередь (rabbitmq, kafka, db)
  2. ручку для проверки статуса задачи
  3. ручку для получения результатов, если задача в статусе "выполнено"

Соответственно, с клиента дергать первую ручку, затем крутить прелоадер и периодически дергать вторую ручку, пока не получим нужный статус задачи, или не закончится какой-нибудь таймаут, и в конце дернуть третью ручку и поменять текущий DOM с учетом полученных данных.
На серверной части, по идее, можно отказаться от зоопарка из php+c#, и сделать это все на чем-то одном. Сами задачи будут обрабатываться чем-то в вечном цикле, а именно - ждать пока в очереди появятся задачи и сразу брать их в работу (при необходимости запустить несколько таких воркеров, и обрабатывать задачи параллельно)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы