net anwendungsarchitektur von schichten zu verbänden ralf westphal, [email protected] freier autor,...

41
.NET Anwendungsarchitektur Von Schichten zu Verbänden hal, [email protected] or, Berater, Entwickler und Associate of thinktectu

Upload: rosamund-morenz

Post on 05-Apr-2015

114 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

.NET AnwendungsarchitekturVon Schichten zu Verbänden

Ralf Westphal, [email protected]

Freier Autor, Berater, Entwickler und Associate of thinktecture

Page 2: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Bekannte Architekturmodelle heute

Page 3: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Schicht für Schicht

• Architekturen bauen Anwendungen in logischen Schichten (engl. layer) auf

• Logische Schichten können zu physikalischen werden (engl. tier)– sog. „Verteilte Anwendungen“

• Das scheint inzwischen allen plausibel und erinnert an…

Page 4: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

OSI Schichten

Page 5: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Probleme mit heutigen Architekturmodellen• Software layers sind etwas anderes als network

protocol layers– Im Netzwerk bleibt die grundsätzliche Funktionalität

je Layer gleich, aber das Abstraktionsniveau steigt– Bei Software ändert sich die Funktion bei u.U. gleicher

Abstraktion

• Es fehlen Aussagen zu physikalischen Einheiten (z.B. Komponente, Host)

• Schwammige Terminologie– Was ist eine Applikation?– Was bedeutet „verteilte Anwendung“?

• Mangelnde Skalierbarkeit– Die Beschreibung von Softwaresystemen wird schnell

unhandlich

Page 6: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Wir brauchen…

• …ein neues Architekturmodell, dass…– leicht verständlich ist– die bisher abgedeckten Fälle enthält– besser skaliert– klare Vorgaben macht– eine klare Terminologie definiert– zu einfacheren Darstellungen größerer

Systeme führt– existierendenen Technologie einen

Platz zuweist– breit anwendbar ist

Page 7: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Software Cells

Software Cell /Software Zelle

United Software Cell Structure /

Software Zellverband

Page 8: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Software Zelle = Applikation

Page 9: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Eigenschaften einer Software Zelle I• Eine Zelle wird gebildet durch Hülle

und Kern– Hülle = Host: Container, in dem Logik

ausgeführt wird•Eine EXE-Assembly•App.Config

– Kern = Core: Zentrale Logik der Anwendung, für den Zweck der Applikation unabdingbar•Besteht aus einer oder mehrer DLL-

Assemblies

Page 10: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Die einfachste Applikation• Host: Console-EXE• Core: eine DLL, die autom. gestartet wird und

ohne Ein/Ausgabe arbeitet

• Eine Applikation besteht immer nur aus genau 1 EXE und 1..n DLLs– Verteilte Anwendungen bestehen daher aus min. 2

Applikationen– Ein SOA Service ist immer auch eine Applikation

Page 11: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Eigenschaften einer Software Zelle II• Adapter und Portale dienen der Kommunikation

mit der Außenwelt– Resource Adapter: Zugriff auf Datenbanken,

Dateisysten, Netzwerkverbindungen• Applikation greift nach außen• Hat einen großen Hub, Impedance Mismatch zwischen

Applikation und Ressource ist groß– Application Adapter: Zugriff auf eine andere

Applikation• Applikation greift nach außen• Hat einen kleinen Hub, aufgerufene Applikation stellt

eine Schnittstelle bereit, die sehr nah am Informationsmodell der aufrufenden ist

– Application Portal: Erlaubt den Zugriff auf die Applikation von außen

• Auf Applikation wird zugegriffen• Stellt anden Applikationen eine Schnittstelle zur

Verfügung– User Portal: Erlaubt den Zugriff auf die Applikation

durch einen Benutzer• Auf Applikation wird zugegriffen

Page 12: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Hosts• Hosts stellen dem Core Infrastruktur zur

Verfügung– Im einfachsten Fall laden sie den Core nur und

starten seine Ausführung

