Das Projekt

Ausgangspunkt ist das Diskussions-Forum “DelphiPRAXiS“. Ein klassisches Web-Forum basierend auf der Software vBulletin. Obwohl sich das IT-Leben mehr und mehr im Browser abspielt und heute mit den Werkzeugen HTML, JavaScript und CSS Dinge realisierbar sind, die einst kaum vorstellbar waren, ist ein nativer Zugang zu Informationen dennoch nicht zu verachten: Sei es ein Plugin für die Delphi-IDE, ein klassischer Windows-Client oder aber – gerade heute – ein Client für Smartphones und Tablets. Mehrere, teils sehr unterschiedliche Clients, die sich der gleichen Infrastruktur eines Servers bedienen sollen. Will man so etwas realisieren, dann möchte man natürlich nicht für jede Ziel-Plattform das Rad stets neu erfinden. Für die Kommunikation bieten sich “REST” und “JSON” an. Es wird aber gerade bei den Clients insbesondere auch um die Frage gehen, in wie weit man Code über die Grenzen von Plattformen hinweg strecken kann – ohne, dass er dabei “zerreißt”, sprich: Angemessen wartbar und halbwegs schön anzusehen sollte er dabei schon bleiben. Es geht nicht um “Plattform-Unabhängigkeit um jeden Preis”. Das neue “Delphi für iOS” kam mir daher ganz gelegen, ein solches Unterfangen zu starten, denn dieses verspricht, mich bei all diesen Zielen sinnvoll unterstützen zu können.

Der Server

Die eingesetzte Foren-Software vBulletin verfügt von Haus aus nicht über eine REST-Schnittstelle. Diese auf die Beine zu stellen bei diesem Projekt also der erste Schritt. Letztlich nur eine Fleiß-Arbeit und reichlich Gefuddel mit PHP und JSON. Die server-seitige Unterstützung ist natürlich eine absolut notwendige software-technische Voraussetzung für alle weiteren Schritte, doch da sie allein für sich genommen keinen unmittelbaren, vom Anwender erlebbaren, Mehrwert bietet, wird sie parallel zu den Clients entwickelt und stets auch nur so weit, wie es gerade erforderlich ist. Die gesamte Funktionalität von vBulletin in einer REST-Schnittstelle abbilden zu wollen, wäre ein “stattliches” Projekt, das einerseits meine zeitlichen Kapazitäten ein wenig übersteigen würde, aber glücklicherweise auch gar nicht nötig ist, weil es auch den gegenwärtigen Zielen dieses Projektes nicht entspräche.

Wir werden mit einer einfachen Basis beginnen: An- und Abmelden, die Liste der Foren (“Rubriken”) abrufen, dort denn jeweils die verfügbaren Themen und letzten Endes dann die Beiträge selbst. Für den Anfang soll das langen, weitere Funktionen kommen dann bei Bedarf. Und eine Sache darf man auch nicht vergessen: Wir arbeiten auf einer Live-Datenbank mit großem Datenbestand, auch hier muss die Daten-Sicherheit an vorderster Stelle stehen.

Der Windows-Client

Der Windows-Client (Win32/Win64) wurde zuerst entwickelt und dient als Referenz-Client. Die Entscheidung hierfür war schnell getroffen, da ich über eine hinreichend lange und ausgeprägte Erfahrung im Bereich der Software-Entwicklung für Windows als Zielplattform verfüge. Zudem steht mit Delphi XE3 und der VCL ein gereiftes Werkzeug zu Verfügung, das es mir erlaubt, meine Aufmerksamkeit den eigentlichen Problemen zu widmen und jegliches Herumplagen mit Neben-Schauplätzen wegfällt. Anhand des Windows-Clients wurden zudem weite Teile der REST-Schnittstelle entwickelt.

In dieser Phase entstanden auch die Business-Objekte, die nötig sind, um auf der Client-Seite die Daten-Struktur des Forums abbilden zu können. Im Kern handelt es sich um eine Hierarchie:

  • 1..n Foren (“Rubriken”)
  • die ihrerseits 0..n Themen beinhalten
  • die ihrerseits 1..n Beiträge beinhalten.

Der Windows-Client soll dabei weder hübsch oder besonders innovativ oder gar ergonomisch sein – er soll einfach funktionieren. Dem Wort “einfach” kommt hier eine besondere Bedeutung zu, denn auch der Windows-Client ist nicht mehr als ein Zwischenschritt auf dem Weg zum wirklich interessanten Client – nämlich dem für die mobilen Geräte.

Der Windows-Client

Der iOS-Client

Der iOS-Client wird mit “Delphi für iOS” entwickelt, welches sich derzeit (Stand März 2013) in seiner finalen Entwicklungsphase befindet. Eine interessante Erfahrung war, dass die “Business-Objekte” vollständig aus dem Windows-Client übernommen werden konnten. Zwischen den Projekten findet also ein echtes Code-Sharing statt – und genau das war eines der Ziele, die ich erreichen wollte.

Die Screenshots zeigen das Projekt in einer zugegebenermaßen frühen Phase. Aber das ist auch legitim, denn dieser Blog-Eintrag soll das Projekt begleiten und die Informationen werden hier nach und nach aktualisiert. In dieser ersten Phase ging es darum, eine grundlegende Basis-Funktionalität zu schaffen. Aspekte wie beispielsweise das Abstimmen der Bildschirm-Elemente auf die UI-Richtlinien von Apple kommen später.