22.01.2014 Aufrufe

Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server

Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server

Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

7.3 Backend 113<br />

Entdeckung neuer Services und Widgets<br />

Eine Weise, in der die Entdeckung neu angebundener oder vorhandener Services (im Fall des Backends)<br />

erfolgen könnte, basiert auf der Fähigkeit einer Programmiersprache bzw. eines Programms,<br />

eine “Reflexion” (engl. reflection) durchzuführen. Durch diese Prozedur kann die vorhandene Struktur<br />

eines Programms (d.h. im Fall einer objektorientierten Programmiersprache einer Klasse) untersucht<br />

werden und damit ihr Verhalten (die Werte, Metadaten, einzelne Felder und Methoden) zur Laufzeit<br />

verändert werden.<br />

Damit lassen sich z.B. Subklassen einer spezifischen Klasse (oder im Fall von strikt typisierten<br />

Sprachen, einer spezifischen Schnittstelle) zur Laufzeit ermitteln. Diese Herangehensweise konnte<br />

wie im Fall der vorher vorgestellten REST-basierten Entdeckung fortlaufend durchgeführt werden,<br />

bis das erzielte Ergebnis oder ein Grenzfall entdeckt ist. Ein Beispiel dieser Methode ist im Datenmodell<br />

vorhanden, wo das Frontend eine Anfrage für die Auflistung der Subklassen der Klasse<br />

SpatialRelation formuliert (siehe auch Absatz 7.4).<br />

Die Ausführung von Reflection-basierten Verfahren ist sowohl im Fall des Backends als auch im<br />

Fall des Frontends verfügbar – hiermit können z.B. neue, zur Laufzeit noch nicht bekannte Widgets,<br />

die auf dem mobilen Gerät laufen, entdeckt werden. Weiterhin könnte dieser Typ von Entdeckung<br />

auch als eine REST API im Fall des Backends veröffentlicht werden, z.B. mit der Anfrage GET<br />

/app/HomeSharing1/available_widgets/subclass/IMyWidget.<br />

Veröffentlichung der REST API<br />

Die Bereitstellung bzw. Veröffentlichung der vorher beschriebenen REST APIs erfolgt mithilfe eines<br />

Rack-kompatiblen Web <strong>Server</strong>s. Die beschriebene “Web Anwendung” und dessen Routen werden<br />

nach außen anhand einer festgestellten IP-Adresse (siehe auch 7.3.3) und eines Ports zur Verfügung<br />

gestellt. Die Konfiguration ist aus einer Datei gelesen, wie weiter im Paragraph 7.3.6 beschrieben<br />

wird.<br />

Bei der Auswahl eines Web <strong>Server</strong>s wurde darauf geachtet, dass die Softwarelösung die Fähigkeit<br />

behält, mehrere gleichzeitige Verbindungen anzunehmen, zur Gewährleistung der Performanz<br />

bei einer erhöhten Anzahl von Benutzern (Skalierbarkeit). Die aus der Welt der “Ruby on Rails” Web<br />

Application Framework bekannten “minimalistischen” Web <strong>Server</strong>-Lösungen (WEBRick oder Mongrel)<br />

unterstützen diese Anforderung nicht. Weitere Lösungen 23 wie Passsenger oder Unicorn sind für<br />

fortgeschrittene Zwecke, wie die Veröffentlichung von Web-basierten Enterprise-Software geeignet.<br />

Der richtige Ausgleich zwischen mitgelieferten Features und Leichtgewicht wird von dem Web<br />

<strong>Server</strong> namens “Thin” 24 geliefert, welcher sich als ein schneller, leicht bedienbares Web <strong>Server</strong> für<br />

Ruby beschreibt. Thin fasst Ideen aus mehreren Technologien für Ruby-basierte Web Entwicklung in<br />

einer vielseitigen Software-Lösung zusammen.<br />

Thin wird in Form eines Ruby Gems veröffentlicht und bietet eine vereinfachte Benutzung an. Um<br />

eine Instanz des Web <strong>Server</strong>s zu starten werden nur die genannten Parameter (IP-Adresse und Port)<br />

und die entsprechende Rack-konforme Anwendung benötigt. Damit entsteht aus der Perspektive des<br />

Betriebssystems, worauf der <strong>Server</strong> betrieben wird, ein neuer Prozess, welcher den Web <strong>Server</strong> hostet<br />

bzw. der übergebenen Adresse und dem Port lauscht. Thin ermöglicht auch eine Art des “internen”<br />

23<br />

https://www.ruby-toolbox.com/categories/web_servers<br />

24<br />

http://code.macournoyer.com/thin/

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!