Top Banner
1 Managed Extensibility Framework – die dynamische Softwareplattform auf .NET-Basis W3L AG [email protected] 2011
19

Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG [email protected]. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

Sep 17, 2018

Download

Documents

vannhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

1

Managed Extensibility Framework – die dynamische Softwareplattform auf .NET-Basis

W3L [email protected]

2011

Page 2: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

2

Inhalt

MotivationManaged Extensibility Framework (MEF)

ÜberblickBeispielProgrammiermodellFramework

Fazit

zurück

Page 3: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

3

Motivation

Zwickmühle der Software-TechnikSoftware-Technik erarbeitet immer bessere Abstraktionsmechanismen...Komplexität von Software nimmt immer weiter zu.

Kurze ProduktzyklenHöhere AnforderungenCustomizing

ModularisierungAltes »Hausmittel« der Software-TechnikPrinzip der Trennung der Belange und ihrer Lokalisierung (principal ofseparation of concerns)Pioniere dieses Konzepts

Edsger DijkstraDavid ParnasNiklaus Wirth

Page 4: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

4

Motivation

Senkung der Entwicklungskosten

Modularisierung und Reduzierung der Kopplung

Änderbarkeit, Wartbarkeit, Erweiterbarkeit +

Wiederverwend-barkeit

+

Nachvollziehbarkeit,Verständlichkeit

+

+

+ +

+

+ +

+ ++

Page 5: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

5

Motivation

ObjektorientierungBesitzt Modularisierungs-Mechanismen: Attribute, Operationen, Klassen, Schnittstellen, Pakete, Beziehungen, Komponenten, etc.Gilt heute als Defacto-Standard.Problem

Objektorientierung im Allgemeinen und .NET im Speziellen besitzen kein Modulkonzept oberhalb von Paketen.Bestehende Komponentenmodelle (in .NET) adressieren nur eine bestimmte Domäne und sind statisch.

LösungEin neues Komponentenmodell namens MEF (Managed ExtensibilityFramework).

Page 6: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

6

MEF – Überblick

24/7-KurzzusammenfassungIn sieben Worten

MEF definiert ein dynamisches Komponentenmodell für .NET.In 24 Sekunden

MEF ist ein Komponentenmodell für .NET, über das Applikationen durch sogenannte Composable Parts dynamisch zusammengestellt werden können.Jedes Composable Part definiert explizit über Kontrakte, welche Dienste für den Betrieb importiert werden müssen und welche Dienste es exportiert.In einem Katalog werden ein oder mehrere Composable Parts zusammengefasst.Die Verbindung zwischen Dienst-Anbietern und Dienst-Konsumenten erfolgt nicht im Programmcode sondern wird über eine Kompositionsbeschreibung innerhalb eines sogenannten Composition Containers geregelt.

Page 7: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

7

MEF – Überblick

EigenschaftenBesitzt ein Abhängigkeitsmanagement.Berücksichtigt nicht nur die Entwicklungsphase, sondern insbesondere die Laufzeitphase

Wie können Komponenten im laufenden Betrieb unter Einhaltung ihrer Abhängigkeiten installiert, aktualisiert oder entfernt werden?

Einführung eines serviceorientierten ProgrammiermodellsKomponenten können bereitgestellte Dienste anderer Komponenten nutzen.Bereitstellung und Auffindung wird über die Infrastruktur zur Verfügung gestellt.Lose Kopplung zwischen den Komponenten.

Vergleichbare AnsätzeOSGi (Java)Google Juice (Java)Unity (.NET)Dependency Injection, Inversion of Control, Hollywood Prinzip

Page 8: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

8

MEF – Überblick

Konventionelles Modell eines Softwaresystems.NET-Klassen, die durch unterschiedliche Assemblies angeboten werden.Implizite Abhängigkeiten untereinander mit einer starren Kopplung.

Zur Compilierungszeit festgelegte Interaktionen zwischen Objekten!

Page 9: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

9

MEF – Überblick

Vermeidung der starren Kopplung durch das MEF

Inversion of Control bzw. Dependency InjectionUmkehrung der Vorgehensweise, dass das Verhalten zur Compilierungszeit über den Programmcode bestimmt wird.Vielmehr ist ein Container dafür verantwortlich, dass Abhängigkeiten zur Laufzeit aufgelöst und befriedigt werden.

Erhoffte KonsequenzenErhöhung der WartbarkeitErhöhung der ErweiterbarkeitErhöhung der Änderbarkeit

ImportComponent1

Import

Component2Export

ManagedExtensibilityFramework

Page 10: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

10

MEF – Beispiel

News Reader

«interface»NewsContract

«Composable Part»News Contract

+GetNews() : string[]

BasicNews

«Composable Part»Basic News

+GetNews() : string[]ScienceNews

«Composable Part»Science News

+GetNews() : string[]

«Composable Part»News Reader

«uses»

«uses»

«uses»

ManagedExtensibilityFramework

Page 11: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

