Allgemein Für Administratoren Für Architekten Für Entwickler Für Projektleiter Für Tester News Produkte Publikationen
X
Boris Wehrle
Boris Wehrle ist Senior Software Consultant und zertifizierter Projektleiter bei der AIT.

Boris Wehrle

Neu in .NET 4.5: Vereinfachungen im Managed Extensibility Framework (MEF)

Montag, 26. November 2012

Mithilfe des Managed Extensibility Frameworks lassen sich aus einzelnen Komponenten flexibel Anwendungen zusammenstellen. Der Dependency Injection Manager basiert dabei auf den Attributen Import, Export sowie einem Katalog.

Über das Attribut Export stellt eine Klasse eine Funktionalität zur Verfügung.

   1: [Export(typeof(IReportingService))]

   2: [PartCreationPolicy(CreationPolicy.Shared)]

   3: public class ReportingService : IReportingService

   4: {

   5:     // IReportingService Members

   6: } 

Durch Angabe eines Import Attributs kann auf diese von einer anderen Klasse zugegriffen werden.

   1: [Export(typeof(ReportViewModel))]

   2: public class ReportViewModel

   3: {

   4:     [Import (typeof(IReportingService)]

   5:     private IReportingService ReportingService { get; set; }

   6: }

Ein Katalog stellt alle Informationen über verfügbare Exporte und angeforderte Importe zur Verfügung.

MEF

Über die Komposition der Katalogbestandteile werden die Komponenten zu einer Anwendung verknüpft. Durch die Aufnahme von unterschiedlichen Komponenten in den Katalog kann die Funktionalität einer Anwendung flexibel konfiguriert werden.

MEF wurde als Bestandteil des .NET Frameworks 4.0 veröffentlicht und hat inzwischen eine starke Verbreitung gefunden. Im .NET Framework 4.5 wurden Erweiterungen ergänzt, die die tägliche Entwicklungsarbeit vereinfachen.

Verbesserte Fehlerausgabe

Während der Komposition einer Anwendung werden die im Katalog befindlichen Exporte zu angeforderten Importen zugeordnet. Hierbei können komplexe Strukturen entstehen, die teilweise nur noch schwer überblickt werden können. So ist es möglich das nicht für alle angeforderten Imports auch entsprechende Komponenten, die entsprechende Exports zur Verfügung stellen, in den Katalog aufgenommen wurden. Dies führt beim Start der Anwendung zu einem Ausnahmefehler.

Im .NET Framework 4.0 war es teilweise recht schwierig herauszufinden, welcher Import bzw. fehlender Export diesen Fehler verursacht hat. Um dies zu vereinfachen kann nun bei der Instantiierung des CompositionContainers ein Flag CompositionOptions.DisableSiltenRejections mitgegeben werden.

DisableSilent

Geht man entsprechend vor, wird direkt beim ersten Auffinden eines fehlenden Typen im Katalog die Komposition abgebrochen und ein entsprechender Fehler mit konkreten Fehlerhinweisen ausgegeben.

Einbindung externer Bibliotheken

Für eine Einbeziehung von Komponenten in die Komposition ist eine Angabe eines Export Attributs notwendig. Klassen, die nicht über ein entsprechendes Attribut verfügen, bleiben außen vor. Dies stellt insbesondere dann ein Problem dar wenn der Quellcode, wie z. B. im Fall von zugekauften Komponenten, nicht angepasst werden kann.

Im .NET Framework 4.5 steht nun ein Hilfsmittel zur Verfügung über das fehlende Export Attribute ergänzt werden können. Über die Klasse RegistrationBuilder können für unterschiedliche Typen Exportdefinitionen festgelegt werden.

RegistrationBuilder

Dies macht die Einbeziehung auch von externen Bibliotheken in die Komposition möglich.

Unterstützung generischer Typen

Eine weitere Neuerung ist die Unterstützung von generischen Exports.

Generics

Die Typisierung wird beim Import vorgenommen. Eine Implementierung von einer Vielzahl von konkreten Klassen für eine generisch lösbare Aufgabe kann hierdurch vermieden werden.

Fazit

Die neuen Funktionen stellen eine konsequente Weiterentwicklung der bereits etablierten Technologie dar. Die kleinen Verbesserungen vereinfachen die tägliche Entwicklungsarbeit. Damit wurden wichtige Bausteine ergänzt, um die Erfolgsgeschichte fortzuschreiben.

Verwandte Artikel:

Benötigen Sie Unterstützung bei der Software-Entwicklung und Architektur von .NET basierten Lösungen oder bei Einführung und Anpassung von Visual Studio / Microsoft Test Manager / Team Foundation Server?

Wir stehen Ihnen unter info(at)aitgmbh.de gerne zur Verfügung.

Tags: ,

Hinterlasse eine Antwort