Должен ли я использовать Unity (он все еще жив)? - PullRequest
5 голосов
/ 19 апреля 2011

Я работал с Unity 2 года назад, и я планировал использовать его снова.

Но, когда вы зашли на Google, вы попадаете на сайт Microsoft, который говорит, что страницы больше не являютсяподдерживается, и еще один большой успех на codeplex.com.

В Codeplex, однако, не было выпуска с начала 2010 года, и они обещают фильмы в мае / июне (я предполагаю, что они имеют в виду 2010), но ониеще нет.

Так что мне было интересно, был ли продукт еще жив, или MEF - это новый ребенок?

пс (немного оффтоп)

не знаю, единственный ли я, но мне кажется, что я никогда не получаю хорошего обзора зрелости / статуса / «будут ли они в следующем году» и т. Д. Проекта Codeplex и документациибольшую часть времени так себе

Ответы [ 4 ]

6 голосов
/ 19 апреля 2011

Несколько баллов:

  1. MEF, не стремится быть конкурирующим продуктом с Unity (имейте это в виду при выборе его для основной цели IoC). Сотрудник Microsoft, Гленн Блок, поднял это здесь на стеке потока:

    Мы не стремимся к тому, чтобы MEF был универсальный IoC. Лучший способ думать о IoC аспектах MEF является детали реализации. Мы используем IoC как шаблон, потому что это отличный способ решать проблемы, к которым мы стремимся решить ... MEF фокусируется на расширяемости.

  2. Существует также аналогичный вопрос (с прошлого месяца) на форуме P & P для Unity со следующим ответом:

    Единство живо и хорошо, и есть команда работает над этим прямо сейчас (мы поддержка Unity Interception для Silverlight как часть Пакет интеграции Silverlight). Проверьте из последней капли, вы увидите обновления там.

    Кроме того, есть много проектов, использующих Единство сегодня, включая Microsoft товары. Пульс единения принятия вполне здоров - более 100 тысяч загрузок Unity 2.0 и многое другое через EntLib. Количество подписчиков на форум Unity по stackoverflow является так же, как на форуме MEF.

  3. Я настоятельно рекомендую вам абстрагироваться от вашего предпочтительного контейнера IoC за тонкой оберткой , чтобы помочь иммунизировать себя от риска устаревания любого данного контейнера. В случае необходимости вам будет проще переключиться на другой контейнер. Страница 251 из Разработка приложений Brownfield в .NET также поддерживает этот подход, и пример кода выглядит следующим образом (я немного изменил его, чтобы избежать нарушения авторских прав):

    public class Resolve
    {
        public static T TypeOf<T>()
        {
        //…
        }
    }
    
    public class SomeClass
    {
        public void DoingSomething( )
        {
            var someDependency = Resolve.TypeOf<ISomeDependency>();
            //...
        }
    }
    
5 голосов
/ 19 апреля 2011

MEF (Managed Extensibility Framework) и Unity в настоящее время находятся на конкурентной арене, когда дело доходит до предложений внедрения зависимостей от Microsoft. Что касается перехвата и AOP (аспектно-ориентированного программирования), MEF на самом деле еще не предпринял попыток решить эту проблему.

История говорит нам, что Microsoft на самом деле не очень хорошо управляет своими конкурирующими / перекрывающимися командными проектами, и в результате мы получаем послужной список полуобработанных реализаций, которым часто не хватает базовых функциональных возможностей (очевидный пример приведен в LINQ to SQL и Entity Framework - Спустя 3 года EF по-прежнему не хватает базовых функций, которые были у LINQ to SQL из коробки).

Я бы лично выбрал более зрелую и лучше обслуживаемую структуру DI (у большинства из которых также больше функциональности, чем в сочетании с MEF и Unity). Мне нравится замок Виндзор. NInject, StructureMap и другие, похоже, также имеют хорошие результаты.

3 голосов
/ 19 апреля 2011

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

1 голос
/ 19 апреля 2011

Да, Unity все еще существует!и меф.Если я не ошибаюсь, шаблоны и практики Microsoft - это то же самое, что и Unity 2.0?

...