linkedin

Das Object-Relational Mapping (ORM)-Framework bietet einen Code-First-Ansatz als praktikable Option zur Modellierung von Datenstrukturen. Durch die Reduzierung eines Schritts bei der Entwicklung einer Geschäftsanwendung verspricht das Code-First-Framework einen effizienten Weg zur Erstellung von Software ohne großen Aufwand.

Aber es hat seine Vor- und Nachteile. In diesem Blog beleuchtet unser Team einige der Gefahren des Code-First-Ansatzes.

Lassen Sie uns zunächst das Thema verstehen, um das es geht.

Was ist Code First?

Wenn Sie eine Anwendung entwickeln, insbesondere eine Geschäftsanwendung, denken Sie traditionell an die Datenstruktur. Sie entwickeln eine Datenbank mit Hilfe eines Teams mit unterschiedlichen Fähigkeiten, die gemeinsam den Code erstellen, der später geprüft und ausgeführt wird. Wir verwenden zwei verschiedene Methoden, um die Umgebungen zu konzeptualisieren, die wir mit Software zu formalisieren versuchen.

Hier sind also zwei Welten in den gesamten Prozess der Anwendungsentwicklung involviert:

  • Relationales Modell: Es ist ein Rahmen für die Beschreibung eines Bereichs. Es arbeitet mit der Datenbankstruktur, ihrem Code und den ruhenden Daten.

  • Objektmodell: Das zweite Modell bildet den Anwendungscode. Es besteht aus der visuellen Darstellung der Anwendung.

Wir müssen die Pflege dieser beiden Welten gemeinsam, aber getrennt voneinander überprüfen. Beide Modelle haben ihre Stärken und Schwächen, wenn es darum geht, einen bestimmten Bereich zu konzipieren. Früher, als Entwickler noch an Projekten arbeiteten, die beide Landschaften für die Modellierung erforderten, kam es zu dem, was Informatiker Impedance Mismatch nennen (Probleme, die aufgrund von Inkohärenz zwischen Datenbank und Programmiermodell auftreten). All dies kann eine Menge Ärger mit sich bringen.

Selbst wenn die Anwendung mit minimalem Impedanz-Mismatch erstellt wird, treten Probleme auf, wenn die Zeit für Änderungen gekommen ist.

Dann kamen Wireframes auf, die es den Entwicklern erleichterten, vom Code aus auf die Datenbank zuzugreifen, ohne die Datenbank zu kennen. Solche Frameworks entwickelten sich weiter, und nun konnte der Code in die Datenbankstruktur übersetzt werden.

Die Aufrechterhaltung zweier getrennter Welten für Datenbank und Anwendungscode verschwand mit dieser Entdeckung bald. Die Wireframes kümmerten sich um die Datenbank, indem sie sich um den Code kümmerten. Jetzt muss man nur noch an einer einzigen Welt arbeiten, und das nennt man eine verlockende Idee.

Die Code-First-Methode begann mit dieser Idee und nutzte die technologische Entwicklung. Sie wirkt wie ein Vorschlaghammer und macht die verschiedenen Modellierungsbereiche für den Softwareentwickler undurchsichtig. Anstatt zwei getrennte Arbeitsumgebungen zu haben, müssen die Entwickler also nur noch mit einer Objektmodellierungsumgebung (OME) arbeiten.

Mit einfachen Worten: Wenn Sie ein Code-first-Framework verwenden, definieren Sie die Geschäftsumgebung mit einer einzigen Modellierungssprache, die eine Objektsprache ist. Und der von Ihnen verwendete Code wird sein Bestes tun, um Ihre Modellierungsverpflichtungen in den relationalen Raum oder den von Ihnen verwendeten Raum zu übersetzen.

Da es nicht mehr notwendig ist, zwei getrennte Teams für die Erstellung einer Anwendung einzusetzen, lautet die Devise nun: “Einfach mit dem Programmieren beginnen”. Erstellen Sie Ihre Objekte und Datenbank-Repositories, in denen diese Objekte gespeichert sind, halten Sie diese Objekte aufrecht, und alles wird wie von Zauberhand ins Leben gerufen.

Verständnis durch ein Beispiel, wie das Code-First-Modell funktioniert

