© whiteMocca/Shutterstock.com, © S&S Media
Windows Developer
Teil 4: Die Ergebnisse von MQL-Abfragen im Client typsicher verarbeiten

„Let the Compiler do the dirty Work“


Mit der hierarchischen Abfragesprache (MQL), dem Domänenmodell und dem Schema der letzten Artikel konnten wir komplexe, hierarchische Datenabfragen typsicher formulieren und am Backend gegen MS-SQL-Server mappen. Diesmal generieren wir aus einer MQL-Query und dem Schema das typisierte Datenmodell für den Client.

Artikelserie

Teil 1: Mit TypeScript Metadata und Reflection ein Domänenmodell aufbauen

Teil 2: Mit TypeScript Union Types die Grammatik für eine hierarchische QL definieren

Teil 3: Abfragen am Server generisch gegen eine relationale DB mappen

Teil 4: Die Ergebnisse von MQL-Abfragen und am Client typsicher verarbeiten

In den vorherigen Artikeln haben wir TypeScript sowohl als domänenspezifische als auch als Schemabeschreibungssprache und als Grammatik für hierarchische Datenabfragen verwendet. Als letzten Schritt wollen wir in diesem Artikel die vom Backend gelieferten, hierarchischen JSON-Daten am Client typsicher verwenden. Wie immer gilt auch hier: „Let the Compiler do the dirty Work“. Dank der statischen Typisierung verhindern wir zahlreiche Fehler und verbessern die Wartbarkeit der Datenabfragen enorm.

mahringer_typescript_teil4_1.tif_fmt1.jpgAbb. 1: Zusammenfassung der MQL-Abfragegenerierung und -verwendung

Was bisher geschah …

Abbildung 1 enthält den Ablauf der MQL-Idee, den wir zum besseren Verständnis zusammenfassen (die roten Kästen beschreiben die Aufgaben dieses Artikels):

  • Durch Metadaten (Decorators) erweitern wir TypeScript zu einer domänenspezifischen Sprache, mit der wir ein Domänenmodell aus Kunden, Einkäufen und Tickets erstellen.

  • Aus dem Domänenmodell generieren wir automatisiert ein maschinenlesbares Schema.

  • Die Schemainformationen und eine in TypeScript geschriebene Querygrammatik bilden die Grundlage für eine hierarchische Datenabfrage nach Kunden, ihren Einkäufen und den Tickets zu diesen Einkäufen (Listing 1).

  • Die Abfrage mappen wir generisch, aber trotzdem effizient auf eine relationale Datenbank (SQL-Server) und liefern das hierarchische JSON-Ergebnis zum Client.

Wozu ein Clientdatenmodell generieren?

Mit den vom Backend gesendeten JSON-Daten können wir am Client auf drei Arten verfahren:

  1. Verwendung „as is“: In einer Single-Page-App mit einer nicht statisch typisierten Templatesprache könnten wir die Daten direkt an das UI binden. In Angular täten wir das z. B. durch ein *ngFor, mit dem wir über die Kunden iterieren und dann die einzelnen Felder beispielsweise mittels {{customer.lastName}} binden. In großen Applikationen führt das im Lauf der Zeit aber zu im...

Windows Developer
Teil 4: Die Ergebnisse von MQL-Abfragen im Client typsicher verarbeiten

„Let the Compiler do the dirty Work“

Mit der hierarchischen Abfragesprache (MQL), dem Domänenmodell und dem Schema der letzten Artikel konnten wir komplexe, hierarchische Datenabfragen typsicher formulieren und am Backend gegen MS-SQL-Server mappen. Diesmal generieren wir aus einer MQL-Query und dem Schema das typisierte Datenmodell für den Client.

Thomas Mahringer


Mit der hierarchischen Abfragesprache (MQL), dem Domänenmodell und dem Schema der letzten Artikel konnten wir komplexe, hierarchische Datenabfragen typsicher formulieren und am Backend gegen MS-SQL-Server mappen. Diesmal generieren wir aus einer MQL-Query und dem Schema das typisierte Datenmodell für den Client.

Artikelserie

Teil 1: Mit TypeScript Metadata und Reflection ein Domänenmodell aufbauen

Teil 2: Mit TypeScript Union Types die Grammatik für eine hierarchische QL definieren

Teil 3: Abfragen am Server generisch gegen eine relationale DB mappen

Teil 4: Die Ergebnisse von MQL-Abfragen und am Client typsicher verarbeiten

In den vorherigen Artikeln haben wir TypeScript sowohl als domänenspezifische als auch als Schemabeschreibungssprache und als Grammatik für hierarchische Datenabfragen verwendet. Als letzten Schritt wollen wir in diesem Artikel die vom Backend gelieferten, hierarchischen JSON-Daten am Client typsicher verwenden. Wie immer gilt auch hier: „Let the Compiler do the dirty Work“. Dank der statischen Typisierung verhindern wir zahlreiche Fehler und verbessern die Wartbarkeit der Datenabfragen enorm.

mahringer_typescript_teil4_1.tif_fmt1.jpgAbb. 1: Zusammenfassung der MQL-Abfragegenerierung und -verwendung

Was bisher geschah …

Abbildung 1 enthält den Ablauf der MQL-Idee, den wir zum besseren Verständnis zusammenfassen (die roten Kästen beschreiben die Aufgaben dieses Artikels):

  • Durch Metadaten (Decorators) erweitern wir TypeScript zu einer domänenspezifischen Sprache, mit der wir ein Domänenmodell aus Kunden, Einkäufen und Tickets erstellen.

  • Aus dem Domänenmodell generieren wir automatisiert ein maschinenlesbares Schema.

  • Die Schemainformationen und eine in TypeScript geschriebene Querygrammatik bilden die Grundlage für eine hierarchische Datenabfrage nach Kunden, ihren Einkäufen und den Tickets zu diesen Einkäufen (Listing 1).

  • Die Abfrage mappen wir generisch, aber trotzdem effizient auf eine relationale Datenbank (SQL-Server) und liefern das hierarchische JSON-Ergebnis zum Client.

Wozu ein Clientdatenmodell generieren?

Mit den vom Backend gesendeten JSON-Daten können wir am Client auf drei Arten verfahren:

  1. Verwendung „as is“: In einer Single-Page-App mit einer nicht statisch typisierten Templatesprache könnten wir die Daten direkt an das UI binden. In Angular täten wir das z. B. durch ein *ngFor, mit dem wir über die Kunden iterieren und dann die einzelnen Felder beispielsweise mittels {{customer.lastName}} binden. In großen Applikationen führt das im Lauf der Zeit aber zu im...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang