Enterprise Application Integration Ebenen der Integration

Werbung
Enterprise Application Integration
Ebenen der Integration
Prof. Dr. Christian Pape
Übersicht
ƒ Aufbau mehrschichtiger Applikationen
à Schichten
à MVC
à J2EE Entwurfsmuster (für Kommunikation
Presentation Layer zu Business Layer)
ƒ Ebenen der Integration
à Benutzungsschnittstelle
à Funktionsebene
à Datenebene
Ebenen der Integration
3-2
Aufbau mehrschichtiger Applikationen
Applikation
User Interface /
Presentation layer
UI
Funktionen
Daten
PersonUI
Benutzerinteraktion, Dialogsteuerung, UI-abhängige
Repräsentation von Daten
(„17.5.06“, „5/17/06“)
0..n
Geschäftsfunktionen /
Business layer
SQL Datenbanken
Datenintegrität unabhängig
von Applikationen
(date > 1.1.1900)
0..n
1
Repräsentation von Daten
unabhängig von deren Eingabe
(java.util.Date), Funktionen und
Workflow
Datenhaltung
PersonControl
1
Person
Model-View-Control (MVC)
Entwurfsmuster (Bspl. J2EE)
• View: Ein-/Ausgabe Daten (JSP)
• Control: Dialogsteuerung (Servlet)
• Model: Funktionen (EJB)
Ebenen der Integration
3-3
MVC / Java Swing
PersonUI
-jTextFieldDate : JTextField
+PersonUI(person : Person) : void
JPanel
Presentation layer
PropertyChangeListner
Business layer
1
-person
+propertyChange(PropertyChangeEvent evt)
Person
-geburtsDatum : Date
+Person(geburtsDatum : Date)
+setGeburtsDatum(geburtsDatum : Date) : void
+addPropertyChangeListener(listener : PropertyChangeListener) : void
Ebenen der Integration
3-4
MVC / Java Swing
: PersonUITest
aPerson : Person
aPersonUI : PersonUI
new Person()
new PersonUI(aPerson)
Daten darstellen
addPropertyChangeListener(aPersonUI)
setGeburtsDatum(new Date())
propertyChange(evt)
Ebenen der Integration
Daten neu
darstellen
3-5
MVC / Java Swing
PersonUI
Presentation
PersonLogger
layer
Business layer
-person
1
PropertyChangeListner
+propertyChange(PropertyChangeEvent evt)
Person
Ebenen der Integration
3-6
Übersicht
ƒ Aufbau mehrschichtiger Applikationen
ƒ Ebenen der Integration
à Benutzungsschnittstelle
à Funktionsebene
à Datenebene
Ebenen der Integration
3-7
Ebenen der Integration
Layer: logische Schichten
Tier: physisch verteilbare
Schichten
Presentation layer
UI
Presentation tier
UI
Business layer
Funktionen
Daten
Business tier
Data layer
Data tier
Ebenen der Integration
Funktionen
Daten
3-8
ƒ Verschiedene Varianten zwischen A
und B zu integrieren
à Zwischen horizontalen Layer
à Von oberen zu unteren Layer
à Von unteren zu oberen Layer
ƒ Im Folgenden eine Integrationsrichtung
à „A benutzt B“
Ebenen der Integration
3-9
Ebenen der Integration / Horizontal
System A
System B
User Interface
Funktionen
Daten
A
B
A benutzt B (A nutzt UI von B, ruft Funktionen
von B auf, holt Daten von B)
Ebenen der Integration
3-10
Ebenen der Integration / Vertikal A
System A
System B
User Interface
Funktionen
Daten
Ebenen der Integration
3-11
Ebenen der Integration / Vertikal B
System A
System B
User Interface
Funktionen
Daten
Ebenen der Integration
3-12
Übersicht
ƒ Aufbau mehrschichtiger Applikationen
ƒ Ebenen der Integration: Horizontal
à Benutzungsschnittstelle
à Funktionsebene
à Datenebene
Ebenen der Integration
3-13
Ebenen der Integration / Horizontal
Web Anwendung
User Interface
ƒ
ƒ
ƒ
ƒ
ƒ
3270 basiertes
Banksystem
Kontoabfrage
„Screen scraping“, „GUI-fizierung“
à
à
Benutzereingaben werden durch neues User-Interface simuliert
Ausgaben altes System werden als HTML durch neues System dargestellt
à
à
à
IBM Host on demand
Open Connect
Viele andere
Applet Lösungen: Applet ist eine 3270 Terminal Implementierung
HTML Lösungen: Software setzte 3270 Bildschirm automatisch als
HTML um
Java API: Zugriff auf Felder des 3270 Bildschirm (80x24, Cursor)
Produkte
Ebenen der Integration
3-14
Ebenen der Integration / Horizontal
VT3270
IBM HoD
Ebenen der Integration
3-15
Ebenen der Integration / Screen scraping
Vorteile
Nachteile
ƒ Vielzahl von Produkten für
3270 Host Anwendungen
ƒ Relativ wenige
Programmieraufwand
ƒ Keine Änderungen an Host
Anwendung
ƒ Technische Neuerungen
nutzbar (z.B. HTTPS)
ƒ Herstellerabhängigkeit (Lizenzen
teuer)
ƒ Neue User Interfaces nah an
3270 Screens (Codes,
Darstellung, Sprachwechsel)
ƒ mehrerer 3270 Screens auf ein
neues UI schwierig abzubilden
ƒ Sicherheit (Benutzeranmeldung)
ƒ Änderungen im UI der 3270
Anwendung haben immer
Änderungen im integrierten
System zur Folge
Ebenen der Integration
3-16
Ebenen der Integration / Horizontal
Prozess mit
Aktivitäten
Gemeinsames
User Interface
Web UI
User Interfaces
Bestehender Appl.
Ebenen der Integration
3-17
Ebenen der Integration / Horizontal
Prozess
Gemeinsames UI
Web UI
User Interfaces
bestehender Applikationen
ƒ Integration über HTML Frames (alles Webanwendungen)
à Synchronisation Frames schwierig (z.B. via Java Script)
ƒ Portalserver
à Single sign login
à Workflow
ƒ Meist zusätzlich Integration auf Funktionsebene
Ebenen der Integration
3-18
Ebenen der Integration / Horizontal
.Net /
W2K Server
Einbindung
mit IFrame
J2EE /
Solaris
Ebenen der Integration
3-19
Ebenen der Integration / Gemeinsames UI
Vorteile
Nachteile
ƒ Je nach Produkt Workflow
konfigurierbar
ƒ Nur eine
Benutzeranmeldung
ƒ Programmieraufwand
moderat
ƒ Herstellerabhängigkeit (Lizenzen
teuer)
ƒ Änderungen UI integrierte Appl.
haben immer Änderungen im
integrierten System zur Folge
ƒ Nur bei Webanwendungen
praktikabel
Ebenen der Integration
3-20
Ebenen der Integration / Horizontal
Webshop
SAP R/3 Kern
Funktionen
Bestellungen
erzeugen
ƒ Häufigste und wichtigste Integrationstyp
à Technische Details: Verteilte Systeme
ƒ Verschiedene Aufrufparadigmen
à Remote Procedure Call (Web Services, DCE RPC)
à Verteilte Objekte (CORBA, JRMI, COM+)
à Message Queue meist mit XML Nachrichten
ƒ Unterschiedliche Protokolle / Technologien
ƒ Viele Standards / Produkte
Ebenen der Integration
3-21
Ebenen der Integration / Funktionsebene
Vorteile
Nachteile
ƒ Teilweise Geringere
Latenzzeiten (keine
zusätzliche UI Schicht
dazwischen)
ƒ UI Änderungen im alten
System wirken sich nicht auf
neues System aus
ƒ Transaktionelle Aufrufe auf
Funktionsebenen, statt UI
Ebene
ƒ Neues UI frei gestaltbar
ƒ Viele Standards und
Technologien
ƒ Meist Adapter für Geschäftslogik
im neuen System nötig (Business
Delegate)
ƒ Überbrücken von
Aufrufparadigmen (RPC zu OO, OO
zu Nachrichten, …)
ƒ Überbrücken von Technologien
(CORBA nach COM)
ƒ Sauber definierte Schnittstelle
nötig (ist auch ein Vorteil)
ƒ Betriebszeiten Gesamtsystem
nicht höher als geringste
Verfügbarkeit jedes integr. Systems
Ebenen der Integration
3-22
J2EE Entwurfsmuster
http://java.sun.com/blueprints/patterns/catalog.html
ƒ Enterprise Java Beans (Auswahl von Mustern)
à BusinessDelegate
- Kapselt Zugriff auf Business Layer oder von anderen Systemen
- Caching, Technische Exceptions fangen, Datenkonvertierung, …
à SessionFacade
- Kapselt Zugriff auf Entity Beans (Persistence)
- Entity Beans immer nur mit lokalen Schnittstellen impl.
- Koordiniert Operationen der unteren Ebene (Entity Beans, …)
- Implementiert Funktionalität eines oder mehrere Anwendungsfälle
à ServiceLocator
- Kapselt Details für Auffinden von Diensten (URL, Portnummern, ...)
à TransferObject
- Faßt komplexe Geschäftsdaten zusammen, um Netzwerklast zu
minimieren
- TransferObject hat keine Geschäftslogik (nur getter/setter für
Daten)
Ebenen der Integration
3-23
Person verwalten
ƒ Personen
à Person durch Personalnummer (Employee-ID) eindeutig identifziert
à Name, Vorname
ƒ Funktionen
à Person nach dieser Nummer suchen
à Bestimmte Person Löschen
ƒ 1. Schritt Entwurf Schnittstelle zum Business Layer (Java
Interfaces für Business Delegate)
à Funktionen
à Daten
ƒ 2. Schritt Implementierung mit einer bestimmten Technologie
à EJB (Session Beans)
à Alternativen: CORBA, Web Services, Java RMI
à (stupide) Verwendung der J2EE Entwurfsmuster
Ebenen der Integration
3-24
Person verwalten
PersonBusinessDelegate
getPersonByEmployedId() : Person
deletePerson(person : Person) : void
Servlets / JSPs
PersonBusinessDelegateImpl
Presentation Layer
oder Business Layer
zu integrierendes System
Person
getFirstName(): String
getLastName(): String
getEmployeeId() : String
Remote Aufrufe über Netzwerk
?
?
Business Layer
(EJB)
oder WS, CORBA, …
Ebenen der Integration
3-25
Person verwalten
PersonBusinessDelegate
getPersonByEmployedId() : Person
deletePerson(person : Person) : void
Presentation Layer
oder Business Layer
zu integrierendes System
Person
getFirstName(): String
getLastName(): String
getEmployeeId() : String
Business Layer
(EJB)
PersonBusinessDelegateImpl
ServiceLocator <<Singelton>>
getPersonSessionFacadeBean() : …
Remote Aufrufe über Netzwerk
PersonTransferObjekt
PersonSessionFacadeBean
getPersonByEmployeeId() : Person
deletePerson(person : Person) : void
lokale Aufrufe im Speicher
PersonEjbHome
findByEmployeeId() : PersonEjb
findByLastName() : Collection
ejbCreate(…) : PersonEjb
PersonEjb
getFirstName(): String
getLastName(): String
getEmployerId() : String
oder WS, CORBA, …
Ebenen der Integration
3-26
Person verwalten
ƒ Implementierung
à
à
à
à
Verwendung BusinessDelegate
Implementierung BusinessDelegate
Implementierung Session Bean
Implementierung Entity Beans
Ebenen der Integration
3-27
Person verwalten / Benutzung BusinessDelegate
(besser Factory Pattern verwenden)
PersonBusinessDelegate pbd = new PersonBusinessDelegateImpl();
Person person = null;
try {
// Netzwerkaufruf oder Person ist im Cache des BusinessDelegate
person = pbd.getPersonByEmployeeId(“H876Z72“);
} catch (BusinessException e) {
// eigene Exception, kapselt RemoteException
System.out.println(“Person nicht gefunden. Ursache war “
+
e.getLocalizedText() );
}
ƒ Businessfunktionen entkoppelt von Servertechnologie
à Keine konkrete Implementierung sichtbar (nur Interfaces)
à verwendeter Komponententechnologie verborgen
à Datenformate für gesendete Daten (Objekte, XML, …)
verborgen
Ebenen der Integration
3-28
Person verwalten / Impl. Business Delegate
public class PersonBusinessDelegateImpl implements … {
private static PersonSessionFacadeBean psfb = null;
public PersonBusinessDelegate() {
psfb = ServiceLocator.getSingleton()
.getPersonSessionFacaceBean();
// fehlt: Exceptions behandeln
}
public Person getPersonByEmployerId(String employeeId)
throws BusinessException {
Person person = null;
try {
person = psfb.getPersonByEmplyeeId(employeeId);
} catch (Exception e) {
throw new BusinessException(e);
}
return person;
}
}
Ebenen der Integration
3-29
Person verwalten / Impl. Session Fassade
public class PersonSessionFacadeBean extends SessionBean
{
private static PersonEjbHome personHome = null;
// Initialisierungen etc.
// remote interface
public Person getPersonByEmployerId(String employeeId)
throws RemoteException, FinderException {
PersonEjb personEjb = null;
Person person = null;
try {
personEjb = personHome.findByEmpoyeeId(employeeId);
person = personEjb.getPerson(); // Transfer Object erz.
} catch ( … ) { … }
return person;
}
}
Ebenen der Integration
3-30
Person verwalten / Impl. Entity Bean
// nur lokale Interfaces, keine Remote Interfaces
public class PersonEjb extends EntityBean {
//ejbCreate, ejbDelete, usw.
// Annahme CMP, Accessor Methoden vom EJB Container impl.
public abstract getFirstName();
…
public Person getPerson() {
return new PersonTransferObjekt(
getFirstName(),
getLastName(),
getEmployeeId() );
}
public void setPerson(Person person) {
setFirstName(person.getFirstName());
…
}
}
Ebenen der Integration
3-31
J2EE Entwurfsmuster
ƒ Vorteile für Integration (mit Java)
ƒ EJB 2.0 (J2EE 1.3)
à CORBA IDL aus EJB erzeugbar
- Session Facade dafür nutzen
ƒ J2EE 1.4
à Web Services aus (zustandslosem) Session Bean erzeugbar
(EJB Container)
- Session Facade direkt dafür nutzbar
à Web Services aus Interface und Implementierung erzeugbar
(Servlet Container)
- Interface und Impl. Business Delegate nutzbar
ƒ Einfache Verwendung von J2EE
Geschäftskomponenten für andere Technologien
à .NET, C++, C, …
à Im günstigen Fall übers server-seitig Konfiguration
Ebenen der Integration
3-32
J2EE Entwurfsmuster - Integration
JSP / Servlets
BusinessDelegate
Java
.NET
COBOL
Java
Java ab J2EE 1.4
Java ab EJB 2.0 (J2EE 1.3)
CORBA
Web
Service
Session
Facade
Business
Delegate
Web
Service
CORBA
UI
Ebenen der Integration
EJB
3-33
Ebenen der Integration / Horizontal
System mit
Produktdaten
Webshop
Datenebene
ƒ
ƒ
ƒ
ƒ
B
Produktdaten
importieren
A
Oft vorkommender Integrationstyp
Datenreplikation
CSV (comma separated values) Dateien
SQL Skripte schreiben für:
à zu exportieren Daten aus A (unload)
à und zu importierende Daten in B (load)
ƒ Periodische Imports: täglich, wöchentlich, monatlich
ƒ Transport Daten z.B. via FTP
Ebenen der Integration
3-34
Ebenen der Integration / Datenebene
Vorteile
Nachteile
ƒ Freie Gestaltung des
neuen Systems: geringe
Latenzzeiten, hohe Leistung
möglich
ƒ Neues System
weitgehend von altem
System entkoppelt: höhere
Verfügbarkeit möglich
ƒ Import aus
unterschiedlichen Quellen
möglich
ƒ Nur für unveränderliche Daten
sinnvoll (Stammdaten)
ƒ Datenqualität Quellsystem muss
hoch sein
ƒ Unterschiedlicher Entwurf beider
DB führt zu Problemen
ƒ Bei hohen Datenmengen
Zielsystem für Zeitraum außer
Betrieb
ƒ Nachbau von Geschäftsfunktionen
des Quellsystems notwendig
ƒ Umwandlung Datentypen und
Werte (Datum, Codes, …)
Ebenen der Integration
3-35
Übersicht
ƒ Aufbau mehrschichtiger Applikationen
ƒ Ebenen der Integration: Vertikal A
à Benutzungsschnittstelle
à Funktionsebene
à Datenebene
Ebenen der Integration
3-36
Ebenen der Integration / Vertikal A
System A
System B
User Interface
Funktionen
ƒ
ƒ
Verteilte Objekte / Komponenten
Meist nur möglich, falls Funktionen direkt aufrufbar
à
A und B im gleichen Adressraum, direkter Funktionsaufruf im gleichen
Speicher
A und B auf unterschiedlichen Rechner: nur bei gleicher Technologie
à
Funktion zu Funktion
à
ƒ
Falls nicht direkt aufrufbar: Horizontale Integration
Ebenen der Integration
3-37
Ebenen der Integration / Datenebene
Vorteile
Nachteile
ƒ Geringe Latenzzeiten
ƒ Moderater
Programmieraufwand
ƒ Änderungen Funktionen haben
direkte Änderungen im neuen UI zur
Folge (starke Kopplung zwischen
neuem UI und bestehenden
Funktionen)
ƒ Funktionen und Rückgabewerte
beeinflussen neues UI (keine
Adaption durch z.B. Business
Delegate)
Ebenen der Integration
3-38
Ebenen der Integration / Vertikal A
System A
System B
Funktionen
Daten
1. Eine gemeinsam genutzte Datenbank
2. Verschiedene Datenbanken
3. Föderierte Datenbanken
Ebenen der Integration
3-39
Ebenen der Integration / Vertikal A
J2EE Webappl
CGI Perl Webapp.
Funktionen
Daten
1. Eine gemeinsame genutzte Datenbank
ƒ
ƒ
Pro System eigenes Datenbankschema
Gemeinsam genutzte Relationen in einem
Schema (Stammdaten wie Länder, Ortsnamen)
Ebenen der Integration
3-40
Ebenen der Integration / Vertikal A
Vorteile
Nachteile
ƒ Teure Resource DB
mehrfach genutzt
ƒ Applikationen können
Daten direkt austauschen
und manipulieren
ƒ Gemeinsame Daten
immer aktuell
ƒ Datenkonsistenz und –integrität
ggf. schlecht, falls nicht vollständig in
DB gelöst
ƒ Änderungen gemeinsam genutzter
Relationen haben Änderungen in
vielen Applikationen zur Folge
(starke Kopplung der Systeme)
ƒ Redundante Geschäftslogik
Ebenen der Integration
3-41
Ebenen der Integration / Vertikal A
J2EE Webappl
CGI Perl Webapp.
Funktionen
Daten
2.
Verschiedene Datenbanken
ƒ
ƒ
ƒ
ƒ
Auf verschiedenen Rechnern
Verschiedene Produkte (Oracle, DB2, MS SQL Server, …)
Verschiedene Produktversionen
Verschiedene Entwurfsrichtlinien
Ebenen der Integration
3-42
Ebenen der Integration / Vertikal A
Vorteile
Nachteile
ƒ Applikationen können
Daten direkt austauschen
und manipulieren
ƒ Gemeinsame Daten
immer aktuell
ƒ Redundante Geschäftslogik
ƒ DB übergreifende Transaktionen
schwierig (2-phase commit)
ƒ Zusätzliche Kosten durch weitere
DB
ƒ Ggf. unterschiedliche Treiber /
Know-how für verschiedene DB
Produkte
Ebenen der Integration
3-43
Ebenen der Integration / Vertikal A
Funktionen
Virtuelle Datenbank
Daten
3.
A
B
Konföderierte Datenbanken
ƒ
ƒ
ƒ
Ein Schema in virtuellen Datenbank
SQL Abfragen werden auf DBen A und B umgesetzt
Produkte von IBM, Oracle
Ebenen der Integration
3-44
Ebenen der Integration / Vertikal A
Date für Wahlsystem
(Kanton / Länder)
Daten
(Gemeinden)
Virtuelles Stimmregister
MA
KA
KA
ST
Gemeinden (DE, CH, ..) führt Stimmregistern
ƒ
à
à
Enthält Wahlberechtigte Personen
Excel, MS Access Datei, Datenbank, unterschiedliche
Systeme, verwoben mit Melderegister
Land / Bund benötigt Daten für Wahlen
ƒ
à
Keine Vorgaben an Datenbanken Gemeinden möglich
(Gemeindeautonomie)
Ebenen der Integration
3-45
Ebenen der Integration / Vertikal A
Vorteile
Nachteile
ƒ Daten an einem Ort, keine ƒ Keine Standards, einige Hersteller
Replikation nötig
ƒ Zusammenführen
(theoretisch)
unterschiedlichste DB Schemata
ƒ Starke Kopplung an Schemata
Quell-DB
ƒ Sicherheit / Netzwerk
ƒ Schreibzugriffe problematisch
Ebenen der Integration
3-46
Übersicht
ƒ Aufbau mehrschichtiger Applikationen
ƒ Ebenen der Integration: Vertikal B
à Benutzungsschnittstelle
à Funktionsebene
à Datenebene
Ebenen der Integration
3-47
Ebenen der Integration / Vertikal B
System A
System B
User Interface
Funktionen
ƒ Zugriff auf Funktionen von A nicht möglich
ƒ Funktionen werden von Serversystem B benötigt (evt. ohne
Benutzerinteraktion)
ƒ Z.B. System B soll Bestellungen von System A automatisch
prüfen, überwachen, weiterverarbeiten, …
ƒ Funktionsaufruf muss Benutzerdialog simulieren
à „Screen scraping“ nötig (TN3270, HTTP/HTML, Bildschirminhalt als
Nachricht für Message Queue)
à Konvertieren Bildschirmdaten in Geschäftsdaten
Ebenen der Integration
3-48
Ebenen der Integration / Vertikal A
Vorteile
Nachteile
ƒ Keine (oder nur geringe)
Änderungen an
bestehender Anwendung
ƒ wie bei horizontaler Integration UI
ƒ Hohe Latenzzeiten (fünf bis sechs
Schichten beteiligt)
ƒ Hoher Programmieraufwand
Ebenen der Integration
3-49
Zusammenfassung
ƒ Integration von Systemen
à Hängt vom Schichtenaufbau ab
à Verschiedenste Vor-/Nachteile (nicht erschöpfend)
wünschenswert
à Wichtigsten Integrationsmethoden
- Horizontal auf Funktionsebene
- Horizontal auf Datenebene
- Vertikal gemeinsame Datenbank
à Alle anderen nur in „Notfällen“
weniger
wünschenswert
ƒ Fokus Vorlesung
à Horizontal Funktionsebene
à Nachrichten-orientiert (MQ, XML, Entwurfsmuster)
à Etwas Komponenten-orientiert (CORBA, Entwurfsmuster)
Ebenen der Integration
3-50
Herunterladen