# Wann genau eine Middleware



## DennisXX (30. Apr 2009)

Hallo !

Ich steige gerade neu in das Thema MIddleware, verteilte Computeranwendungen ein. Dazu habe ich mal eine Frage. Wann genau muss ich auf eine Middleware zurückgreifen? Mir ist nicht ganz klar, wann eben eine normalen Programmierung nciht mehr ausreicht.

mfg


----------



## SlaterB (30. Apr 2009)

Middleware ? Wikipedia
schon gelesen?

Middleware ist für Computerprogramme, was Straßen für Autos sind 

> Mir ist nicht ganz klar, wann eben eine normalen Programmierung nciht mehr ausreicht.

nie, wenn man es drauf anlegt, jedes Programm kann für sich die Welt beherrschen,
aber man muss ja nicht unbedingt immer das Rad neu erfinden, wie man so schön sagt,

besonders wenn zwei separat entwickelte Programme kommunizieren wollen, muss es irgendeinen Standard in der Mitte geben


----------



## Gast2 (30. Apr 2009)

SlaterB hat gesagt.:


> Middleware ist für Computerprogramme, was Straßen für Autos sind


ich liebe solche kurzen Aussagen ... schon habe ich kapiert was Middleware ist - quasi das was ich den ganzen Tag mache  ... war im Studium mit Polymorphie genau so ... den Prof nie verstanden - bis ich auf einen, nennen wir es, Hilfszettel eine kurze Erklärung gelesen haben

danke, mogel


----------



## DennisXX (1. Mai 2009)

SlaterB hat gesagt.:


> Middleware ist für Computerprogramme, was Straßen für Autos sind



Vielleicht ist die Erklärung zu einfach?! 
Vielleicht nochmal die Nachfrage mit einem Szenario aus der Praxis:

Ich will ein drei Schicht System aufbauen, also die Datenbank ist räumlich und auch netzwerktechnisch irgendwo anders, als der Applikationsserver und natürlich auch die einzelnen Userclients. Muss ich hier zwingend eine Middleware wie J2EE einsetzen oder geht das auch noch ohne?

Ich hoffe, es wird nun etwas verständlicher worauf ich hinaus will. Diese Grenze zwischen "jetzt benötige ich zwingend eine Middleware" oder "hier kann auch noch ohne Middleware arbeiten und zum gleichen Ergebnis kommen" ist mir noch nicht so ganz klar.

Gruß
Dennis


----------



## SlaterB (1. Mai 2009)

die Datenbank willst du sicher nicht selber programmieren, also ist die irgendwie da und will angesprochen werden,
wie man mit der spricht kann ich spontan nicht sagen,
wahrscheinlich braucht man als Mindestmaß einen Socket und muss in irgendeinem Protokoll mit ihr reden,
etwas höhere wäre in Java ein JDBC-Treiber,

was davon nun Middleware ist, ist Interpretationssache, nach der Wikiseite sind es passive Netzwerkprotokolle nicht,
wenn J2EE dazugehört, dann schätze ich, dass das für einen JDBC-Treiber auch gilt, der doch ebenso einfache Java-Kommandos in komplexe Netzwerk-Nachrichten umwandelt,

für einen Socket, der ohne Murren fertige Netzwerknachrichten weiterreicht, gilt das wohl wieder nicht, meiner Meinung nach, aber reine Interpretation,
denkbar wäre, deiner hochspezifischen Frage folgend, diese Kommunikation als nicht 100%-Middleware-verlangend zu deklarieren

Server-Client: kommt drauf an, was für Clients, ob Java-Programme oder Browser,
im ersten Fall wäre wiederum eine direkte Socket-Kommunikation möglich, einfache Strings könnten zum Austausch von Informationen reichen,
höherwertig wäre alles, was Middleware zu bieten hat, WebServices, RMI usw.,
wiederum allgemeine höhere Tools, die Daten umwandeln und Methoden-Aufrufe deligieren

für den Browser gibts J2EE, fast schon zu hoch meiner Meinung nach, sehe ich eher als Programmiersprache für Web-Anwendungen, aber der Wiki-Seite und deinem Post nach auch Middleware,
alternativ reicht beim Server ein einfacher Socket, der das HTML selber interpretiert und zurückschickt,

auch hier Middleware nicht 100% nötig, jede Art von Kommunikation zwischen Programmen erwartet letztlich nur Netzwerk-Nachrichten in einem bestimmten Protokoll,

-----

wenn allerdings ein Programm nur RMI-Nachrichten empfängt und zurücksendet, und das selbstgebaute Gegenüber die Nachrichten Bit für Bit ohne RMI auf seiner Seite zusammensetzt,
dann kann man vielleicht immer noch sagen, dass Middleware zwingend beteiligt ist..


----------



## byte (4. Mai 2009)

DennisXX hat gesagt.:


> Ich will ein drei Schicht System aufbauen, also die Datenbank ist räumlich und auch netzwerktechnisch irgendwo anders, als der Applikationsserver und natürlich auch die einzelnen Userclients. Muss ich hier zwingend eine Middleware wie J2EE einsetzen oder geht das auch noch ohne?



Nein, musst Du nicht. Du kannst auch direkt per JDBC vom Client zur Datenbank verbinden. Das hat aber vor allem den großen Nachteil, dass der Client die Verbindungsdaten der Datenbank kennen muss (Username, Passwort). Im Falle einer Nicht-Webanwendung liegt der Clientcode beim User. Somit ist es möglich für einen Angreifer, direkten Zugriff auf die Datenbank zu kriegen.

Regelst Du hingegen den ganzen Datenverkehr zw. Datenbank und Client über einen Server (was man i.a. unter Middleware versteht), dann hat man diesen Nachteil nicht, weil nur der Server zur DB verbindet. Erst dadurch ist eine Autorisierungsprüfung der Daten möglich, die auch sicher ist.

Darüber hinaus bringt der Server natürlich noch mehrere Vorteile, wie z.B. Connection Pooling, Caching, Batch Processing, Jobs usw.


----------



## foobar (4. Mai 2009)

> Darüber hinaus bringt der Server natürlich noch mehrere Vorteile, wie z.B. Connection Pooling, Caching, Batch Processing, Jobs usw.


Und natürlich eine zentral gekapselte Geschäftslogik. Das ist besonders dann interessant, wenn es verschiedene Clients gibt z.b. Swing, Web, Mobile etc.


----------



## SlaterB (4. Mai 2009)

byto hat gesagt.:


> Regelst Du hingegen den ganzen Datenverkehr zw. Datenbank und Client über einen Server (was man i.a. unter Middleware versteht), dann hat man diesen Nachteil nicht, weil nur der Server zur DB verbindet.


es mag verschiedene Interpretationen geben, aber zumindest nach dem Wikipedia-Artikel zählt dazu nicht eine mittlere Schicht in einer Mehr-Schichten-Architektur 

dieser Server wäre doch ein hochspezifisches Anwendungsprogramm und kein allgemeines Framework/ Übertragungshilfe/ Message-System


----------



## byte (4. Mai 2009)

kA wovon Du redest.


----------

