Фреймворк МОК (.net) для начинающих? - PullRequest
4 голосов
/ 25 февраля 2011

Я только начал изучать Unity вчера, отказался от него из-за отсутствия примеров. Я перешел на замок Виндзор, потому что у них, похоже, было больше документации / активности. тем не менее, я достиг точки в их уроке, которую они не объясняют. Для меня это означает, что они предположили, что у меня есть это знание. Кроме того, их загружаемый пример проекта не был совместим с VS2010 - мне пришлось взломать файл .csproj, просто чтобы он заработал.

Я видел много статей о контейнерах .net IOC, но мой вопрос «что лучше для новичка?». Я хочу научиться этому, но мне сложно расстраиваться, когда подробного учебного пособия не существует.

Чтобы добавить еще один неприятный аспект - я работал только с vb.net, и во всех примерах используется c #. Я знаю, что это в основном один и тот же язык, но, тем не менее, раздражает необходимость продолжать использовать конвертер кода, а затем разбираться с вещами, когда они не работают. Я не могу использовать c # b / c сотрудников, которым в будущем, возможно, придется изменить код.

Изменить: я бы определил «легко учиться», как, в порядке предпочтения: учебник / документация / список рассылки или форум

Ответы [ 4 ]

2 голосов
/ 25 февраля 2011

Похоже, этот вопрос всегда возникает ... это вопрос предпочтений, единство быстрое, грязное, но документация тонкая. Но, опять же, большая часть документации по MS тонкая.

Я использовал Unity в прошлом, и он в значительной степени сделал все, что мне было нужно.

Если вы ищете альтернативу, у Скотта Хансельмана есть блог , который просматривает их

1 голос
/ 25 февраля 2011

Это может помочь, если вы объясните, в чем ваша проблема;сообществу легче решать конкретные проблемы, чем отвечать «есть ли более простое решение, которое не требует от меня понимания того, что я не формулирую».Однако было бы неплохо убедиться, что вы знакомы со статьями Фаулера по этому вопросу (http://martinfowler.com/articles/injection.html и http://martinfowler.com/bliki/InversionOfControl.html).Если вы понимаете эти статьи, у вас будет больше возможностей задавать вопросы, относящиеся к вашей проблемной области.

Однако, чтобы напрямую ответить на ваш вопрос, я обнаружил, что Ninject - наиболее интуитивно понятная структура внедрения зависимостей.Во многом благодаря довольно приятному беглому интерфейсу для привязки.StructureMap был почти таким же приятным.У меня ограниченный опыт работы с замком Виндзор, как правило, только случайное использование в других проектах.Я работал с образцом проекта SharpArchitecture и заменил Windsor на Ninject в предыдущих проектах.

Что касается использования библиотеки DI, то, насколько я знаю, наиболее важным является ограничение диапазона управления вашей структурой DI.относительно небольшой след.Например, я считаю, что в веб-приложениях контейнеры DI, как правило, лучше, когда они вызываются только вашей ControllerFactory.

Самый утомительный контейнер DI, с которым я работал, был в Spring (хотя яконечно, это лучше, чем когда я в последний раз пользовался им), но есть несколько действительно отличных примеров того, как его использовать, поскольку он оказал такое большое влияние как на сообщество Java, так и на сообщество .Net.

Редактировать: Предполагая, что ваша цель состоит в том, чтобы узнать, как DI может применяться в не совсем тривиальном примере проекта, рассмотрите пример проекта, поставляемого с SharpArchitecture (возможно, после прочтения руководства на веб-сайте SharpArchitecture).См. http://www.sharparchitecture.net/

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

0 голосов
/ 25 февраля 2011

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

Итак, мой ответ на ваш вопрос: «Ваш собственный», который является самой простой структурой DI для изучения.

Изучите основы DIа затем создайте свой собственный простой контейнер, и все станет понятнее.Вы можете создать свою собственную структуру DI за час или два.

Джеймс Ковач имеет отличное введение в DI http://msdn.microsoft.com/en-ca/magazine/cc337885.aspx

У Мартин Фаулер есть две замечательные статьи, объясняющие концепции http://martinfowler.com/bliki/InversionOfControl.html

http://martinfowler.com/articles/injection.html

0 голосов
/ 25 февраля 2011

Я использовал Unity от Microsoft и часть Enterprise Library.Он обеспечивает сопоставления на основе конфигурации и на основе кода.

Здесь есть хорошее введение:

http://msdn.microsoft.com/en-us/library/ff650320.aspx

...