Вопрос

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

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

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

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

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

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

Спасибо

Это было полезно?

Решение

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

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

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

Отредактировано для добавления:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top