Applikationsentwicklung mit dem Microkernel von Andreas Bräsen.NET User Group Karlsruhe 23-Feb-2006.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Was fällt dir an diesem Lichtkegel auf?
E-Commerce Shop System
Was gibt´s neues im Bereich Sicherheit
.NET Anwendungsarchitektur
Die wichtigste Frage des Lebens!
Gott wird antworten! Lukas-Evangelium 18,1-8.
Front-End Rechner: Alternativen zum Desktop (S. Herb, Mai 2004)
Datenbankzugriff im WWW (Kommerzielle Systeme)
Ruby on Rails im Überblick
On a Buzzword: Hierachical Structure David Parnas.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Hier ist die automatische Flugauskunft des Flughafens München. Wie kann ich Ihnen helfen?Eine Auskunft bitte. Ist der Flug LH 225 pünktlich?Ist der Flug.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
ATHOS Benutzertreffen 2007
Konstruktoren.
Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
MeiNetz-Suche Wie kann man in meiNetz etwas suchen? 1.durch Gruppen browsen 2.Suchfunktion.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
SEP Halgurt Mustafa Ali Can Önder Marius Morawski Matthias Seidl Themen: Integration von RDQL und OWQL innerhalb des Apache Cocoon Frameworks Semantische.
DÄMONEN Dämonen existieren nicht! Sie entstehen in unserem Kopf!
Was atmet. Eine Rose. Die Haut. Ein Molekül. Holz
Liebe Marla,   es hat lange Zeit gedauert, Dir diesen Brief zu schreiben, so wie es oft lange dauert, sich für etwas zu entscheiden.Als mir Antje die Frage.
Delphi II - OOP IFB Fortbildung
Service Orchestrierung mit .NET
SharePoint 2010 for Information Architects
Die 5 schwierigen Fragen
Mit 3 Schichte zum Erfolg
Präsentation von Sonja Pathe
Das Problem von Mo.
Mohammad Es ist einfach geboren zu werden, aber es ist ganz schwierig Mensch zu sein.
Ein Spanischlehrer erklärte seiner Klasse dass im Spanischen, anders als im Englischen, die Namen entweder männlich oder weiblich sind. "Haus" zum Beispiel,
App-Entwicklung mit HTML5, CSS und JavaScript
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
Ich heiße Kevin Goellner
Geschichten um den Computer
1.2 Trennung von Struktur und Inhalt
100 kg Wie wird’s gemacht?! Klick.
Von wegen nur Männer sind chauvinistisch....
Neues Bike Man kommt ja so ins alter… Beim fahren schmerzt der Rücken… Er macht die gebeugte Haltung einfach nicht mehr mit… Also man kauft sich ein Bike.
Gleich werden wir deine Intelligenz auswerten!
In dem Moment steht die Frau auf und verschwindet.
Neues Bike Man kommt ja so ins alter… Beim fahren schmerzt der Rücken…
Wasserfallmodell und Einzelbegriffe
Wo könnte das sein? Mann, ist das schwer!. Jetzt sieht man schon mehr oder? Ja find ich auc h!
Projektmanagement Ziel und Umfang eines Softwareprojektes definieren
Wer von euch hat Lust auf ein Spiel?
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Diese in der heutigen Zeit betitelte Datei (Seite) würde eine so genannte Toolbar sein. Ich habe mir aber diese als MultiChat benannt, selbst geschrieben.
Die Wahrnehmung deines Geistes
Gefühlswelt
Helpdesk
Helpdesk: Wie kann ich Ihnen helfen?
se_11_interfaces.ppt1 Softwareengineering Interfaces Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
Management, Führung & Kommunikation
Hamburger BV AK Informations- und Medientechnik AK Betriebswirtschaft, Management und Vertrieb Heinz Friedrich Web-Portal 1 Internes Web-Portal.
Giovanni der kleine Esel
Gabriele Hooffacker: Interviews: Die richtige Fragetechnik
Microsoft.NET InfoPoint 8. Juni 2005 Stefan Bühler.
GERMAN 1013C Kapitel 4 5. HEIDELBERG Ich heiße Kevin Goellner. Ich bin 23 Jahre alt und bin Student an der Universität Heidelberg. Ich heiße.
Erweiterte Zuweisungskompatibilität. Wie kann man Objekte verschiedener Klassen einer Klassenhierarchie einander zuweisen ?
Workflowsysteme und Datenbanksysteme Gliederung Motivation Basis- funktionalitäten Klassifikations- merkmale Referenz-Modell MQ Workflow Zusammenfassung.
Ich wünsche dir Leben ! Berge kommen nicht zusammen, Menschen schon !
Der wichtigste Körperteil
 Präsentation transkript:

