Windows Workflow Foundation или контейнер IoC + внедрение зависимостей? - PullRequest
2 голосов
/ 05 января 2009

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

Ответы [ 2 ]

4 голосов
/ 06 января 2009

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

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

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

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

3 голосов
/ 25 апреля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...