Software Architektur I Einführung Innere/Äussere Architektur Single-/Multi-Tier Middleware MOM
Lernziele Sie können ... den Sinn und Zweck der Architektur erläutern zwischen innerer und äusserer Architektur unterscheiden Single-/Multitier-Architekturen situationsabhängig vorschlagen verschiedene Arten von Middleware benennen die Prinzipien von Message Oriented Middleware (MOM) erläutern
Zweck der Architektur Chaos
Architektur „…the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.“ (IEEE Standard 1471-2000 Recommended Practice for Architectural Description for Software-Intensive Systems)
Komponenten Komponenten sind Strukturelemente einer Softwarearchitektur. Verschiedene Granularitätsstufen Hauptzielsetzungen von Komponenten: Abhängigkeiten zu beherrschen Eigenschaften von Komponenten (im engeren Sinne): Kapselung von Daten und Methoden (Information Hiding) Zugriff nur über definierte Schnittstellen Können einfach oder mehrfach instanziiert werden
IT-Architektur - Zusammenhänge Markt IT-Markt
Architektur im Entwicklungsprozess Äussere Architektur wird als Architekturprojekt festgelegt. Innere Architektur ist Teil des Design-Prozesses.
Innere Architektur I System Subsysteme Teil des Entwicklungsprojektes Konkrete Subsystembildung Applikationscluster Applikation (System) Modul (Subsystem) Komponente Implementierte Klassen System Subsysteme
Innere Architektur II
Abstraktionsstufen im Architekturentwurf
Musterarchitektur Quasar I Quasar – Qualitäts-Software-Architektur Technologieunabhängige Musterarchitektur für komplexe verteilte betriebliche Informationssysteme: Entwurfskonzepte und –richtlinien Einheitliche Begriffswelt Standardisierte Schnittstellen zu Diensten Wieder verwendbare Dienstkomponenten Beispiel 1:
Musterarchitektur Quasar II Beispiel 2:
POSA Pattern Oriented Software Architecture 3 Ebenen von Muster: Architekturmuster Muster für verteilte Anwendungen Bsp.: MVC Entwurfsmuster Weniger als GoF (Gang of Four) Konzentration auf verteilte Anwendungen Idiome Programmierspezifische Konzepte http://www.posa3.org/
Architekturmodelle Single-Tier Client-Server-Architekturmodell Basismodell: Client Consumer Server Provider Peer-to-Peer-Architekturmodell Ausgebautes Service-Modell: Service-Provider Service Consumer Modell des Internet!
Schichtenarchitekturen 3 Hauptaufgaben: Präsentation – Interaktivität – Input/Output der Daten Anwendungslogik – Verarbeitung der Daten Datenhaltung – Speicherung der Daten Verteilung der Aufgaben auf einzelne Schichten (Tiers) 2-Tier-Architektur Fat (Rich) Client Thin Client Stored Precedures Anwendungslogik Präsentation
3-Tier-Architecture Client-Tier: Middle-Tier Server-Tier Präsentation Front-End Middle-Tier Anwendungslogig Business-Logic Server-Tier Datenhaltung Back-End Persistenz Datenbanksysteme Manchmal sind dies auch EIS (Enterprise Information System) wie z.B. Legacy Systems («Erbstücke»)
n-Tier-Architecture DMZ = Demilitarisierte Zone
Verteilte Systeme Heute Millionen von Computersystemen, welche miteinander verbunden sind. Netzwerke bilden Transportebene LAN – WAN Intranet – Extranet – Internet
Verteilte Anwendungen Anwendungskomponenten arbeiten über die verteilten Systeme hinweg miteinander Einfache verteilte Anwendungen z.B. Internetanwendungen über WWW Verteilte Informationssysteme (Mehrschichtige Anwendungen): z.B. Flugreservationssystem Eingebettete verteilte Systeme (Embedded distributed Systems) z.B. Intelligentes Navigationssystem im Auto Mobile verteilte Systeme z.B. E-Mail-Anwendungen über PDA‘s bzw. Mobiltelefone
Middleware Standardisierte Software, welche verteilte Systeme bzw. Anwendungen ermöglicht. Abstraktion von der Netzwerkprogrammierung Kommunikationsorientierte Middleware z.B. RPC, RMI, Web-Service Anwendungsorientierte Middleware z.B. CORBA, J2EE, .NET
Kommunikationsmodelle Interaktionsmuster zwischen einzelnen Komponenten (Kommunikationspartner) Synchron – Gleichzeitigkeit Asynchron – Message Oriented Middleware (MOM)
Transparenz Ziel der Middleware: Verbergen von Verteilungsaspekten vor der Anwendung Zugriffstransparenz Ortstransparenz Nebenläufigkeitstransparenz Fehlertransparenz Replikationstransparenz
Vor-/Nachteile der Verteilung Vorteile Gemeinsame Nutzung von Ressourcen: Hardware Software (Anwendungen, Funktionalität) Daten, Informationen Enabler von neuen Geschäftsmodellen z.B. e-Commerce Nachteile Komplexe Systemumgebung Erhöhtes Sicherheitsrisiko z.B. Viren, Würmer, Datenspionage etc.
Klassifikationsschema von Middleware Anwendungsorientierte Middleware Um Dienste und Laufzeitaspekte erweiterte Middleware zur Unterstützung der Anwendung. Kommunikationsorientierte Middleware Abstraktionsschicht zwischen Anwendung und verteiltem System
Kommunikationsorientierte Middleware Einordnung des Middleware-Protokolles:
Kategorisierung Kommunikationsorientierter Middleware Entfernter Aufruf (synchrone Kommunikation): Prozedural: Remote Procedure Call (RPC) Objektorientiert: Remote Method Invocation (RMI) Web-Services (SOAP) Nachrichtenorientierte Middleware (asynchrone Kommunikation) Java Message Service (JMS) MQSeries von IBM
Aufgaben kommunikationsorientierter Middleware Abstraktion des Transports Marshalling – Unmarshalling Datentransformation zwischen den Plattformen Plattformabhängig (Hardware-/Betriebssystem-/Framework-/Programmiersprachabhängig): EBCDIC (IBM, Extended Binary Coded Decimal Interchange Code) ASCII (American Standard Code for Information Interchange) Plattformunabhängig: CDR (CORBA, Common Data Representation) Unicode / ISO/IEC 10646 Externe Datenformate (mit semantischer Ebene): EDI EDIFACT (Electronic Data Interchange) XML (Extended Markup Language) Fehlerbehandlung/Fehlerbehebung
RPC (Remote Procedure Call) I Entfernter Prozeduraufruf Idee: Aufruf einer entfernten Prozedur wie lokaler Prozeduraufruf (Verteilungs-/Ortstransparenz) Implementierung in unterschiedlichen Umgebungen: Sun RPC Microsoft Windows Herstellerneutral: DCE RPC (Distributed Computing Environment) von Open Group www.opengroup.org/dce
RPC (Remote Procedure Call) II Ablauf eines entfernten (synchronen) Prozeduraufrufes: Stub: Stumpf, Programmhülle mit Schnittstelle jedoch ohne Implementierungscode
RMI (Remote Method Invocation) I Ablauf eines entfernten (synchronen) Methodenaufrufes: Proxy: Stellvertreter Skeleton: Serverseitige Programmhülle
RMI (Remote Method Invocation) II Java-Source-Code javac Java-Compiler rmic RMI-Compiler Erst bei Aufruf Load auf den Client
MOM (Message Oriented Middleware) I Modell der asynchronen Nachrichtenübermittlung: (Message) MOM (Message-Queue)
MOM (Message Oriented Middleware) II Kein Session-Handling notwendig Grundsätzlich ein Store-and-Forward-Prinzip Zur Zusicherung der garantierten Zustellung: Voraussetzung: persistente Warteschlangen Rückmeldung bei erfolgter Zustellung
Request-Reply Model Simulation der synchronen Kommunikation Transaktion ist beim Sender erst abgeschlossen, wenn entsprechender Reply vorhanden ist. Vorteile gegenüber synchroner Kommunikation: geringere Kommunikationsressourcen mehrere parallele Verbindungen möglich Message-ID und Correlation-ID notwendig
Publish-Subscribe Model Abonnentensystem
Message Services Produkte Java JMS - Java Message Service Microsoft MSMQ – Microsoft Message Queuing IBM WebSphere MQ (früher MQSeries)
JNDI – Java Naming and Directoy Interface JMS – Architektur JNDI – Java Naming and Directoy Interface CF – Connection Factory D - Destination Java-Anwendung MOM-Server
JMS - Kommunikationsablauf Aufbau der Verbindung eines JMS-Client zum JMS-Provider Receiving Message Sending Message synchron asynchron
Point-to-Point Schnittstelle Beispiel von Java-Code auf Seite 106
Publish-Subscribe Schnittstelle Wichtigster Unterschied bildet die Topic-Warteschlange.