Куда управляемая платформа расширяемости для.NET?

Swift 2.2 || Xcode 7.3

У меня получились потрясающие результаты !! с быстрой библиотекой AlamofireImage

blockquote>

Он предоставляет множество функций, таких как:

  • Асинхронно скачать
  • Авто-очистка кэша изображений, если для приложения обнаружены предупреждения о памяти
  • Кэширование URL-адреса изображения
  • Кэширование изображений
  • Избегайте дублирования загрузок

и очень легко реализуется для вашего приложения

Шаг.1 Установите контейнеры


Alamofire 3.3.x

pod 'Alamofire'

blockquote>

AlamofireImage 2.4.x

pod 'AlamofireImage'

blockquote>

Шаг 2. Импорт и использование

import Alamofire
import AlamofireImage

let downloadURL = NSURL(string: "http://cdn.sstatic.net/Sites/stackoverflow/company/Img/photos/big/6.jpg?v=f4b7c5fee820")!
imageView.af_setImageWithURL(downloadURL)

вот и все! он позаботится обо всем


Огромное спасибо ребятам из Alamofire , для облегчения жизни iDevelopers;)

21
задан Chilledrat 4 May 2012 в 18:35
поделиться

9 ответов

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

MEF фокусируется на расширяемости. Когда Вы думаете о MEF, смотрят на него как на инвестиции во взятие нашей платформы вперед. Наши будущие продукты и платформа усилят MEF как стандартный механизм для добавления расширяемости. Сторонние продукты и платформы также будут в состоянии усилить этот тот же механизм. Средний "пользователь" MEF создаст компоненты, что MEF использует и не будет непосредственно использовать MEF в рамках их приложений.

Воображают, когда Вы хотите расширить нашу платформу в будущем, Вы отбрасываете dll в папке мусорного ведра, и Вы сделаны. Включенное приложение MEF освещает с новым расширением. Это - видение для MEF.

33
ответ дан Sam Saffron 29 November 2019 в 06:49
поделиться

Это сообщение относится к Управляемому Предварительному просмотру Платформы Расширяемости 2.

Так, я имел пробежавший MEF и описал быстрое "Привет Мир", который представлен ниже. Я должен сказать, что было полностью легко погрузиться в и понять. Система каталога является большой и делает расширение самим MEF очень прямой. Это тривиально, чтобы указать на него на каталог дополнительных блоков и позволить ему обработать остальных. Призма крыла наследия MEF, конечно, показывает через, но я думаю, что это было бы нечетно, если бы это не сделало, учитывая, что обе платформы о составе.

я думаю вещь, которая всовывает мой зоб, большинство является "волшебством" _container. Сочините (). Если Вы заглянете в классе HelloMEF, Вы будете видеть, что поле поздравлений никогда не инициализируется ни одним кодом, который просто чувствует себя забавным. Я думаю, что предпочитаю способ, которым работают контейнеры МОК, где Вы явно просите, чтобы контейнер создал объект для Вас. Интересно, не могли ли своего рода "Ничто" или "Пустой" универсальный инициализатор быть в порядке. т.е.

private IGreetings greetings = CompositionServices.Empty<IGreetings>();

, Который, по крайней мере, заполняет объект "чем-то" до тех пор, пока контейнерный код состава работает для заполнения его реальным "что-то". Я не знаю - это порет определенный Пустой Visual Basic или Ничто ключевые слова, которые я всегда не любил. Если бы у кого-либо еще есть некоторые мысли об этом, я хотел бы услышать их. Возможно, это - что-то, над чем я просто должен преобладать. Это отмечено с большим [Импорт] атрибут, таким образом, это не похоже, это - полная тайна или что-либо.

Управление возражает, что время жизни не очевидно, но все - одиночный элемент по умолчанию, если Вы не добавляете атрибут [CompositionOptions] к экспортируемому классу. Это позволяет нам, Вы определяете или Фабрику или Singleton. Было бы хорошо видеть Объединенный добавленный к этому списку в какой-то момент.

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

я думаю, что это была бы хорошая идея теневой копии DLLs, которые загружаются DirectoryPartCatalog. Прямо сейчас DLLs заблокированы, как только MEF овладевает ими. Это также позволило бы Вам добавлять наблюдателя каталога, и выгода обновила дополнения. Это было бы довольно сладко...

Наконец, я волнуюсь по поводу того, насколько доверяемый дополнение DLLs и как, или если, MEF будет вести себя в частичной доверительной среде. Я подозреваю, что приложения с помощью MEF потребуют полного доверия. Могло бы также быть благоразумно загрузить дополнения в их собственном AppDomain. Я знаю, что это порет немного Системы. AddIn, но это позволило бы очень четкое разделение между пользовательскими дополнениями и системными дополнениями.

