отправка и мониторинг ненадежного веб-сервиса - PullRequest
1 голос
/ 23 июня 2009

Я создаю веб-сайт ASP.NET, который будет собирать данные от пользователя и передавать их стороннему веб-сервису. Веб-служба несколько ненадежна, и по этой причине существует служба резервного копирования.

Если вызов первичной службы завершится неудачно (тайм-аут или какая-либо другая ошибка), мне нужно перевернуть немного статический класс, который отключит систему для использования вторичной службы.

На этом этапе мне нужно начать опрос первичной службы (с фиктивными данными), чтобы выяснить, есть ли у нее резервная копия (после чего я получу взамен код ОК). На данный момент мне нужно перевернуть бит назад, чтобы веб-сайт снова начал использовать основную службу.

Я читал это Должен ли я использовать службу Windows или фоновый поток ASP.NET? и я думаю, что разделение кода на службу Windows было бы самым чистым способом выполнения опрос, но как мне тогда общаться с веб-приложением?

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

Буду признателен за ваши мысли и опыт выполнения подобных задач.

Спасибо

1 Ответ

1 голос
/ 23 июня 2009

Я думаю, что служба Windows - это путь, безусловно.

Что касается связи между службой и вашим веб-сайтом, наилучший ответ зависит от размера и масштаба вашего решения. Если вы создаете что-то, что должно быть надежным, я бы посоветовал вам создать какую-то очередь между вашим сайтом ASP.NET и службой Windows. У вас также есть много вариантов, в зависимости от бюджета и возможностей: очереди BizTalk, MSMQ и SQL Server (SSIS). В качестве альтернативы, если вы ищете что-то меньшего масштаба, я бы порекомендовал вам просто вставить это куда-нибудь в таблицу базы данных.

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

Отредактировано, чтобы добавить:

Если надежность здесь не имеет значения, вы можете использовать службу именованных каналов WPF для связи между вашим веб-сайтом и службой Windows. Это позволяет избежать значительных накладных расходов, обычно связанных с классическими веб-службами, и на удивление быстро. Единственным недостатком является то, что самостоятельное размещение службы WPF сложно и может быть сложно поддерживать службу.

...