Вопрос

Я пытаюсь выяснить внутренности основы рабочего процесса Windows. Итак, у нас есть некоторые программные компоненты, и мы сплетаем их в форме рабочего процесса, будь то последовательный рабочий процесс на основе условий или рабочий процесс конечного автомата. Теперь я думаю (я могу ошибаться здесь), что не относится к IoC + Dependency Injection (через Unity или Spring.net). Когда использовать что ?? Я даже думаю, что правильно?

Это было полезно?

Решение

Не совсем уверен, что понимаю вопрос, но все равно попробую.

WF не использует контейнер IOC. Он использует шаблон ServiceLocator, в котором вы добавляете зависимости в среду выполнения рабочего процесса, локатор служб и действия рабочего процесса и извлекаете эти службы из среды выполнения рабочего процесса.

Шаблоны ServiceLocator и IOC похожи и имеют одну и ту же цель для разделения зависимостей. Apporach отличается, хотя в контейнере IOC, в котором вставляются зависимости, в то время как ServiceLocator используется для извлечения зависимостей.

Надеюсь, это ответит на ваш вопрос, а если нет, я бы попытался перефразировать исходный вопрос.

Другие советы

Я также пытался использовать компоненты, предоставляемые и обслуживаемые моим контейнером IOC, из рабочих процессов. Как говорится в другом ответе, экземпляры рабочих процессов хотят использовать сервис-локатор для извлечения сервисов из среды выполнения вместо того, чтобы вводить зависимости.

Простой способ преодолеть этот пробел - вынуть зависимости из контейнера IOC во время настройки среды выполнения WF, а затем использовать AddService, чтобы поместить их в среду выполнения. Ваши рабочие процессы могут переопределять OnActivityExecutionContextLoad и использовать метод GetService в поставщике услуг, чтобы вытащить их обратно из среды выполнения и передать их в [NonSerialized] публичные свойства рабочего процесса. После этого вы получаете доступ к сервисам из кода и т. Д.

Вы также можете настроить службу времени выполнения, которая внедряет зависимости при активации экземпляров рабочего процесса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top