2014-01-08 2 views
0

Я использую EF (6) с ASP.net MVC (C#). Моя аппаратная архитектура:Событие пожара на сервере с веб-сервера

  • Главный сервер - включает в себя обслуживание окон.
  • web-сервер - работает с моим интерфейсом веб-приложений.

Пользователи запрашивают ответ. Мой веб-сайт добавляет вопрос к базе данных (SQL-сервер) с EF.

На моем основном сервере служба обнаруживает изменения (новая задача прибыла) и разрешает ее.

Обнаружение новой задачи, выполняемой оживленным ожиданием, которое мне не нравится.

Как это делается:

  1. Мой EF слой включает в себя пользовательскую функцию, которая сгореть каждый N минут SQL хранимую процедуру.
  2. Если SP получает информацию, служба разрешает ее.

Что я хочу: при добавлении новой задачи с веб-сайта, веб-сайт будет послать сигнал на главный сервер. Когда сигнал поступает на главный сервер, он немедленно начнет его решать.

Как это можно сделать?

Спасибо!

+1

похоже идеальный вариант использования для singalR .... http: //www.asp.net/signalr –

+0

SignalR выглядит хорошо! Но есть ли преимущества использования SignalR вместо использования сокетов \ wcf? представление? – No1Lives4Ever

+0

Да, потому что signalR выберет наилучший способ связи. он также использует сокеты, если они доступны, в противном случае, для других транспортных средств. –

ответ

0

кажется как идеальный вариант использования для singalR ....

, пожалуйста, посмотрите на http://www.asp.net/signalr

signalR будет выбрать наиболее подходящий метод связи. он также использует сокеты, если они доступны, в противном случае, для других транспортных средств.

0

Вы можете создать еще одну услугу для Comm. между двумя серверами.
Решение реализуется с WCF очень тривиально Развивать ..
Всякий раз, когда новый вопрос размещен .. ваш веб-сервер может вызвать этот WebService ..


Дно - линия: Загляни в WCF

0

Мы делаем это много, я думаю, что у вас есть несколько вариантов:

  • общий механизм хранения, который опрашивается от приемника (что вы сейчас делаете)
  • Используя что-то вроде WebService вызова, чтобы послать команду на приемник (Обычно синхронные техника обработки)
  • Использование рамки обмена сообщениями, такие как NServicebus, чтобы послать команду на приемник (асинхронное отказоустойчивая техника)

Мы используем все эти методы, но тот, который я обычно нахожу лучшим, является последним.

Сообщения вводят отказоустойчивость и асинхронную обработку, которые очень полезны при создании систем, охватывающих несколько машин.

Если это звучит как-то, что могло бы помочь проверить пример PubSub для NServiceBus здесь: http://support.nservicebus.com/customer/portal/articles/860297-how-pub-sub-works

Или, если отказоустойчивость на самом деле не имеет значения для вас, я бы рекомендовал selfhosted WebAPI работает внутри вашей службы окон.

Смежные вопросы