Applikationsentwicklung mit dem Microkernel von Andreas Bräsen.NET User Group Karlsruhe 23-Feb-2006

Ziel des Vortrages Relativ kurz zu beschreiben, wie ich von der Anforderung an eine zu implementierende Applikation zur Benutzung des Microkernels gekommen bin.

Zu meiner Person... Andreas Bräsen Dipl. Ing. der technischen Informatik (FH) Freiberuflicher Software Entwickler mit Schwerpunkt auf.NET basierter Software Entwicklung Beschäftigung mit dem Microkernel seit dem September 2005

Die Applikation... Es soll eine Software erstellt werden, welche Homöopatische Heilmittel ermittelt, basierend auf einen Frage/Antwort Verfahren. Diese Application soll auf verschiedenen Endgeräten und mit verschiedenen Datenbanken laufen.

Die Anforderungen ein wenig genauer... 1.Die Applikation muß unter.NET laufen. 2.Die Applikation muß unter Windows laufen. 3.Die Applikation muß auf einem PDA laufen. 4.Als Datenbank muß SQL-Server, SQL-Server CE und Access unterstützt werden. 5.Der verwendete Algorithmus zum Finden der Heilmittel muß austauschbar sein. 6.Parallele Entwicklung aller Komponenten. 7.Hohe Testabdeckung (Regression Tests).

Hmm, wie könnte man das Problem lösen ?

Das Schichtenmodell - Eine Lösung ?

Nicht so richtig ! 1.Die Applikation muß unter.NET laufen. 2.Die Applikation muß unter Windows laufen. 3.Die Applikation muß auf einem PDA laufen. 4.Als Datenbank muß SQL-Server, SQL-Server CE und Access unterstützt werden. 5.Der verwendete Algorithmus muß austauschbar sein. 6.Parallele Entwicklung aller Komponenten. 7.Hohe Testabdeckung (Regression Tests).

Das Schichtenmodell – Die Zweite..

Die Anforderungen... 1.Die Applikation muß unter.NET laufen. 2.Die Applikation muß unter Windows laufen. 3.Die Applikation muß auf einem PDA laufen. 4.Als Datenbank muß SQL-Server, SQL-Server CE und Access unterstützt werden. 5.Der verwendete Algorithmus muß austauschbar sein. 6.Parallele Entwicklung aller Komponenten. 7.Hohe Testabdeckung (Regression Tests).

Das Schichtenmodell – Die Fragen... Wer instanziert wen ? Wer steckt das Ganze zusammen ? Muß ich die Interfaces durch Schichten durchreichen ? Wie tausche ich Schichten/Bestandteile aus, so daß ich das Ganze testen kann ? Wie entwickle ich parallel ? Wann definiere ich die Interfaces ? Wie kann ich Bestandteile einfach austauschen ?

Basta September 2005 Ralf Westphal Pragmatische Anwendungsarchitektur Zellen statt Schichten Zellen statt Schichten Dort erwähnte er den Microkernel Ein Microkernel lokalisiert und instanziert Komponenten. Ein Microkernel lokalisiert und instanziert Komponenten. In seinem Vortrag sprach er von Zellen, die von einander nur die Schnittstellen kennen und die über einen Microkernel zusammengesteckt werden können.

Wie sieht so eine Zelle aus ? Resource Adapter Application Adapter User Portal Core Application Portal

Begriffserklärung Core – Logik der Zelle (Verarbeitung) Portal – API steuert die Logik. Adapter – Die Logik steuert ein API. Zelle = Komponente ?

Zellen (Komponenten) werden zusammengesteckt GUI Business Data Access Data Types Utilities

Zellen...(SOA läßt grüßen) Grenzen zwischen Zellen (Komponenten) sind explizit. Zellen (Komponenten) sind möglichst in sich geschlossen. Zellen (Komponenten) kennen voneinander nur ihre Verträge, nicht aber ihre Implementierungen. SOA = Service Oriented Architecture

Zellen (Komponenten) werden zusammengesteckt GUI Business Data Access Data Types Utilities

Das Schichtenmodell – Die Zweite..

Ich Glaube mir fehlt noch etwas.. Wenn Zellen (Komponenten) nur die Interfaces der anderen Zellen (Komponenten) kennen, wie kann ich den überhaupt jemals eine Instanz einer anderen Zelle bekommen bzw, wie füge ich das alles zusammen ? Wo ist der Anfang ? Wo ist das Main ?

Jetzt kommt der Microkernel ins Spiel ! Der Microkernel weiß zu welchem welche Klasse welches Interface implementiert. Das weiß er über eine Konfiguration (z.B. aus der App Config) Wenn man jetzt eine Instanz eines Interfaces benötigt, dann fragt man einfach nur den Microkernel und man bekommt eine Instanz zu dem geforderten Interface.

