Вероятно, у вас будет какая-то MyServiceRunner
в вашей службе Windows, которая вызывает ваш MyService
.Этот класс специфичен для службы Windows, и это было бы местом для явного управления временем жизни IUnitOfWork
.Или вы можете написать декоратор для MyService
, который контролирует единицу работы.
Несколько замечаний.Хотя вы можете повторно использовать IUnitOfWork
для каждого веб-запроса, НЕ ИСПОЛЬЗУЙТЕ Commit
единицу работы в конце веб-запроса, но делайте это явно после успешного выполнения службы (успешно).Поскольку область действия вашего IUnitOfWork
сильно отличается в службе Windows, вам, вероятно, понадобится какой-то явный код или явная регистрация, чтобы справиться с этим.Тем не менее, убедитесь, что ваш MyService
не обращает на это внимания: это не должно заботить.
Если у вас есть много служб, которые вы хотите вызвать в службе Windows, вы можете подумать ошаблон команды / обработчика для обработки бизнес-логики.Подробнее об этом можно прочитать здесь .