WellFrame (Wellcode Framework -de)

Wellframe ist ein Fullstack Software Developing Framework, das anhand von Datenbankdefinitionen (Tabllen, Spalten, Bezüge, Views) ein vollwertiges Framework gemäß der MVC Richtlinie generiert. Die Generierung ist Templates gesteuert und kann in mehrere Zielsprachen (wie C#, Java) generiert werden. Hauptfocus ist jedoch C# und .Net.
Das Framework basiert auf den modernsten Technologien und erstellt automatisch eine Umgebung, die eine Daten- bzw. Business Schicht enthält, darauf basierend wird automatisch ein (u. A. WCF oder .Net Core) Webservice erstellt, dessen Eigenschaften bereits im Vorfeld mit Hilfe von Meta-Informationen gesteuert werden.
Für die Präsentationsschicht stellt das Framework elementare Werkzeuge bzw. eine fertige Webentwicklungsumgebung in HTML5, CSS3 und Javascript (SPA) zur Verfügung. Die Webentwicklungsumgebung enthält ebenfalls eine Umgebung mit Basisfunktionen zur Erstellung einer Android-App.
Die Android-App fungiert als Hülle (ähnlich wie Phone-Gaps) für die Steuerung der Webanwendung und kann auf Funktionen des Android-Betriebssystems zugreifen.

Hauptfocus im bereitgestellten Framework ist eine Entwicklungsumgebung aufzubauen, die elementare Funktionen zur modernen Softwareentwicklung bereitstellt, ohne von Zusatztools abhängig zu sein. So können eigene Anforderungen besser skaliert und alte Projekte besser portiert werden.

Komponenten

Die wichtigste Funktion des Frameworks ist seine dynamische und transparente Funktionsweise, dies wird erst ersichtlich, wenn alle Komponenten des Framworks zusammen benutzt werden. Damit aber die Funktionsweise umfänglich vorgestellt wird, werden hier die Komponenten einzeln mit Beispielen vorgestellt.

Folgendes Flussdiagramm illustriert die Funktionsweise des Wellcode Frameworks:

WellFrameFlowChart

Zuletzt wird dann ein Beispiel vorgestellt, das alle Komponenten zusamen in einer komplette Entwicklungsumgebung einsetzt.

WellFrame.dll

Um mit dem WellFrame zu arbeiten, benötigt man die Bibliothek WellFrame.dll, darin sind alle nötigen Funktionen enthalten, die das Arbeiten mit dem Framework ermöglichen.

Ein Beispiel kann hier heruntergeladen werden. Dieses Beispiel benutzt das Framework WellFrame, um die Person aus der Microsoft Beispieldatenbank AdventureWorks abzubilden und einige Routinen darauf auszuführen.

Die AdventureWorks Datenbank können Sie bei Microsoft oder Codeplex hier herunterladen oder die Person-Tabelle in einer Datenbank selbst mit folgendem Kommando anlegen

Folgende Schritte sind zu befolgen, um das WellFrame in Ihrer Applikation einzubinden:

    1. Laden Sie die Libraries zu WellFrame aus diesem Link herunter. Die DLLs sind für AnyCPU kompiliert.
    2. Fügen Sie Verweise in Ihrem Projekt auf WellFrame.dll, Basics.dll und DbmsLibrary.dll hinzu.
    3. Die abstrakte Klasse EntityManager muss im Projekt abgeleitet werden, über diese Klasse könne Entities gruppiert instanziert, geändert oder gelöscht werden.

Entity

Diese präsentiert sinngemäß ein Objekt und dessen Eigenschaften. In unserem Beispiel wäre dies die Klasse Person. Die Person enthält Properties, wie FirstName, LastName, etc.
Hier ist zu notieren, dass WellFrame die Werte der Entity-Eigenschaften in eine Auflistung speichert. Die Feldnamen der ursprünglichen Tabellen werden hierfür verwendet. Dies ermöglich die Nutzung der Entity auch dann, wenn z. B. Datenbankfelder nicht in der Klasse abgebildet sind (Beispiel hierfür: benutzerdefinierte Felder).
Eine Definition sieht wie folgt aus:

EntityList

Dies präsentiert eine Auflistung einer Entity. Die Basisklasse für die Auflistung heißt WebEntityList In unserem Beispiel würde die Klasse PersonList heißen und ist wie folgt definiert:

Factory

Zu jeder Entity muss eine Factory-Klasse definiert werden. Die Factory-Klasse enthält die Fachlogik und die Manipulation einer Entity.
Die Basisklasse für die Factory heißt WebEntityFactory und nimmt sinnesgemäß zwei Template-Klassen an, die Entity und deren Auflistung.
In unserem Beispiel wäre die Factory-Klasse für die Person PersonFactory. In der Factory können diverse Funktion überschrieben oder neu hinzugefügt werden. Die Definition der Klasse PersonFactory kann wie folgt aussehen. Die Definition lehnt sich maßgeblich auf die Primärschlüssel in der Tabelle Person an:

EntityManager

in einer automatisierten Umgebung würde der EntityManager automatisch um diverse Funktion zur Manipulation einer Entity ergänzt. In unserem Beispiel müssen wir jedoch diese zunächst manuell hinzufügen:

Zusammengefasst werden für die Klassen Entity, EntityList, EntityFactory, EntityManager zwei Dateien erstellt. Die Klassen selbst müssen dann partiell definiert werden.
Das hat den Hintergrund, dass bei voller Ausschöpfung des Frameworks die Dateien „*.Designer.cs“ automatisch erstellt werden. Dafür ist ein ausfürhliches Beispiel unter diesem Link gepostet.In unserem Beispiel werden folgende Dateien erzeugt:

  1. Die Datei Person.Designer.cs enthält alle Properties der Person, wie FirstName, LastName, etc.
    Weiterhin enthält die Datei partielle Definition für der EntityManager, wie z. B. das Erstellen einer Instanz.
  2. Die zweite Datei Person.cs ist das sogenannte benutzerdefinierte Teil und kann die Fachlogik und einige Überschreibungen der Basisklassen enthalten.

Nun führt man alles zusammen und möchte z. B. alle Personen einlesen. Zunächst wird ein ConnectionString zu der AdventureWorks-Datenbank zusammengestellt, wie

Dann können alle Personen mit folgendem Befehl ausgelesen werden

Das komplette Beispiel kann hier heruntergeladen werden. Es ist mit Visual Studio 2013 und dem .Net Framework 4.5 erstellt.AdventureWorksPerson

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload the CAPTCHA.