Nehmen wir an, ein Verlag kommt zu einem Entwickler und benötigt ein neues System zur Verfolgung von Büchern und Autoren. Der alte Weg, das System zu entwickeln, wäre, einen Business-Analysten (BA) in das Projekt zu holen und ein kanonisches Informationsmodell der Bücher und Autoren zu erstellen. Anschließend wird dieses kanonische Modell mit den Datenbank- und Anwendungsarchitekten geteilt. Beide Entwickler rekapitulieren dann dieses Modell in Begriffen, die für den Aufbau einer Datenbank und für den Aufbau der Anwendungsschicht verwendet werden können. Datenbank- und Anwendungsarchitekten sprechen also grundsätzlich über dieselbe Sache, aber der eine arbeitet in Dot Net und der andere in SQL.

Der erste Code besagt, dass der BA immer noch das kanonische Modell entwickelt, es aber nur mit einem Architekten teilt. Dieser eine Entwickler wird das Modell in einer Objektumgebung rekapitulieren. Ein Code-First-Framework baut das Objektmodell in einer Sprache auf, die von der persistenten Datenbank, oft einer relationalen oder einer Objektdatenbank, verstanden wird.

Die Gefahren von Code First

Code-First-Frameworks werden oft in kleineren Projekten eingesetzt, und manchmal dehnen Unternehmen sie auf Großprojekte aus, was gefährlich ist. Bei kleineren Projekten ist es jedoch so, dass die Geschäftsinhaber oft direkt einen Entwickler mit der Arbeit an dem Projekt beauftragen, ohne dass eine vorherige Analyse durch einen BA erfolgt.

Da es sich um ein kleineres Projekt handelt, stürzt sich der Entwickler direkt in die Arbeit und beginnt mit der Codierung. Der Entwickler erstellt die Objekte, die die Anforderungen der Anwendung repräsentieren.

Dabei vergessen der Entwickler und der Geschäftsinhaber, dass die Anwendung ein Modell der realen Welt ist. Der Übergang von der realen in die virtuelle Welt wird am besten von einem hochqualifizierten Fachmann durchgeführt. Ein Entwickler und ein Architekt sind dazu nicht in der Lage, da sie darin geschult sind, ein Modell im digitalen Raum zu untermauern. Ein Analytiker hingegen versteht es, ein reales Modell für den digitalen Raum zu verändern und bringt dieses Modell den Entwicklern nahe. Eine große Gefahr des “Code-first”-Ansatzes besteht also darin, dass man die Geschäftsanalyse ignoriert und sich auf den Entwickler stürzt.

Die zweite Gefahr ist die Systemleistung. Das Code-First-Framework impliziert daher oft, dass ein objektrelationaler Mapper (ORM) in der Mischung vorhanden ist. Die Code-First-Methode bietet dem Entwickler die Möglichkeit, in nur einer Modellierungsumgebung, der OME, zu arbeiten. Das bedeutet, dass wir uns beim Schreiben von Abfragen auf eine zukunftsorientierte Software verlassen.

Wir von DOOR3 haben schon vielen Kunden geholfen, die ein Code-First-Anwendungsprojekt begonnen haben, etwas gebaut haben, es in die Produktion aufgenommen haben und dann feststellen mussten, dass es zum Stillstand gekommen ist. Bei der Inspektion haben wir festgestellt, dass das SQL durch die Code-First-Architektur oder das ORM so suboptimal geschrieben war, dass wir es durch handgeschriebenen Code ersetzen mussten. Die Leistung ist also ein weiteres Element, auf das wir bei der Arbeit mit Code-First achten müssen.

All dies kann auch zur Wartbarkeit der Leistung führen. Obwohl die Arbeit mit Code-first einfacher ist, sind viele Entwickler frustriert, weil es in ORE kein Tool für das Tuning der Anwendung gibt. Alles wird über ORE in der Anwendung erledigt. In dem Moment, in dem Sie beginnen, einseitig Änderungen auf der Speicherebene vorzunehmen, können Sie den ORM unterbrechen oder den ORM auf diesen Teil der Änderungen beschränken.

Zusammenfassend

Wir haben also besprochen, worum es bei einem Code-first-Ansatz geht und welche Gefahren sich dahinter verbergen. Auch wenn das Modell einige Effizienzprobleme aufweist, eignet es sich hervorragend für die Entwicklung kleinerer Anwendungen und zur Förderung des Wachstums. Wenn Sie mehr über unsere Dienstleistungen erfahren möchten, kontaktieren Sie uns.

Brauchen Sie weitere Hilfe?

Denken Sie, dass es an der Zeit wäre, zusätzliche Hilfe in Anspruch zu nehmen?

Door3.com