Buchempfehlung: „REST und HTTP“

Standard

REST-CoverIch lese gerade „REST und HTTP: Entwicklung und Integration nach dem Architekturstil des Web“ (ISBN 3864901200). Es gibt tolle Frameworks, die dem User viel Arbeit bei dem Erstellen von REST-Services abnehmen. Jedoch können diese einem in aller Regel nicht das API-Design abnehmen.  Um besser verstehen zu können, was ein gutes REST-Design ist, muss man sich mit den Konzepten und Ideen von REST beschäftigen. Hierzu ist das Buch von Stefan Tilkov, Martin Eigenbrodt, Silvia Schreier und Oliver Wolf sehr gut geeignet.

Es ist völlig unabhängig von einer bestimmten Programmiersprache oder Technologie, was ja auch Sinn macht, da RES genau das können soll: über Programmiersprachen und Technologiegrenzen hinweg zu kommunizieren. Auf den ca. 300 Seiten werden konkurrierende Konzepte wie SOAP dem REST-Konzept gegenübergestellt. Begrifflichkeiten wie „Ressource“, „URI“, „Verben“ usw. werden erklärt, Präsentationsformate werden erläutert. Thematisiert wird Session-Handling, Skalierbarkeit und Sicherheit ebenso wie Architektur, Werkzeuge, Bibliotheken und immer wieder Fallstudien.

Das Ganze ist zudem sehr kompakt und didaktisch durchdacht aufgebaut.

The Silicon Web Framework

Standard

Jens Weller machte mich auf ein weiteres C++-Web-Framwork aufmerksam: The Silicon Web Framework

Voraussetzung ist allerdings ein C++14 kompatibler Compiler. Das Projekt gibt als Vorteile unter Anderem an:

  • Leichte Benutzbarkeit
  • Sicherheit
  • Gesschwindigkeit
  • Automatic depndency injection
  • Automatische Validation, Serialization und Deserialization von Nachrichten
  • Sessions

Dem Projekt fehlt allerdings noch eine Template-Engine für MVC. Dafür hat es Object relational mapping. Somit ist dieses Framework, meiner Einschätzung nach, ohne Template-Engine aktuell nur für RESTFull zu gebrauchen, – aber ansonsten ein erfrischend moderner Ansatz.

Template-Engines für C++

Standard

Ich habe in den letzten Tage nach einer Alternative für NL::Template gesucht, weil der Support für C++98 in NL::Template nicht optimal zu sein scheint. Es gibt zwar ein speziellen Branch für C++98, wenn ich diesen verwende, bekomme ich jedoch einen Speicherzugriffsfehler.

Im englischsprachigen Wikipedia gibt es eine tabellarische Auflistung von Template-Engines, ebenso wie für C++: http://en.wikipedia.org/wiki/Comparison_of_web_template_engines

Google ctemplate scheint von Google fallen gelassen worden zu sein und wird noch von einer Person auf GitHub weiter gepflegt. Es gib noch zwei Frameworks, die zum Großteil nur auf Russisch dokumentiert sind (auch in den Sourcen). Aber irgendwie habe ich nichts wirklich Überzeugendes gefunden.

Ich habe auch ein Wenig zu den (relativ) neuen Programmiersprachen Go und Rust quer gelesen. Beide möchten eine Alternative zu C++ sein und wollen es besser machen, als C/C++. Ich war sehr erstaunt zu sehen, dass es für beide Programmiersprachen schon mehrere ausgereift wirkende Web Frameworks gibt.

Mein Eindruck ist: C++ kann sich im Web-Umfeld warm anziehen. Der einzige Vorteil, den ich noch bei C++ sehe, ist dass es mehr Compiler zur Auswahl gibt und dass diese für mehr Plattformen zur Verfügung stehen, als für Rust und Go ist. Im Gegensatz zu node.js, gibt es in Rust und Go echte Nebenläufigkeit (zu dem noch auch einen interessanten Ansatz). Ich denke, das wird die nächsten Jahren noch recht spannend werden.