Softwareentwicklung in verteilten Umgebungen Enterprise Middleware Dieter Schmalstieg Dieter Schmalstieg SVU – Enterprise Middleware Enterprise Information Systems • Grosse Unternehmen • Viele existierende Anwendungen • Business Logic (Prozessunterstützung) ist ein wichtiger Aspekt – Nicht in klassischer Middleware abgedeckt • Oft klassischer Client-Server-Ansatz (2-Tier) – Fat Client, integiert Business Logic • Weiterverwendung der Anwendungen wichtig • Integration der Anwendungen wichtig Dieter Schmalstieg SVU – Enterprise Middleware Three-Tier Architecture • Refactoring in drei Schichten • Mittlere Schicht ist neu – Verwendung von Internet-Technologien – Integiert Business Logic – Kann ein standardisiertes Framework bieten • Client basiert auf Internet-Technologien – Reduziert Administration – Reduziert Training Dieter Schmalstieg SVU – Enterprise Middleware Java Platform, Enterprise Edition (Java EE) • Standardisiertes Framework für Middle Tier • Kommuniziert mit existierenden EIS • Implementiert Business + Presentation Logic • Ausführungsumgebung für Komponenten – Enterprise Java Beans, Servlets, Java Server Pages – Java Connector Architecture • Implementierungen – Open Source: Apache Geronimo, JBoss, GlassFish – Kommerziell: Oracle App. Server, IBM WebSphere Dieter Schmalstieg SVU – Enterprise Middleware Java EE Server Technologien • • • • • • • • Enterprise Java Beans (EJB) Java Servlet API (JSS) JavaServer Pages (JSP) Java Connector Architecture (JCA) Java Message Service (JMS) Web Services Java Naming and Directory Interface (JNDI) Java Authentication and Authorization Service (JAAS) Dieter Schmalstieg SVU – Enterprise Middleware Enterprise Application Integration • Enterprise hat viele App.Server und viele EIS • Integration nötig • Lose Kopplung über „Bus“ • Applikationen werden an Standard-Schnittstellen angepasst Implementierung von Adaptern nötig • Kontrakte beschreiben KomponentenEigenschaften Dieter Schmalstieg SVU – Enterprise Middleware Ansätze für Adapter - Jeder mit jedem - „Business Bus“ - N x M Adapter nötig - N + M Adapter nötig Dieter Schmalstieg SVU – Enterprise Middleware Contracts • • • • • • Acceptable input values/types + meaning Return values/types + meaning Error + exception values/types + meaning Side effects Preconditions, postconditions, invariants (More rarely) Performance guarantees, e.g., for time or space used Dieter Schmalstieg SVU – Enterprise Middleware Beispiel: Java EE Connector Architecture (KomponentenContainer) Management von - Verbindung - Transaktionen - Sicherheit Dieter Schmalstieg SVU – Enterprise Middleware Service-Oriented Architecture (SOA) Alle Komponenten müssen Services sein • Grobgranular, eigenständig nutzbar • Im Netz plattformunabhängig nutzbar • Hat wohldefinierte Schnittstelle (Kontrakt) • Im Verzeichnis registriert • Dynamisch gebunden Webservices können (müssen nicht) zur Implementierung von SOA verwendet werden Dieter Schmalstieg SVU – Enterprise Middleware Virtual Machines System Virtual Machine • Komplette HW virtualisiert • Für beliebiges OS • Xen, VMWare ESX Dieter Schmalstieg Application Virtual Machine • Nur Runtime Environment für Prozesse • JavaVM, .NET Common Runtime Infrastructure SVU – Enterprise Middleware Virtual Machines für Komponenten • Bedarf an Software-Widerverwendung auf Binär-Ebene • Moderne Programmiersprachen sind managed – – – – – Java, .C#, Managed C++ Ausführung in Application Virtual Machine Kompilation in Byte Code/CIL Interpretation zur Laufzeit Reflection, Serialisierung • Managed Objects eignen sich als Komponenten – Beispiele: Java Beans, MS Component Object Model Dieter Schmalstieg SVU – Enterprise Middleware Komponenten und Container • Container = Laufzeitumgebung für Komponenten • Komponente = spezielles Softwareobjekt – – – – Öffentlicher Standardkonstruktor Serialisierbar Statuszugriff über public getter/setter Verwaltbar ueber Introspection oder Metadaten/Contracts • Container verwaltet Komponente – – – – Komponente hat kein „Hauptprogramm“ Container regelt Instantiierung Container regelt Aufruf Container regelt Aktivierung und Deaktivierung (Auslagerung in persistenten Speicher) – Container kann Migration veranlassen Grid, Cloud Dieter Schmalstieg SVU – Enterprise Middleware Beispiel: Enterprise Java Beans • Entity Bean – Zur persistenten Datenspeicherung – Entity-Manager verantwortlich für Attachment, Detachment, Re-Attachment • Session Bean – Stateful: zur Verwaltung von Benutzersessions – Stateless: z.B. zur Abbildung von Web Services • Message Driven Beans – für Kommunikation mit Legacy Systems durch Java Messaging Service Dieter Schmalstieg SVU – Enterprise Middleware Internet-basierte Clients • Thin Client basiert nur auf Web-Technologien • Einfacher Webbrowser – Präsentationslogik auf Server-Seite – Beispiel: Server Pages (Active Server Pages, Java Server Pages) • Webbrowser Applet – Mobiler Code im Browser als Container – Präsentationslogik (auch) auf Client-Seite – Beispiel: Java Applet, AJAX/REST Dieter Schmalstieg SVU – Enterprise Middleware Server Pages • Präsentationsaufgaben – Annehmen und Überwachen von Client Zugriffen – Trennung von Präsentation und Darstellungslogik – Benutzeraufgaben aufbereiten… • Mischung aus HTML + prozeduralem Code – Java Server Pages: HTML + Java – MS Active Server Pages: HTML + Perl, Python, … • Prozeduraler Code – Wird in Bytecode vorkompiliert – Wird in Container ausgeführt (Servlet) – Nur bei Bedarf – Keine echte Komponente Dieter Schmalstieg SVU – Enterprise Middleware AJAX • AJAX (Asynchronous Javascript and XML) • Download von HTML + Javascript in Standard-Browser • DOM des HTML-Dokuments für die Darstellung • Asynchrones Nachladen von Teilen des DOM durch Javascript-Code • Immer selbe HTML-Seite garantiert immer schnelle Darstellung • Spezielle Ausprägung von REST […] Dieter Schmalstieg SVU – Enterprise Middleware REST • REsidential State Transfer • Absichtlich einfacher Softwarearchitekturstil • Adressierbarkeit – Jede Resource über URI ansprechbar – Verwaltung durch HTTP GET, POST, PUT, DELETE – Jede HTTP-Message ist self-contained • Stateless – Server verwaltet nur Resourcen – Server weiß nichts über Client – Server ist einfach skalierbar Dieter Schmalstieg SVU – Enterprise Middleware Zusammenfassung • Moderne Middleware-Frameworks – Java EE, .NET Möglichst Web-basiert Tw. Presentation Logic Eigentliche MiddlewarePlatform Komponenten- und Container-Modell Möglichst unveränderte Legacy-Systeme Business-Logic Dieter Schmalstieg SVU – Enterprise Middleware Ende Dieter Schmalstieg SVU – Enterprise Middleware