11

MEF – Beispiel

Die Schnittstelle NewsContractnamespace NewsService{

/// <summary>/// Definiert die Schnittstelle eines News-Dienstes./// </summary>public interface NewsContract{

/// <summary>/// Liefert eine Liste von Nachrichten zurück./// </summary>/// <returns></returns>string[] GetNews();

}}

Page 12: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

12

MEF – Beispiel

Die Klasse BasicNewsusing System.ComponentModel.Composition;namespace BasicNews{

/// <summary>/// Export einer Klasse, welche NewsContract implementiert./// </summary>[Export(typeof(NewsService.NewsContract))]public class BasicNews : NewsService.NewsContract{

public string[] GetNews(){

//Quelle: www.spiegel.de am 31.03.2011 13:52Uhrreturn new string[] { "Republikaner hebeln Obamas Finanzreform aus!", "Esa-Satellit zeichnet das Antlitz der Erde neu!", "Sklaven der Noten!"};

}}

}

Page 13: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

13

MEF – Beispiel

Die Klasse ScienceNewsusing System.ComponentModel.Composition;namespace ScienceNews{

/// <summary>/// Export einer Klasse, welche NewsContract implementiert./// </summary>[Export(typeof(NewsService.NewsContract))]public class ScienceNews : NewsService.NewsContract{

public string[] GetNews(){

//Quelle: www.spiegel.de am 31.03.2011 13:52Uhrreturn new string[] { "Lärm raubt jährlich eine Million Lebensjahre!", "Farbstoff schützt Würmer vor Alzheimer!", "Schokolade im Namen des Herrn!"};

}}

}

Page 14: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

14

MEF – Beispiel

Die News Reader-Anwendung

using System.ComponentModel.Composition;using System.ComponentModel.Composition.Hosting;

namespace WindowsFormsApplication1{

public partial class NewsReaderWindow : Form{

/// <summary>/// Import eines beliebigen NewsContract. Die konkrete /// Implementierung ist nicht von Interesse./// </summary>[Import(typeof(NewsService.NewsContract))]private NewsService.NewsContract news;

private void actionClick(object sender, EventArgs e) {

var catalog = new AssemblyCatalog(@"...");var container = new CompositionContainer(catalog);container.ComposeParts(this);

}}

}

Page 15: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

15

MEF - Programmiermodell

VorgehensweiseContracts

Schnittstelle (contracts) definieren und nach Möglichkeit in einer oder mehreren Contract Assemblies veröffentlichen.

ExportImplementierungen durch das [Export]-MetaAttribute veröffentlichen.

ImportAbhängigkeiten durch explizite Definition durch das [Import]-MetaAttribute veröffentlichen.

ComposeEinen Composition Container erzeugen und alle Composable Parts bekanntmachen. Anschließend die Anwendungskomposition in Gang setzen.

Page 16: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

16

MEF – Beispiel

News Reader

Page 17: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

17

Fazit

Wann sollte MEF eingesetzt werden?Erweiterungskonzept für Applikationen und Frameworks

Modell der Erweiterungspunkte

Entkopplung von Komponenten

Strukturierung von ApplikationenReduzierung der Download-Zeiten bei Silverlight-AnwendungenReduzierung der Startzeiten bei Anwendungen

Transparentes Abhängigkeits-Management

Page 18: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

18

Fazit

Einschätzung MEFSolides Dependency Injection-FrameworkQuelloffenBestandteil von .NET 4 und Silverlight 4MEF und MAF

Beim Managed Add-in Framework liegt der Fokus auf dem Laden und Entladen von Assemblies.Beim MEF liegt der Fokus auf der Erkennbarkeit und Erweiterbarkeit.

Sinn und Nutzen des Einsatzes gründlich überprüfen.In Hinblick auf Reifegrad und Praxistauglichkeit ansonsten ist der Einsatz aber empfehlenswert.

Vielen Dank!

Page 19: Managed Extensibility Framework – die dynamische ... · dynamische Softwareplattform auf .NET-Basis W3L AG info@W3L.de. 2011. 2 Inhalt ... Fachhochschule Dortmund bieten wir zwei

In Zusammenarbeit mit der Fachhochschule Dortmund bieten wir

zwei Online-Studiengänge B.Sc. Web- und MedieninformatikB.Sc. Wirtschaftsinformatik

und 7 Weiterbildungen im IT-Bereich an.

W3L-AkademieInhouse-Schulungen

Wir bieten Inhouse-Schulungen und Beratung durch unsere IT-Experten und –Berater.

SchulungsthemenSoftwarearchitektur (OOD)

Requirements Engineering (OOA)

Nebenläufige & verteilte

Programmierung

Gerne konzipieren wir auch eine individuelle Schulung zu Ihren Fragestellungen.

Flexibel online lernen und studieren!

Sprechen Sie uns an!Tel. 0231/61 804-0, [email protected]

Besuchen Sie unsere Akademie!http://Akademie.W3L.de