#asp.net #web-services #queue #distributed-computing #grid-computing
#asp.net #веб-сервисы #очередь #распределенные вычисления #грид-вычисления
Вопрос:
Я хотел бы разработать простое решение с использованием .NET для решения следующей проблемы:
У нас есть несколько компьютеров в локальной сети:
- 10 клиентских компьютеров, которым может потребоваться выполнить программу, установленную только на двух рабочих станциях
- Две рабочие станции, которые используются только для выполнения определенной программы
- Сервер, который можно использовать для установки службы, доступной со всех ранее описанных компьютеров
Когда клиентскому компьютеру необходимо выполнить программу, он отправляет запрос на сервер, и сервер распределяет задание на рабочую станцию, когда оно доступно для выполнения, и сообщает клиентскому компьютеру, когда выполнение выполнено.
Я не очень привык к разработке веб-сайтов и сервисов, поэтому я не уверен, что это лучший способ, но ниже приведено возможное решение, о котором я думал:
- Веб-служба на сервере хранит в очередях или в базе данных список задач с их статусом
- Клиентский компьютер вызывает веб-службу для выполнения программы и получает идентификатор задачи. Затем вызывает его каждую секунду с идентификатором задачи, чтобы узнать, выполнено ли выполнение.
- Доступные рабочие станции каждую секунду вызывают веб-службу, чтобы узнать, нужно ли что-то выполнить. Если да, сервер назначает задачу, и рабочая станция вызывает веб-службу по завершении выполнения.
Я обобщил это на рисунке ниже:
Вы думаете о более простом решении?
Ответ №1:
Взгляните на signalr! Вы могли бы использовать его в качестве платформы обмена сообщениями, и вам не нужно было бы опрашивать службу из 2 разных направлений. С SignalR вы сможете отправлять заказы на выполнение в службу, и служба уведомит клиента после обработки выполнения. Рабочая станция также будет подключена к SignalR. Им не нужно будет запрашивать заказы на выполнение, поскольку веб-сервис сможет отправлять заказы на выполнение либо на все, либо на конкретную рабочую станцию.
Комментарии:
1. Спасибо, это выглядит идеально! «API SignalR Hubs позволяет выполнять удаленные вызовы процедур (RPC) с сервера на подключенных клиентов и с клиентов на сервер. В серверном коде вы определяете методы, которые могут вызываться клиентами, и вызываете методы, которые выполняются на клиенте. В клиентском коде вы определяете методы, которые можно вызывать с сервера, и вызываете методы, которые выполняются на сервере. SignalR берет на себя всю работу по соединению клиент-сервер за вас «.