• Existierende Host Technologien– Console EXE– Winforms EXE– NT Service EXE– IE– MS Office Anwendungen: Word, Excel, Outlook

etc.– IIS/ASP.NET– COM+– SQL Server 2005– BizTalk

Page 13: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Applikationsarten I

Einfache Desktop Applikation,z.B. Taschenrechner, Solitair

Desktop Applikation mit Dateisystemzugriff,z.B. Notepad, Photoshop

Desktop Applikation DB-Zugriff, z.B.Lexware Buchhalter

RDBMS dateibasiert bzw. Server ohne SPs

Page 14: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Applikationsarten II

Desktop Applikation, die auf ein serverbasiertes RDBMS zugreift, in dem SPs laufen.

Hos

t: W

info

rms

EXE

Hos

t: S

QL

Serv

er

Page 15: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Applikationsarten III

Entfernte Anwendung, z.B. Web Service

Hos

t: II

S/ASP

.NET

Geschäftsprozess-Anwendung

Hos

t: B

izTa

lk

Page 16: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Applikationsarten IV

Stark verteilte Lösung

Page 17: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Verteilte Anwendungen…

Page 18: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

…Anwendungen verteilen

Page 19: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Service Oriented Architecture

Page 20: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Alternative, flexiblere Darstellung

Page 21: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Zellräume• Intrazelluärer Raum

– enthält Kern, Adapter, Portale– wird bestimmt durch Host

• Host stellt Infrastruktur, z.B.– Logging/Tracing– Aktivierung– Transaktionen

• Extrazelluärer Raum– Raum zwischen Applikationen– Verantwortlich für den Nachrichtenaustausch

zwischen Applikationen• TCP/UDP• HTTP• MSMQ

Page 22: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Zellstrukturen - Kern

• Kern kann und soll aus mehreren Komponenten bestehen

• Kern-Komponenten (zunächst) ohne Gewichtung und Reihenfolge

Page 23: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Zellstrukturen – Resource Adapter (RA)• Macht Ressource zugänglich

– Liefert Daten auf Abstraktionsniveau des Kerns aus Ressource an

– High Level RA Layer

• Baut auf einem low level API auf• Enthält ggf. eine vereinheitlichende

Schicht zur Ansteuerung verschiedener APIs

• Low Level RA Layer

Page 24: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Zellstrukturen – Application Adapter (AA)• Macht andere Applikationen

zugänglich– Daten werden auf hohem

Abstraktionsniveau erwartet– High Level AA Layer

• Kapselt ggf. Proxy der anderen Applikation– Verbirgt Details des

Applikationszugriffs

Page 25: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Zellstrukturen – Application Portal• Macht Applikation für Zugriff von außen

zugänglich– Abstraktionsniveau abhängig von

Anwendungsart und Kommunikationsmedium

• Strukturierung vonAbstraktionsniveau undAnwendungsartabhängig

Page 26: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Zellstrukturen – User Portal• Birektionale Kommunikation mit einem

Anwender– Präsentation des Kern-Zustands– Erfassung von Daten zur Steuerung des

Kerns

• Typischerweise Organisiertnach dem MVC Pattern

Page 27: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Nichts Neues unter der Sonne• Bei Software geht es immer noch um EVA und

I/O– Eingabe/Input: Adapter/Portal– Ausgabe/Output: Adapter/Portal– Verarbeitung/Processing: Core

Page 28: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Fast wieder OSI

Page 29: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Membranen• Strukturen erhalten

Unabhängigkeit durch Umhüllung mit einer Membran– Membranen isolieren „Innereien“

(Implementation) voneinander•Entkopplung

– Interfaces definieren die „Durchlässigkeit“ von Membranen•Exozytose: Information fließt aus einer

Applikation aus•Endozytose: Information fließt in eine

Applikation ein

– Membranen schließen wiederverwendbare Strukturen ein

Page 30: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Interzelluäre Membran

Page 31: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Intrazelluläre Membranen

Page 32: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Intranukleare Membranen• Kerne haben Strukturen

– Komponenten

• Strukturen im Kern sollten wiederum durch Membranen voneinander getrennt sein

