Результаты поиска
Как создать экземпляр рабочего процесса, надежно основанный на внешнем событии?
немного новичок в работе windows, так что идите легко :)
Я хочу создать среду хоста рабочего процесса, которая имеет высокую доступность-минимум 2 WF хостов времени выполнения на отдельном оборудовании, указывающих на одну и ту же базу данных Persistence или tracking SQL.
Я ищу шаблон, с помощью которого я могу асинхронно создавать новые экземпляры рабочего процесса на основе некоторого внешнего события (т. е. некоторая часть данных обновляется в DB другим приложением). Для каждого события мне нужно создать ровно один экземпляр рабочего процесса и не имеет значения, на каком хосте этот экземпляр создан. Существует также некоторая гибкость в отношении продолжительности времени между событием и фактическим созданием экземпляра рабочего процесса.
Одним из решений, которое я рассматриваю, является наличие интерфейса WCF на хостах WF и размещение их за каким-то балансировщиком нагрузки. Это было бы тогда до любой части системы, которая запускает "event", чтобы сделать вызов WCF.
Я не очень доволен этим, потому что если хосты both\all WF не работают или иным образом недоступны, событие может быть "lost". Кроме того, я не смогу управлять нагрузкой так, как мне бы хотелось. Я представляю себе ситуацию, когда за небольшой промежуток времени может произойти много событий, но совершенно допустимо обрабатывать эти события некоторое время спустя.
Поэтому я считаю, что мне нужно каким-то образом сохранить события и отделить создание событий от обработки событий.
Помещает ли эти события в MSMQ или простую таблицу событий на сервере SQL, а хост WF просто периодически опрашивает очередь, является жизнеспособным решением? Опрос, кажется, такое грязное слово, хотя...
Будет ли полезен NServiceBus и прочный обмен сообщениями здесь?
Любые идеи будут высоко оценены.
Дополнение
База данных будет кластеризована с общим хранилищем оптоволоконных каналов. Сеть также будет избыточной. Для того, чтобы экземпляры среды выполнения WF имели отказоустойчивость, они должны указывать на общую службу персистентности, которая в данном случае является серверной частью SQL. Это высокая доступность, а не полная доступность :)
MSDN статья о надежности и высокой доступности WF
Кроме того, каждый экземпляр среды выполнения WF должен иметь точно такие же биты, поэтому для обновления потребуется удалить их все одновременно. Мне нравится идея сделать это, если потребуется, не разрушая всю систему.
Реализация пользовательского действия рабочего процесса Windows, выполняющего асинхронную операцию
У меня возникли некоторые концептуальные проблемы с выяснением того, как лучше всего реализовать это... Я хочу создать пользовательский класс активности для рабочего процесса Windows. Действие должно вызывать сторонний библиотечный метод, который сам запускает другой процесс асинхронно и может занять от нескольких секунд до нескольких часов для завершения. Эта библиотека предоставляет мне возможность либо опросить результат метода, либо подписаться на событие, которое указывает на его завершение. В моих приложениях, не связанных с рабочим процессом, я обычно просто подписываюсь на это событие, но это не кажется разумным в случае рабочего процесса. Я также не уверен, как лучше всего реализовать схему опроса. Может ли кто-нибудь порекомендовать некоторые указатели на подобные проблемы?
448   1   07:28, 23rd August, 2020