У меня есть книга, в которой подробно рассказывается, как интегрировать WF (WorkFlow) и WCF. Здесь слишком много постов, очевидно. Я думаю, что ваш вопрос заслуживает более длительного ответа, чем на этом форуме, на который можно с готовностью ответить, но Microsoft предлагает некоторые рекомендации .
А поиск в Google по запросу "WCF and WF" дает множество результатов.
У меня действительно было приложение в разработке, где мы использовали аналогичный процесс, используя MSMQ. Идея заключалась в том, чтобы доставлять экстренные сообщения во все наши магазины в случае отзыва товара или известных проблем, которые затрагивают большое количество магазинов. Разработано и тестируется ОК.
В итоге мы не использовали MSMQ из-за требований бизнеса - нам нужно было знать, не было ли получено сообщение немедленно, чтобы мы могли позвонить в магазин, а не просто позволить магазину получить его, когда их ПК смог забрать сообщение из очереди. Тем не менее, это сработало очень хорошо.
Хорошей отправной точкой является статья, на которую я ссылался выше.
Наш текущий дизайн, тот, с которым мы начали работать, в точности соответствует тому, что вы спрашивали о службе Windows.
- У нас есть веб-страница для ввода сообщений и выбора списков рассылки. - они сохраняются в базе данных
- у нас есть отдельная служба Windows (мы называем это AlertSender), которая опрашивает базу данных и проверяет наличие новых сообщений.
- ПК уровня хранилища имеют службу Windows, на которой размещается клиент WCF, который прослушивает сообщения (AlertListener)
- Когда AlertSender находит сообщения, которые должны быть отправлены, он отправляет их AlertListener, который отвечает за отображение сообщения в магазинах и воспроизведение звука оповещения.
- При отправке сообщений AlertSender обновляет статус сообщения в базе данных.
- Когда магазины получают сообщение, сотрудник входит в # своего сотрудника и нажимает кнопку, чтобы подтвердить, что оно получило сообщение. (Критическое деловое требование для нас, потому что, если все магазины не получают сообщение, нам, возможно, потребуется физически позвонить им, чтобы они удалили испорченный продукт с полок и т. Д.)
- Наконец, наша административная часть имеет отчет (ASP.NET), связанный с AlertId, который показывает все ожидающие сообщения и их состояние.