Мое приложение включает в себя ряд серверных сборок (включая уровень репозитория данных Entity Framework), которые совместно используются рядом интерфейсных сборок (включая службу Windows и веб-приложение MVC3).
Мое понимание процесса привязки Ninject заключается в том, что каждая сборка, содержащая типы инъекций, также должна содержать модуль Ninject, который определяет привязки по умолчанию для этих типов. Затем набор определенных модулей будет загружен в ядро Ninject узлов потребления.
Однако я столкнулся с проблемами, поскольку требуемая область привязки не всегда согласована. Например, моему MVC-проекту необходимо привязать к контексту данных InRequestScope
, тогда как служба Windows привязывается к тому же классу InThreadScope
.
Я, очевидно, смогу решить эту проблему, переместив все модули в интерфейсные проекты и, таким образом, поддерживая отдельные копии каждого модуля для каждого сценария использования, но это кажется взломанным, поскольку он дублирует большую часть содержимого модуля для нескольких проектов.
Есть ли наилучшая практика в отношении того, где модули должны располагаться в многоуровневом приложении, и как я могу смириться с этой необходимостью в привязке различий между проектами?
Большое спасибо за ваши предложения,
Тим