UnitOfWork за экран в клиентском приложении с использованием Windsor Castle - PullRequest
1 голос
/ 06 июня 2011

Я использую для создания своего приложения, используя MVVM + DDD.Поэтому обычно мои уровни слоев:

Просмотр (ведущий ViewModel)

ViewModel (Сервисный сервис)

Сервис (IUnitOfWork uow, IRepository1 rep1, IRepository2 rep2)

Repository1 (IUnitOfWork uow, EnitityFatory1 ef1)

Repository2 (IUnitOfWork uow, EnitityFatory2 ef2)

Я использую для разрешения зависимостей с помощью Windsor, поэтому все классы согласно метакоду выше были установлены вконтейнер обычно с Lifestyle.Transient для всех, кроме UnitOfWork.В случае с веб-приложением ситуация проста: я использую PerWebRequest. В случае с клиентским приложением я выбираю Singleton, но я прочитал несколько статей, предлагающих создать UnitOfwork для экрана / вида, а не для глобального.чтобы сделать ваше приложение более стабильным, особенно когда UoW - это Nhibernate Session или MS ORM DataContext.

Я пытаюсь выяснить, как реализовать UoW для каждой политики создания экрана, учитывая введенную единицу работы курса (3 раза, как указано выше).метакод) должен быть всегда одинаковым.Если я установлю Lifestyle как Transient, для каждой инъекции будет создаваться новый экземпляр ... так что это не тот вариант, который подходит моему сценарию ...

Как я могу создать экземпляр UoW через контейнер на представлении /создание viewmodel, внедренное в любые вложенные зависимости (согласно моему образцу в сервис, а также в 2 репозитория, используемые сервисом) и дипозированное, когда view / viewmodel будет удалена?

какие-либо предложения?

...