Хорошо - достаточно болтовни. Вот Привет Мир в MEF и C#. Наслаждайтесь!

using System;
using System.ComponentModel.Composition;
using System.Reflection;

namespace HelloMEF
{
    public interface IGreetings
    {
        void Hello();
    }

    [Export(typeof(IGreetings))]
    public class Greetings : IGreetings
    {
        public void Hello()
        {
            Console.WriteLine("Hello world!");
        }
    }

    class HelloMEF : IDisposable
    {
        private readonly CompositionContainer _container;

        [Import(typeof(IGreetings))]
        private IGreetings greetings = null;

        public HelloMEF()
        {
            var catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
            _container = new CompositionContainer(catalog);
            var batch = new CompositionBatch();
            batch.AddPart(this);
            container.Compose(batch);

        }

        public void Run()
        {
            greetings.Hello();
        }

        public void Dispose()
        {
            _container.Dispose();
        }

        static void Main()
        {
            using (var helloMef = new HelloMEF())
                helloMef.Run();
        }
    }
}
8
ответ дан stimms 29 November 2019 в 06:49
поделиться

По вопросу Andy безопасности для расширений, которые загружает MEF (извините у меня еще нет достаточного количества точек:)), место для обращения к этому находится в Каталоге. Каталоги MEF являются абсолютно сменными, таким образом, можно записать пользовательский каталог, который проверяет ключи блока, и т.д. перед загрузкой. Вы могли даже использовать CAS, если бы Вы так требовали. Мы смотрим на возможное обеспечение рычагов, чтобы позволить Вам делать это, не имея необходимость писать каталог. Однако источник для текущих каталогов в свободном доступе. Я подозреваю, что минимум - кто-то (возможно, в нашей команде), реализует один и бросит его в extension/contrib проект на CodePlex.

4
ответ дан Glenn Block 29 November 2019 в 06:49
поделиться

Утиный ввод не будет поставляться в V1, хотя это находится в текущем отбрасывании. В будущем отбрасывании мы заменим его сменным механизмом адаптера, где можно было сцепиться у утки, вводящей механизм. Причина мы посмотрели на утиный ввод, состоит в том, чтобы обратиться к сценариям управления версиями. С Уткой, Вводящей Вас, может удалить общие ссылки между средствами экспорта и средствами импорта, таким образом позволив нескольким версиям контракта жить рядом.

4
ответ дан Glenn Block 29 November 2019 в 06:49
поделиться

Andy, я полагаю, что Glenn Block отвечает многим людям (естественные) вопросы как они в этом потоке на Форуме MEF MSDN:

Сравнение CompositionContainer с традиционными Контейнерами МОК .

В известной степени, ответ Артема выше корректен относительно основное намерение позади MEF, который является расширяемостью и не составом. Если Вы, прежде всего, интересуетесь составом, то используйте одного из других обычных подозреваемых МОК. Если на otherhand Вы, прежде всего, обеспокоены расширяемостью, то введение каталогов, частей, меток метаданных, утиного ввода, и задержало загрузку, все делают для некоторых интересных возможностей. Кроме того, Krzysztof Cwalina делает снимок здесь при объяснении как MEF и Система. Дополнения касаются друг друга.

2
ответ дан J Healy 29 November 2019 в 06:49
поделиться

Ayende также имеет довольно хорошую запись здесь: http://ayende.com/Blog/archive/2008/09/25/the-managed-extensibility-framework.aspx

2
ответ дан Aaron Marten 29 November 2019 в 06:49
поделиться

Это не инжекция контейнера управления. Это - сменная платформа поддержки.

1
ответ дан Artem Tikhomirov 29 November 2019 в 06:49
поделиться

Я сказал бы, учитывая, он собирается зависнуть прочь 'Системного' пространства имен в.NET 4.0 Платформы, что Вы не могли пойти слишком далеко неправильно. Будет интересно видеть, как MEF развивается и что влияет на Hamilton Verissimo (Замок), имеет на направлении MEF.

, Если это шарлатаны как утка, это просто могла бы быть часть текущего скопления контейнеров МОК...

1
ответ дан J Healy 29 November 2019 в 06:49
поделиться

Более детальное обсуждение этого в этом сообщении и комментариях

http://mikehadlow.blogspot.com/2008/09/managed-extensibility-framework-why.html

0
ответ дан Glenn Block 29 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: