Как настроить Castle Windsor для использования одних и тех же внучатых объектов в одной сборке - PullRequest
0 голосов
/ 17 ноября 2010

Castle Windsor создает несколько экземпляров больших дочерних объектов, используя временный образ жизни.

Объект A зависит от C1 и C2.C1 и C2 оба имеют зависимость от GC.

При наращивании:

  • При использовании StructureMap создается только 1 экземпляр GC, который передается в C1 и C2.
  • Используя Castle.Windsor, создается новый экземпляр GC для C1 и C2 - то есть для 2 экземпляров.

В моем случае GS управляет сеансом nHibernate, а C1 и C2 - репозитории, используемые классом домена.A.

Замок Виндзор возвращает 2 сеанса, что приводит к ошибкам данных между сеансами.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2010

Спасибо, Кшиштоф,

Мы используем это в пакетном приложении, где я хочу 1 сеанс на «логическую» единицу работы. В веб-приложении я использовал бы стиль жизни WebApp (или для SM Cache от HttpSession).

На самом деле все, что я хочу, - это переходный процесс с "обычными" детьми. Так что для 2-го наращивания я бы получил новый GC. Я могу создать индивидуальный образ жизни, но это много работы (относительно).

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

Спасибо

SB

PS - Я бы поспорил, что StructureMap использует здесь свой стиль жизни.

0 голосов
/ 17 ноября 2010

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

Почему вы используете здесь переходный образ жизни?Разве для каждого веб-запроса (если вы работаете в веб-приложении) было бы гораздо более уместным?

Если вы не работаете в веб-приложении, у вас, вероятно, должен быть какой-то другой- работа (например, экран), к которой вы привязываете сеанс с помощью индивидуального стиля жизни.

...