Das Schichtenmodell – Die Fragen... Wer instanziert wen ? Wer steckt das Ganze zusammen ? Muß ich die Interfaces durch Schichten durchreichen ? Wie tausche ich Schichten/Bestandteile aus, so daß ich das Ganze testen kann ? Wie entwickle ich parallel ? Wann definiere ich die Interfaces ? Wie kann ich Bestandteile einfach austauschen ?

Die Lösung reppelte sich von ganz alleine auf: Wer instanziert wen ? Ok, es muß immer noch einen Host geben mit einem Main, dieser holt sich über den Microkernel die Business Logik Komponente und startet diese. Die Business Logik benötigt ein Portal und mehrere Adapter. Diese werden ebenfalls über den Microkernel instanziert und so fort. So baut sich die Application auf und alles ohne new*. Ok, es muß immer noch einen Host geben mit einem Main, dieser holt sich über den Microkernel die Business Logik Komponente und startet diese. Die Business Logik benötigt ein Portal und mehrere Adapter. Diese werden ebenfalls über den Microkernel instanziert und so fort. So baut sich die Application auf und alles ohne new*. *Nur standard Datentypen werden mit new erzeugt. DataSets gehören auch dazu.

Weitere Antworten... Wer steckt das Ganze zusammen ? Die Application selber fängt an sich zusammenzubauen. Die Application selber fängt an sich zusammenzubauen. Muß ich die Interfaces durch Schichten durchreichen ? Nein, über den Microkernel komme ich immer an Instanz eines Interfaces heran. Nein, über den Microkernel komme ich immer an Instanz eines Interfaces heran.

Weitere Antworten Wie tausche ich Schichten/Bestandteile aus, so daß ich das Ganze testen kann ? Ich kann anstatt der realen Implementierung mir Instanzen über den Microkernel geben lassen, die das geforderte Interface implementieren, aber nur zu Testzwecken da sind. Ich kann anstatt der realen Implementierung mir Instanzen über den Microkernel geben lassen, die das geforderte Interface implementieren, aber nur zu Testzwecken da sind.

Weitere Antworten... Wie entwickle ich parallel ? Wenn man jetzt noch den Contract First Design Ansatz fährt, sich also über die Schnittstellen vor der Implementierung Gedanken macht, dann können Entwickler unabhängig gegen die jeweiligen Interfaces entwickeln. Wenn man jetzt noch den Contract First Design Ansatz fährt, sich also über die Schnittstellen vor der Implementierung Gedanken macht, dann können Entwickler unabhängig gegen die jeweiligen Interfaces entwickeln.

Weitere Antworten... Wann definiere ich die Interfaces ? Die Frage ist schon durch das Contract First Design beantwortet worden. Zuerst das Interface, dann die Implemetierung. Die Frage ist schon durch das Contract First Design beantwortet worden. Zuerst das Interface, dann die Implemetierung. Wie kann ich Bestandteile einfach austauschen ? Der Microkernel hat ein konfigurierbares Mapping zwischen Interface(s) und implementierender Klasse, die on the fly ausgetauscht werden kann. Der Microkernel hat ein konfigurierbares Mapping zwischen Interface(s) und implementierender Klasse, die on the fly ausgetauscht werden kann.

App-Config 1/2 <configuration> <section name=microkernel <section name=microkernel type=dnp.microkernel.ConfigSectionHandler, dnp.microkernel /> type=dnp.microkernel.ConfigSectionHandler, dnp.microkernel /> <local keyType=MyInterfaces.IBerichtswesen <local keyType=MyInterfaces.IBerichtswesen assembly=MyImplementation assembly=MyImplementation implementationType=MyImplementation.BerichtswesenEinfach> implementationType=MyImplementation.BerichtswesenEinfach> </configuration>

App Config 2/2...<microkernel> <local keyType=MyInterfaces.IBerichtswesen <local keyType=MyInterfaces.IBerichtswesen assembly=MyImplementation assembly=MyImplementation implementationType=MyImplementation.BerichtswesenEinfach> implementationType=MyImplementation.BerichtswesenEinfach> <local keyType=MyInterfaces.IBerichtswesen <local keyType=MyInterfaces.IBerichtswesen assembly=MyImplementation assembly=MyImplementation implementationType=MyImplementation.BerichtswesenDetailiert> implementationType=MyImplementation.BerichtswesenDetailiert> </configuration>

Benutzung des Microkernels Herkömmlich IClass1 _class; IClass1 _class; _class = new Class1() as IClass1; _class = new Class1() as IClass1; Mit Microkernel IClass1 _class1; IClass1 _class1; _class = dnp.microkernel.ObjectFactory.CreateInstance( typeof( IClass1 ) ) as IClass1; _class = dnp.microkernel.ObjectFactory.CreateInstance( typeof( IClass1 ) ) as IClass1;

