Zum Inhalt springen

Was sind Wrapper und Parser??


lunatic82

Empfohlene Beiträge

Diese Begriffe sind teilweise etwas schwammig und manchmal streitet man sich wann jetzt was was ist. Dabei liegt ein Wrapper, Adapter, Emulator, Simulator teilweise so nah beieinander, daß man echte Entscheidungsschwierigkeiten hat, um was es sich nun handelt. Manchmal liegt die Wahrheit dazwischen (wie so oft im Leben).

Kurz und bündig könnte man vielleicht sagen, daß ein Parser eine Scriptsprache (kann alles mögliche sein - egall ob Spiel (Textadventure, etc.), Benutzerdaten (Binärdaten in Codewort mit folgenden Dateninhalten) oder sonstwelchen Textinformationen verarbeitet. Wichtig ist dabei, daß ein Parser eine solche Texteingabe analysiert und entweder entsprechend die Dateninhalte und Befehle umsetzt oder in ein anderes Datenformat Konvertiert. Grundsätzlich kann man mal sagen, daß zum Parser immer ein Befehl mit aufgestellten Regeln entspricht und zugehörige Zusatzinformationen gehören, die dann irgendwelche Abläufe in Gang setzen - dabei sollte ein guter Parser auch Syntaxfehler erkennen und entsprechend reagieren.

Ein Wrapper ist eine Art Übersetzungsschicht. Z.B. (wenn man schon beim Beispiel mit den Spielen ist) hat 3DFX eine eigene 3D-Schnittstelle für die eigenen Grafikkarten entworfen (Glide). Glide ist sowas ähnliches wie Direct3D oder OpenGL - nur halt wesentlich schneller, weil es auf ein bestimmtes Produkt optimiert ist. Ein Glide-Wrapper ist dann eine Schnittstelle, die sich aufrufen läßt wie ein echter Glide-Treiber und (soweit möglich) alle Funktionen genauso anbietet - also für Programme eine tatsächliche Glide-Schnittstelle darstellt. Die Daten zu "wrappen" bedeutet, daß die Eingangsinformationen sofern machbar auf eine andere Grafikschnittstelle umgeleitet werden (wie das o.g. Direct3D oder OpenGL). Das bedeutet, die Grafikausgabe der reinen 3DFX-Programme funktioniert plötzlich auf anderen Schnittstellen und liefert annähernd gleiche Ergebnisse wie mit einer echten 3DFX-Grafikkarte.

Ein Wrapper kann für alles mögliche stehen - um Programmkompatibilitäten zu gewährleisten (bei neuen Versionen, Updates, neue Standards) - um noch nicht vorhandene Hardware zu simulieren (ups - jetzt habe ich noch was anderes ins Feld geworfen, darauf gehe ich zum Schluß kurz ein) und Programmabläufe zu ermöglichen, die so sonst nicht mehr möglich wären. Ein Wrapper kann also auch komplizierte Schnittstellen vereinfachen und stattdessen simplere Benutzerschnittstellen anbieten - also alles unnötig Komplizierte vom Hauptprogramm fernhalten und nur die Funktionen anbieten, die tatsächlich benötigt werden. Das nennt sich dann nebenbei ein Adapter.

Vergleichbar ist ein Wrapper fast mit einer Emulation. Eine Emulation gaukelt eine komplette Umgebung bis ins kleinste Detail vor (z.B. einen anderen Computer) und erlaubt es die Programme unabhängig von der Orginalhardware ablaufen zu lassen. Ein Wrapper macht eigentlich dasselbe, kümmert sich jedoch nicht um Details wie eine echte Emulation (sonst wäre er ein Emulator), sondern bietet lediglich die gleichen Schnittstellen nach außen hin an - was dahinter geschieht ist für die Programmschichten nebensächlich - jede ist zufrieden seine Funktionen benutzen zu können und die Daten weiterreichen zu dürfen - und somit lauffähig zu sein.

Ganz kurz zum Unterschied zwischen einer Emulation und einer Simulation. Während eine Emulation jedes nur denkbare echte Detail nachstellt (von Taktzyklen, hardwareabhängigen Funktionen, usw.) versucht eine Simulation nur eine annähernde Darstellung der Realität. Man ahmt nur ein Verhalten auf Softwareebene nach - wie das geschieht spielt keine Rolle und das darf von der Realität absolut abweichen, solange die Ergebnisse akzeptabel nah am Orginal sind. Hier wird sogar mit absicht versucht alle überflüssigen Details zu mißachten - es liegt das Augenmerk nur auf das Ergebnis gerichtet - der Weg um dieses zu erreichen spielt nur eine Nebensächliche Rolle.

Um das ganze zu verdeutlichen für jeden einen klaren Einsatzbereich:

Simulationen werden oft erstellt um Software für noch nicht existierende Hardware zu erstellen und schon im Vorfeld austesten zu können.

Emulationen werden verwendet um z.B. fehler in Hardwareschaltungen zu erkennen, bevor sie überhaupt existieren - und somit Kosten zu vermeiden.

Wrapper werden verwendet um ein Programm, welches beispielsweise für eine herstellerspezifische Datenbankschnittstelle entworfen ist, mit einer Anderen laufen zu lassen, ohne das Hauptprogramm ändern zu müssen. Der Wrapper versucht so nah wie möglich am Orginal zu liegen und konvertiert dabei Funktionen und Daten "on-the-fly" sozusagen.

Ein Addapter macht nahezu dasselbe wie ein Wrapper, wobei hier Wert auf die Abstraktion gelegt wird. Man versucht die Schnittstellen zwischen einer Datenbank und dem Hauptprogramm zu vereinfachen ohne auf die Vorteile der Datenbank verzichten zu müssen. Es wird also bewußt eine abstrakte Schnittstelle geschaffen. Der Adapter kann nach ja nach Bedarf oder Belieben von den echten Schnittstellen abweichen.

Reicht das ungefähr als Erklärung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...