У меня есть четко определенный контракт на обслуживание, который раскрывает множество методов. У нас есть типичная реализация этого контракта для службы, которая размещается в IIS 7 вместе с нашим приложением MVC.
Архитектура представляет собой типичное распределенное приложение с интерфейсом, определенным в базовой базовой библиотеке (которая перераспределяется), реализацией внутри независимой библиотеки служб и, наконец, приложением MVC, предоставляющим конечную точку для реализации (которая находится в библиотеке услуг).
Ситуация в настоящее время заключается в том, что один из этих существующих методов обслуживания должен возможно выполнять логический процесс, выполнение которого может занять до 10 минут. В обычном сценарии мы рассмотрели бы сервисы рабочих процессов, но рассматриваемый интерфейс хорошо используется, у нас есть набор модульных тестов для тестирования наших сервисов и т. Д., И мы действительно не можем уйти с этой реализацией, которая у нас есть.
Итак, мои вопросы -
- Возможно ли иметь независимый рабочий процесс, который может выполнять этот длительный процесс и вызывать его из нашей службы WCF?
- Если это так, как мне обеспечить, чтобы рабочий поток, выполняющий мою службу в IIS, оставался в живых в течение всего рабочего процесса?
- Наконец, клиенту не нужно ждать ответа от этой службы. Это метод огня и забыть. Может ли клиентский вызов завершиться немедленно, пока служба запускает рабочий процесс и ожидает его завершения?