Я хочу создать службу WCF, которая запустит долгосрочную задачу и будет иметь возможность запрашивать состояние потока.
Моя идея - создать класс, реализующий этот интерфейс
public interface IProcess
{
ProcessStatus GetStatus();
void AsyncStartDataProcess();
}
AsyncStartDataProcess
создаст новый поток, который будет запускать метод для некоторых долгосрочных задач.
Затем в службе WCF есть статический объект типа IP-процесса:
public static IProcess ActiveProcess = ProcessFactory.CreateNewProcess();
А затем выставить через ServiceContract два метода:
StatusResponse GetStatus();
StartProcessResponse StartProcess();
StartProcess
метод вызовет ActiveProcess.AsyncStartDataProcess()
, а GetStatus
вызовет ActiveProcess.GetStatus()
.
Для каждого запроса будет только один активный процесс.
GetStatus и StartProcess будут доступны из веб-приложения ASP.NET и могут быть доступны нескольким пользователям.
Существуют ли проблемы, связанные с тем, что я запускаю долго работающий поток во время вызова службы WCF? (ответ дойдет до клиента, и поток продолжит работу?)
Должен ли я лучше использовать экземпляр Singleton в этом случае? Если да, то в этом случае применяется предыдущий вопрос?