Итак, у меня есть следующий сценарий. У меня есть метод в моем WCF, где клиент отправит запрос, затем служба WCF выполнит некоторую фоновую обработку и вызовет внешний метод веб-сервиса, и метод немедленно ответит подтверждением (до того, как фоновая обработка будет завершена). ).
То, как я думал о том, чтобы сделать так, чтобы мой метод WCF возвращал ответ после порождения потока, чтобы выполнить фоновую обработку, и вызывал внешний веб-сервис. Процесс выглядит примерно так:
Вызывающий объект отправляет запрос в INITIAL_CALL
WCF запускает поток, который вызывает PROCESS
WCF возвращает true
PROCESS выполняет вызов EXTERNALWS и получает ответ в postResponse
postReponse регистрируется в базе данных
См. Пример кода ниже:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service : IService
public bool INITIAL_CALL()
{
new Thread(()=>
{
PROCESS();
}).Start();
return true;
}
private void PROCESS()
{
//Do some background processing and create request for call below
var processRequest = "Request goes here";
using (var client = new EXTERNALWS.ResponseTypeClient())
{
var postResponse = client.POST(processRequest);
//Log postResponse to database
}
}
Учитывая, что PROCESS () может работать долго, я просто хотел посмотреть, есть ли лучший способ делать это с WCF и IIS? Или, если есть какие-то подводные камни, которые я должен рассмотреть, например, переработка пула приложений IIS, уничтожающая поток.