Проекты

File Domain Plugin Provider

Данный плагин повторяет код плагина Basic File Plugin Provider, но в отличии от базовой версии провайдера, данный провайдер сначала загружает все сборки в отдельный AppDomain, ищет все публичные классы, которые реализуют интерфейс IPlugin, а затем отдаёт массив найденных плагинов в родительский AppDomain.

Данный подход позволяет уменьшить объём загружаемых в память сборок из файловой системы и уменьшить вероятность коллизий, при загрузки множества экземпляров одной и той-же сборки, в корневой AppDomain.

Механизм взаимодействия сход с базовой версии провайдера плагинов. Т.е. для передачи папки с плагинами, необходимо использовать аргумент коммандной строки SAL_Path. При необходимости передать массив папок через аргумент коммандной строки, необходимо использовать разделитель «;». В случае отсутствия аргумента коммандной строки SAL_Path, для поиска плагинов используется текущая директория запуска исполняемого файла хоста.

После загрузки всех плагинов из папки, на папку добавляется мониторинг появления новых плагинов, так что при появлении новых плагинов в папке, они будут загружены в автоматическом режиме.

Внимание

Несмотря на то, что сборки проверяются в отдельном домене, коллизия с DLL Hell может произойти на момент создания transaprent proxy между 2мя AppDomain'ами. Так что необходимо следить за отсутсвием дублирования текущей сборки в папках поиска плагинов.

Теги:

Скачать

Родительские файлы