Где я могу разместить свой файл конфигурации Unity? - PullRequest
0 голосов
/ 29 декабря 2010

В 3-уровневом приложении Windows я буду размещать свой конфигурационный файл, который будет содержать конфигурацию Unity?Если он находится на переднем уровне, то нужно ли мне ссылаться на unity.dll во всех моих проектах на переднем, бизнес-уровне и уровне данных, чтобы проекты распознавали интерфейсы IUnityContainer и т. Д.

Где я буду загружать контейнер конфигурации?Будет ли это в основном методе переднего слоя или на уровне данных, или я загружу контейнер по мере необходимости?

Если все размещено на переднем слое, то не весь ли проект зависит от переднего слоя и если яизмените передний слой с Windows App на Web-приложение, и тогда мне снова придется работать над единством!

Ответы [ 2 ]

8 голосов
/ 29 декабря 2010

Unity или любой другой IoC-контейнер в этом отношении никогда не должен играть никакой роли в вашем приложении, кроме начальной загрузки приложения. И это решительно не должно входить в бизнес и уровень данных.

Таким образом, вы загружаете свое приложение в Main, используя Unity, и после этого Unity завершается. Не позволяйте Unity касаться какой-либо другой части вашего приложения, кроме этого.

Вот подробное описание этой темы: Как я использую контейнеры Inversion of Control и последующие действия Извлечение из контейнера .

Если все размещено на переднем слое, то не весь проект зависит от переднего слоя, и если я изменю передний слой с Windows App на Web-приложение, тогда мне придется снова выполнить работу по объединению!

Нет, если вы все настроили правильно. Вам не нужен Unity для разрешения компонентов вашего приложения. Unity и другие контейнеры IoC просто очень полезные инструменты для решения этой проблемы. Вы должны сначала написать свое приложение, чтобы не нуждаться в Unity. Затем вы можете легко подключить Unity или какой-либо другой контейнер IoC, чтобы разрешить компоненты, необходимые для запуска вашего приложения.

Три R с внедрением зависимости

  1. Регистрация
  2. Resolve
  3. Release

Регистрация - это когда вы настраиваете контейнер. Это происходит, когда ваше приложение запускается в Main. Разрешение - это когда вы разрешаете корневые компоненты для вашего приложения. Это то, что заставляет основные компоненты вашего приложения работать вместе. Выпуск - это когда приложение закрывается, и вы удаляете контейнер так, чтобы компоненты были выпущены правильно. Обратите внимание, что контейнер никогда, НИКОГДА, НИКОГДА не входит в ваше приложение после этого.

1 голос
/ 29 декабря 2010

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

Совет Джейсона толькоссылка на Unity в методе начальной загрузки - хороший совет, поэтому файл конфигурации потребуется в том же каталоге, что и исполняемый файл сервера, который запускает загрузочную загрузку, и / или в каталоге исполняемого файла клиента, который запускает загрузку.* В системе, над которой я сейчас работаю, мы используем один и тот же загрузочный код (в DLL среднего уровня) как на клиенте, так и на сервере, так как мы используем IoC на всех этапах.Это означает, что как клиентский EXE, так и наш серверный EXE требуют отдельных копий конфигурации.

...