Wenn man im Projekt die Situation hat, dass man z.B. zwei unterschiedliche Personen hat, welche einerseits den OpenAPI Contract schreiben und anderseits implementieren, macht es Sinn, den Contract-First Approch zu verfolgen.
Bei .NET geht das nicht so out-of-the-box, wie z.B. bei Spring mit Maven.
Schritt 1: NSwag Studio laden
Das neueste NSwag Studio kann man von hier beziehen: https://github.com/RicoSuter/NSwag/releases. In NSwag kann man den OpenAPI Contract pasten und on-the-fly generieren lassen.
Bei Domain-Driven-Design gibt es zwei Flughöhen:
Strategic: Hier befasst man sich mit dem „schneiden“ der Domänen Tactical: Hier geht es bis in die Implementierung Ich möchte meine Gedanken zu Tactical zu Blatt bringen.
Analyse von Aggregaten Aggregate umschließen jene Entitäten, welche eine atomare Einheit bilden sollen. Das hört sich auf den ersten Blick nutzlos an – aber in fast allen Applikationen muss man von parallelem arbeiten an einem Datensatz durch mehrere Personen ausgehen.
Welche Funktionalität ist in meiner Software? Diese Frage ist oft in agilen Projekten nicht einfach zu beantworten – zumindest seriös. Ist das Benutzerhandbuch die einzig valide Quelle? Folgende Vorgehensweise habe ich kennengelernt (es gibt auch viele andere):
1. User-Story Map Als erstes versucht man die User-Stories zu priorisieren. Da kann eine User-Story Map helfen, um eine gute End-to-End-Sicht zu bekommen. Wichtig ist nur zu verstehen: Man soll nicht versuchen, alles in eine User-Story Map zu pressen – man kann ohne weiteres mehrere haben.
Die Reise führte uns nach Auvergne. Die beste Verbindung gibt es wieder über VIE nach LYS. Das 40ige Lebensjahr heuer gut gefeiert – der CO2 Fußabdruck ist aber dementsprechend hoch.
Die erste Station war in Clermont-Ferrand. Und zwar in einem alten Schloss. Es war ein schöner, großer Garten dabei. Leider war das Haus im Inneren so niedrig, dass man sich 20 Mal am Tag den Schädl angehaut hat. Zähneputzen in 45 Grad Kopfneigung.
Begonnen hat die Reise in Edinburgh Flughafen. Dort haben wir bei Enterprise ein Auto ausgeborgt – wieder über den ÖAMTC. Vorteil: kein Selbstbehalt und gute Konditionen.
Mit dem Auto ging es nach Stirling. Das Fahren auf der „falsche“ Seite fühlt sich komisch an – da ich aber sehr wenig fahre, war die Umstellung auch nicht sonderlich groß. In Stirling haben wir in einer AirBnb geschlafen – eigenes Bad und geteilte Küche mit der Bewohnerin.
1 Woche vor Osteren ging es in die Toskana. Geschlafen haben wir in Siena. Das wichtigste in der Stadt: wenn man ein Mietauto hat muss man unbedingt beim richtigen Tor reinfahren und sich im Vorfeld sehr gut informieren, wo Parkplätze außerhalb der Z.T.L. sind. Siena selbst ist sehr schön. Weitere Highlights findet man auf der Karte:
Pienza und die Gladiator Drehorte: bei Sonnenuntergang eher schwierig zu fotografieren - tendenziell bei Sonnenaufgang.
Viele tragische Unfälle derselben Art sind in den Medien zu finden:
Kind aus Fenster in den Tod gestürzt Kleinkind stürzt in Wien-Hernals aus Fenster Hamburg: Junge stirbt nach Sturz aus dem sechsten Stock Auch findet man folgende Aussage:
Durchschnittlich alle vier Wochen stürzt in Österreich ein Kind unter 15 Jahren aus dem Fenster
Es gibt für Eltern wohl nichts Schlimmeres.
Prävention Der Vormieter hat den Fensterrahmen angebohrt und mit einem billigen Schloss gesichert.
Gore-Tex ist der Hersteller von der wohl bekanntesten High-Performance Membran überhaupt. Die Membran befindet sich gut geschützt unter dem Außenmaterial.
Mit der Zeit scheuert das graue Wunderlaminat allerdings ab bzw. Klebestellen geben den Geist auf. Es macht immer Sinn Kleidung zu reparieren – speziell hervorheben muss man Firmen wie z.B. Patagonia. Vor allem bei Gore-Tex, weil dieses ja lange Zeit nicht der „Burner“ für die Umwelt war. Folgende Situation hatte ich:
Azure Subscription Die Reise beginnt in Azure. Man muss eine Subscription anlegen - dort werden die Zahlungsdaten hinterlegt. Wichtig ist, dass man ein Budget anlegt (Achtung: Es kann bis zu 24h dauern, bis man ein Budget bei einer neuer Subscription anlegen kann).
Repository Beginnen tut die Reise in Azure DevOps: Falls noch nicht passiert, muss man eine Organisation anlegen.
Genauere Infos gibt es in der Dokumentation.
Als nächstes muss man Azure DevOps und Azure verbinden.
SQL Server Als erstes möchte ich das ganze bei SQL Server ausprobieren. Dazu starten wir eine Instanz in Docker:
version: "3.8" services: sqldata: image: mcr.microsoft.com/mssql/server:2017-latest environment: - SA_PASSWORD=Pass@word - ACCEPT_EULA=Y ports: - "5434:1433" Danach erstellen wir eine Tabelle:
CREATE TABLE master.dbo.Persons ( PersonID int NOT NULL PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL ); Anschließend fügen wir einen Datenatz ein:
INSERT INTO master.dbo.Persons (LastName) OUTPUT INSERTED.PersonID VALUES('Mustermann'); Macht man nun in Transaktion 1: