ppls

ppls

ppls


D. R.
Diese Lernkarten bieten eine grundlegende Einführung in die Architektur und Entwicklung von Java-basierten Anwendungen. Sie behandeln zentrale Konzepte wie Transaktionen, Session Beans, Enterprise Java Beans (EJB), und verschiedene Architekturansätze. Die Karteikarten sind ideal für Entwickler, die sich mit der Implementierung und dem Design von skalierbaren, transaktionssicheren und wiederverwendbaren Applikationen beschäftigen.
Cartes-fiches
58
Utilisateurs
2
Langue
Allemand
Catégorie
Chimie
Créé / Mis à jour
31.03.2018 / 31.03.2018

Flashcards

Was weißt du zum Binding von Komponenten?

  • Vertical Binding: Verbindung von zwei Interfaces vom gleichen Typ

  • Horizontal Binding: Verbindung von Required und Provided Interface

  • First-Party: Verbindung durch Entwickler

  • Third-Party: wird vom Anwender verbunden

Differenziere Exogenous und Endogenous Composition

Exogenous

  • explizite Verwendung von Konnektoren zur Interaktion zwischen Komponenten

Endogenous

  • Binding ohne Konnektoren
  • Binding, Interaktionsprotokolle und Fehlerhandling sind Bestandteil der Komponente

Welche Eigenschaften hat eine Laufzeitumgebung?

  • Grundlegende Kommunikation zwischen Komponenten
  • Konfiguration von einzelnen horizontalen Services (bspw. Datenbanken)
  • Konfiguration von sicherheitstechnischen Einstellungen
  • Konfiguration von Qualitätsanforderungen an die LZU
  • Kontrolle des Lebenszyklus der eingesetzten Komponenten

Was macht die Management Schnittstelle einer LZU?

  • Dynamisches Deployment
  • Definition von Bindungen
  • Testen von Komponenten
  • Status-Anzeige von Komponenten
  • Konfiguration der LZU

Welche Phasen gibt es bei der Entwicklung einer komponentenbasierten Applikation?

  1. Requirements Specification
  2. Component Analysis
  3. Requirements Modification
  4. System Design with Reuse
  5. Development and Integration
  6. System Validation

Erzähle etwas zu den einzelnen Phasen der Entwicklung einer komponentenbasierten Applikation

  • Requirements Specification
  • Component Analysis:
    • Suche nach Komponenten, die (Teile) der Anforderungen erfüllen
    • meistens kein exakter Match möglich
  • Requirments Modificatoion: Überarbeitung der Anforderungen; Berücksichtigung der gefundenen Komponenten
  • System Design with Reuse: Entwicklung Software-Architektur; Berücksichtigung der gefunden Komponenten; Auswahl Komponentenmodell und LZU
  • Development and Integration: Integration der Software-Komponenten (mit Entwicklung)

Welche Variationen bei der Auswahl von Komponenten gibt es?

  • In-House (Eigenentwicklung)
  • Commercial off the shelf (vorgefertigt; kein Sourcecode)
  • Open Source Components
  • Outsource

Welche vier Sichten kennst du aus der Vorlesung?

  1. Kontextsicht
  2. Laufzeitsicht
  3. Bausteinsicht
  4. Verteilungssicht

Erzähle etwas zur Kontextsicht

  • abstrakte Darstellung als Blackbox; logische Zusammenfassung von Systemen
  • Schnittstellen werden nicht berücksichtigt, aber Abhängigkeiten
  • Beim Datenfluss lediglich DTOs angeben (fachliche Sicht)

Umsetzung mit Paketdiagramm

Erzähle etwas zur Bausteinsicht

  • zeigen Ekemente des Systems, Subsystem, Komponenten, Klassen und deren Schnittstellen
  • Darstellung von Abhängigkeiten

Nimmt etwa 60% der Architekturmodellierung in Anspruch

Komponenten-, Kompositionsstruktur-, Klassen-

 

Erzähle etwas zur Verteilungssicht

  • beschreibt Hardware-Komponenten (Server, Netzwerk, Firewall) mit beteiligten Protokollen
  • Darstellung auch von LZU

Verteilungsdiagramm

Erzähle etwas zur Laufzeitsicht

  • Welche Bestandteile des Systems zur Laufzeit existieren und wie diese zusammenwirken
  • Modellierung von Boundary-Conditions: Systemstart, Shut-Down

Wie lässt sich eine Software Architektur dokumentieren?

  • Modellbasierte Modellierung
  • Architecture Description Language (ADL)
  • Textuelle Architektur- Templates

Erzähle etwas zur modellbasierten Modellierung

  • semi-formal (unpräzise, mehrdeutig)
  • dient zur Kommunikation: Entwickler <-> Kunde
  • UML

Erzähle etwas zur Architecture Description Language

  • Textuell, formal
  • weniger Kommunikation, eher Umsetzung / Analyse
  • ACME, Darwin, C2, PeerCAT

Erzähle etwas zu textuellen Architektur Templates

  • freisprachliche Beschreibung der Architekturelemente
  • keine formale Vorgaben
  • wenige Standards (arc42)

Was ist Arc42?

  • Beschreibung wesentlicher Aspekte (gemäß 4-Sichten Modell)
  • Architekturziele, Qualitätsanforderungen, Sichten, Entwurfsentscheidungen, Muster

Welche Muster können unterschieden werden?

  • Erzeugende Muster
  • Strukturierende Muster
  • Verhaltensorientierte Muster

Was ist das Facade Pattern?

  • einheitliche Schnitstelle, Delegation an die interne Komponente
  • Zentraler, konsistenter Einstiegspunkt
  • Realisierung: Front Controller, Session Facade

Was heißt ORM und was weißt du dazu?

Object-Relation Mapping

  • Datenbank: relational, Programmierung: objektorientiert -> nicht kompatibel
  • Abbildung ist eine Herausforderung
  • Technologien: Hibernate, Java Persistence API (JPA)

Was weißt du über Database Access Layer?

  • Persistenz Schicht, zwischen Applikation und relationaler Datenbank
  • Notifizierungsmechanismus zum konsistenten Abgleich
  • Anforderungen:
    • CRUD Methoden
    • Transaktionen (ACID)
    • Lazy Loading (nur laden was benötigt wird)
    • Cursor - Prinzip

Was ist die Idee von Lazy Loading?

  • Lade (große) Objekte erst, wenn sie wirklich benötigt werden
  • kann auch mit Virtual Proxy umgesetzt werden

Wie kann Dependency Injection umgesetzt werden?

  • Umsetzung per Resource File, Java Annotations, Reflections, Methoden Signaturen
  • Field Injection, Constructor Injection, Setter Injection
  • Problem: Wie lang kann übergebende Referenz in Objekt bestehen? Unter welchen Bedingungen kann Referenz injiziert oder ausgetauscht werden?

Wie ist die Definition von MicroServices?

  • eigene Laufzeitumgebung, unabhängig von anderen Microservices
  • eigenes Domain Model
  • Kommunikation mit anderen (REST, HTTP)
  • flexibles Deployment (Docker)
  • Nanoservice (wenige Zeilen Code)
  • eigenes Datenbanksystem

Was heißt Bounded Context?

  • kein universelles Datenmodell zwischen Microservices
  • vertikale Aufteilung von Funktionen und Daten

Wie ist die Architektur von JEE?

  • Web Browser kommuniziert mit Web Container (HTTP)
  • Web Container besteht aus Servlet und Java Server Faces
  • Web Containter kommuniziert mit EJB Container
  • Java Application kommuniziert mit EJB Containter (RMI)

Was weißt du zu Enterprise Java Bean? Und welche Arten davon gibt es?

  • serverseitiges Komponentenmodell zur Realisierung der Geschäftslogik
  • realisieren
    • skalierbare
    • transaktionale
    • sichere
    • und wiederverwendbare Applikationen
  • Entity (Bean) - persistentes, fachliches Object
  • Session Bean
    • Stateless Session Bean
    • Stateful Session Bean
    • Singleton Session Bean
  • Message-driven Bean (asynchrone Kommunikation)

Wie ist das Packaging bei JEE?

  • Enterprise Archive (ear) - enthält .war .jar .rar
  • EJB-JAR (Enterprise Java Bean Archive, jar) - enthält EJBs
  • Web Application Archive (war) - Web-basierten Komponenten

Erzähl was über Session Beans. Wie lauten die Annotationen?

  • Session Bean implementiert Use Cases
  • musste bis Version 2.x eine Reihe von Interfaces implementieren
  • ab 3.0 durch POJO realisiert, Annotations werden verwendet

Entfernter Zugriff erfolgt mehr RMI (Remote Method Invocation).

Annotationen (Folie 28ff)

  • @Stateless für Stateless Bean
  • @Remote für das Interface welches Remote verwendet werden soll (die EJB implementiert dann das Interface)
  • @Local für das Interface welches Lokal verwendet werden soll
  • @EJB an eine Variable injiziert dann die lokale EJB in die Variable

Erzähle was über Stateless Session Beans.

Wie lauten die Zustände?

  • beliebige Zuweisung aus Pool
  • Instanzvariablen können, sollten aber besser nicht belegt werden
  • Geschäftslogik sollte in einem Methodenaufruf erledigt werden
  • Vorteile Pooling:
    • kleine Anzahl Beans kann theoretisch größere Anzahl von Clients bedienen
    • benötigen weniger Server Ressourcen
    • Hohe Skalierbarkeit
    • Auslastung des Application Server sinkt

 

Erzähle was über Stateful Session Beans.

Erkläre die Zustände.

  • haben einen Client bezogenen Zustand
  • wird nicht persistent gehalten
  • kein Pooling möglich

Erzähle was über Singleton Seassion Bean

Sowie über die Zustände

  • es existiert nur eine Session
  • Einsparung von Ressourcen
  • nicht thread-safe
  • Methoden zur Unterbindung nicht performant
  • gut für gleichzeitige Lesezugriffe mit wenigen Updates

Lösung (Folie 30)

  • synchronized -> inperformant
  • Alternativ `@ConcurrencyManagement?
  • Vorteil: Read-Lock und Write-Lock
  • Read-Lock beliebig viele, aber nicht wenn Write-Lock vorhanden
  • Write-Lock nur genau einmal

Was bedeuted ACID?

  • Atomicity; nicht zerlegbar; entweder ganz oder gar nicht
  • Consistency; eine Transaktion hinterlässt einen konsistenten Datenbankzustand
  • Isolation; nebenläufige Transaktionen beeinflussen sich nicht
  • Durability; Wirkung einer erfolgreichen Transaktion bleibt dauert in der DB erhalten

Was weißt du über Transaktionen?

Nenne auch die Transaktionsattribute

  • Problem: Aus einer Transaktion können weitere Methoden anderer Session Beans aufgerufen werden; Gültigkeitsbereich einer Transaktion?
  • Abhängig von Transaktionsattributen
    • REQUIRED (Default) - neue Transaktion in gleicher Transaktion
    • REQUIRES_NEW - neue Transaktion in eigener Transaktion
    • MANDATORY - neue Transaktion in eigener Transaktion; wenn keine Transaktion existiert -> FEHLER

Étudier