Использование сервисов

Чтобы пользоваться предоставляемым сервисами функционалом, необходимо импортировать реализуемый ими интерфейс. Для этого нужно объявить свойство заданного типа и пометить его атрибутом [Import]:

[Import]

private IServiceName ServiceName { get; set; }

Импорт осуществляется с помощью платформы MEF (Managed Extensibility Framework), подробное описание которой можно найти на сайте MSDN link eng/rus.

В отличие от обычной реализации MEF приложения (справа) в Ultima Businessware® реализовано распределенное MEF приложение (внизу):

MEF1

MEF2

Для импорта нескольких сервисов, реализующих один интерфейс, используется ImportMany (ImportSource указывать обязательно, т.к. в Ultima Businessware® используется иерархия MEF-контейнеров):

[ImportMany(Source = ImportSource.Local)]

private Lazy<IServiceName>[] ServiceName { get; set; }

Результатом такого импорта будет неактивно инициализированный список сервисов, реализующих указанный интерфейс.

Если из них нужно выбрать какой-то один, можно воспользоваться метаданными импорта:

[ImportMany(Source = ImportSource.Local)]

private Lazy<IServiceName, IServiceMetadata>[] ServiceName { get; set; }