Die Anforderungen... 1.Die Applikation muß unter.NET laufen. 2.Die Applikation muß unter Windows laufen. 3.Die Applikation muß auf einem PDA laufen. 4.Als Datenbank muß SQL-Server, SQL-Server CE und Access unterstützt werden. 5.Der verwendete Algorithmus muß austauschbar sein. 6.Parallele Entwicklung aller Komponenten. 7.Hohe Testabdeckung (Regression Tests).

Ist das alles ? Nein, mann kann das soweit treiben, daß jede Klasse ein Interface bekommt. Dadurch kann jede Klasse durch Testklassen ausgetauscht werden und die Applikation kann zu einem hohen Maße testbar gemacht werden. Der Microkernel kann Singletons verwalten, was auch zu einer besseren Testbarkeit führt, da der Feind des Regression Tests an einer Stelle die Existenz entzogen werden kann. Über den Microkernel können auch Objekte geliefert werden, die sich in einem anderen Prozess oder Rechner befinden. Der Anfordernde weiß nichts davon.

Wo Licht ist, ist auch Schatten ! Ein Nachteil ist eventuell die etwas längere Zeit bei der Instanzierung der Klassen, weil für das angeforderte Interface erst in der Mapping Tabelle die implementierende Klasse gesucht werden muß. Diese wird dann über Reflection instanziert. Die Projektstruktur ändert sich.

Mögliche Projekt-Strukturen Interfaces GUI Business Data Access Utilties Microkernel Host Data Types

Mögliche Projekt-Strukturen Es gibt ein oder mehrere Assemblies, welche die Interfaces beinhaltet. Die anderen Projekte referenzieren diese Interface-Assemblies und sonst kein anderes Assembly von den Projekten. Dadurch wird auch deutlich, das eine keine Kopplung zwischen den einzelnen Bestandteilen vorliegt.

Zur entwickelten Application

Demo der Application

Resüme... Der Microkernel bringt mehr Vorteile als alles andere womit ich bisher Software entwickelt habe. Es bedarf zwar ein wenig der Gewöhnung an die veränderte Denk- und Arbeitsweise, aber das Resultat ist bemerkenswert. Der nächste Evolutionsschritt in der Entwicklung von Software nach dem Schichtenmodell.....?

Resourcen 1/2 1.Die Evolution von Mehrschichtarchitekturen - Virtuos und flexibel – Torsten Zimmermann - dotnetpro Die Evolution von Mehrschichtarchitekturen - Virtuos und flexibel – Torsten Zimmermann - dotnetpro Die Evolution von Mehrschichtarchitekturen - Virtuos und flexibel – Torsten Zimmermann - dotnetpro Contract First Design und Microkernel- Framework – Am Anfang war der Vertrag – Ralp Westphal - dotnetpro Contract First Design und Microkernel- Framework – Am Anfang war der Vertrag – Ralp Westphal - dotnetpro Contract First Design und Microkernel- Framework – Am Anfang war der Vertrag – Ralp Westphal - dotnetpro Contract First Design und Microkernel- Framework – Spicken nicht erlaubt – Ralf Westphal - dotnetpro Contract First Design und Microkernel- Framework – Spicken nicht erlaubt – Ralf Westphal - dotnetpro Contract First Design und Microkernel- Framework – Spicken nicht erlaubt – Ralf Westphal - dotnetpro

Resourcen 2/2 4.Software einfacher entwickeln – Das Software Universum – Ralf Westphal – dotnetpro Software einfacher entwickeln – Das Software Universum – Ralf Westphal – dotnetpro Software einfacher entwickeln – Das Software Universum – Ralf Westphal – dotnetpro Software strukturieren mit Softwarezellen Keine Frage der Schichten – Ralf Westphal – dotnetpro Software strukturieren mit Softwarezellen Keine Frage der Schichten – Ralf Westphal – dotnetpro Software strukturieren mit Softwarezellen Keine Frage der Schichten – Ralf Westphal – dotnetpro Dot Net TV Folge 10 – Microkernel Dot Net TV Folge 10 – MicrokernelDot Net TV Folge 10 – Microkernel 7.Basta 2005 – Slideset Pragmatische Anwendungsarchitektur – Zellen statt Schichten Basta 2005 – Slideset Pragmatische Anwendungsarchitektur – Zellen statt SchichtenBasta 2005 – Slideset Pragmatische Anwendungsarchitektur – Zellen statt Schichten

Fragen...

Kontakt Andreas Bräsen Software Entwicklung Tel