WCF: метод возвращает ответ после порождения потока для фоновой обработки - PullRequest
0 голосов
/ 31 марта 2020

Итак, у меня есть следующий сценарий. У меня есть метод в моем 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, уничтожающая поток.

...