Page 33: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Contract First Design

• Membranen sind vor und unabhängig von der Implementation von Strukturen zu planen– Komponenten referenzieren keine

Komponenten zur Designzeit, sondern Interfaces

– Interfaces definieren…•Operationen•Daten(strukturen)

– Komponenten implementieren Interfaces

Page 34: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Implikationen• Komponentennutzung

– Komponenten (bzw. Klassen aus Komponenten) können nicht mehr direkt instanziert werden

• Lösung: Microkernel lokalisiert und instanziert Komponenten

• Projektorganisation– Projekte referenzieren (nur noch) Interface-

Assemblies– Komponenten werden in separaten

Projektmappen entwickelt• Verhindert die Umgehung von Interfaces

Page 35: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Beispielanwendung

• Ermittlung einer Zahlenreihe– Benutzer wählt aus einer Liste von

Algorithmen zur Zahlenreihenbestimmung aus

– Benutzer gibt einen Maximalwert vor– Benutzer startet

Zahlenreihenberechnung– Anzeige der Ermittelten Zahlen– Benutzer kann die Zahlenreihe

speichern

Page 36: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Beispielarchitektur

Page 37: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

The Big Picture• 10n – Eine Reise durch das

Software-Universum

Page 38: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Fazit• Existierende Architekturmodelle haben

Nachteile– Unvollständige Beschreibungen– Umständliche Beschreibungen– Unpräzise Beschreibungen

• Software Cells bieten einen frischen Blick auf Softwarearchitektur– Enthalten bisherige Konzepte

• Schichtenmodell• Onion• Mehrschichtige Anwendungen• SOA

– Machen klare Aussagen und geben Empfehlungen– Sind einfach zu verstehen und lernen– Können große und kleine Systeme ohne

Notationswechsel darstellen

Page 39: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Referenzen• Ralf Westphal, Software Cells – An Introduction,

http://weblogs.asp.net/ralfw/category/9899.aspx • Microsoft, Application Architecture for .NET,

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/distapp.asp

• Clemens Vasters, Ralf discovers the onion and resource access and I say „Duplex“, http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=2892db4d-e9d7-4fd0-ac62-5dc1b68e24f5

• Microkernel Ansätze– Castle Project, http://www.castleproject.org/castle/show/HomePage– Spring.NET, http://www.springframework.net/– Picocontainer, http://www.picocontainer.org– StructureMap, http://sourceforge.net/projects/structuremap

Page 40: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Über den Referenten• Ralf Westphal (www.ralfw.de) ist freier

Softwaretechnologievermittler. Er arbeitet als Fachautor, Coach/Berater, Softwareentwickler und Sprecher auf Entwickler-Events im In- und Ausland wie dem Microsoft Technical Summit, Microsoft DevDays, ADC, BASTA!, COMDEX oder SD West. Der Schwerpunkt seiner Arbeit liegt bei der Vermittlung und Anwendung moderner Softwaretechnologien und -konzepte im Zusammenhang mit dem .NET Framework.

• Darüber hinaus ist Ralf Westphal einer der unabhängigen deutschen Microsoft Regional Directors, Produzent von .NET TV (www.dotnettv.de), Associate der ersten Stunde bei thinktecture (www.thinktecture.com) und zusammen mit Christian Weyer einer der .NET Twins (www.dotnettwins.de).

•Email: [email protected]

www.thinktecture.com

Page 41: NET Anwendungsarchitektur Von Schichten zu Verbänden Ralf Westphal, ralfw@ralfw.de Freier Autor, Berater, Entwickler und Associate of thinktecture

Publikationen

.NET kompakt, Spektrum Akademischer Verlag 2002, ISBN 3827411858

Bücher

ADO.NET Datenbankprogrammierung, Addison-Wesley 2002, ISBN 3827319978

Jetzt lerne ich ADO.NET, Markt+Technik, 2003, ISBN 3827262291(zusammen mit Christian Weyer)

In Fachzeitschriften

Video

www.dotnettv.de tv.dotnetpro.de