Die Technologien ändern schneller und die Vielfalt nimmt zu. Muss man immer auf dem neusten Stand sein? Am Beispiel der Microsoft .NET Core Technologie im Zusammenspiel mit Angular werden konkrete Antworten für eine Webanwendung aufgezeigt.
Webanwendung Heute
Eine mögliche Architektur auf dem neusten Stand der Technik sieht wie folgt aus:
- Benutzeroberfläche mit Angular 4
- Geschäftslogik, Datenhaltung mit .NET Core 2
- Einsatz eines Frameworks für den Datenbank-Zugriff, z.B. Dapper
- Test der Schnittstellen zwischen Angular und .NET Core mit Postman
- Vollständige Entkopplung zwischen Benutzeroberfläche und Logik
.NET Core ist open source und Plattform unabhängig (läuft z.B. auf Windows, Linux und Mac). Angular ist die am weitesten verbreitete Technologie für Benutzeroberflächen von Webanwendungen.
Der Lauf der Zeit
Vor 4-5 Jahren sah die Vorgänger-Architektur so aus:
- Benutzeroberfläche mit Razor Views (Einsatz eines JavaScript-Frameworks wie jQuery)
- Geschäftslogik, Datenhaltung mit ASP.NET MVC (Model View Control) 5
- Einsatz eines Frameworks für den Datenbank-Zugriff, z.B. Dapper
- Vollständige Entkopplung zwischen Benutzeroberfläche und Logik
Im Jahr 2013/2014 gab es Angular 1 bereits, steckte noch in den Kinderschuhen. Ab 2015 war AngularJS verfügbar. D.h. vor 4-5 Jahren war Angular im Zusammenspiel mit ASP.NET MVC kein Thema.
Muss es immer das (Aller)Neuste sein?
Diese Frage hängt von der Konstellation ab:
1) Entwicklung einer neuen Anwendung
Hier lohnt sich der Einsatz der neusten Technologien. Damit wird die Zeit bis zum nächsten Wechsel maximal verzögert. Zu beachten sind folgende Punkte:
- Technologie / eingesetzte Version muss stabil sein
- Es müssen auf Fremdprodukte vorhanden sein. Konkretes Beispiel: NHibernate war Anfang 2018 nicht für .NET Core 2 verfügbar.
- Neben der Entwicklung muss auch das Hosting angeschaut werden. .NET Core ist viel komplizierter als ASP.NET MVC
2) Weiterentwicklung einer bestehenden Anwendung
Meist werden noch andere Fremdprodukte / Bibliotheken eingesetzt. Solange der Support für diese Produkte und Technologien gewährleistet ist, muss nicht auf die neuste Technologie gewechselt werden. Dies ist meist für einige Jahre gewährleistet. Ausser es gibt neue Funktionen, die von der Anwendung gebraucht werden.
Technologie Wechsel
In unserem Beispiel betrifft der Wechsel zwei Technologien:
1) Razor Views -> Angular
Es sind komplett verschiedene Technologien. Der bestehende Code kann nicht verwendete werden. Die Benutzeroberfläche muss neu entwickelt werden. Das bedeutet meistens viel Aufwand.
2) ASP.NET MVC -> .NET Core
Das Grundkonzept der Controller (Ablauflogik) kann übernommen werden. Der Startup-Code und die Konfiguration sind verschieden. Ein Teil des bestehenden Codes kann verwendet werden.
Im Normalfall ist der Controller-Teil eher klein. Darum ist es nicht so wichtig, wie viel davon wiederverwendet werden kann.
Wichtig ist, dass die Geschäftslogik nicht im Controller integriert ist.
Fazit
- Wird eine Anwendung neu entwickelt, lohnt sich der Einsatz der neusten Technologien. Es sollen stabile Versionen eingesetzt werden. Weiter muss geprüft werden, ob es die nötigen Fremdprodukte zu dieser Technologie gibt.
- Bei einer bestehenden Anwendung gibt es keinen zeitlichen Druck, die neusten Technologien einzusetzen.
- Bei einem Technologiewechsel muss meist die Benutzeroberfläche neu entwickelt werden. Das ist mit viel Aufwand verbunden.
- Die Geschäftslogik MUSS technologie-neutral sein. In unserem Fall: Programmierung in C# ohne Verweise / Referenzen auf Angular oder spezifische .NET Core Bibliotheken. Auf diese Weise kann die Geschäftslogik mit jeder Technologie eingesetzt werden, auch für ein App.
Links
- Angular: https://www.angularminds.com/blog/article/comparison-difference-between-angular1-vs-angular2-vs-angular4.html, https://angular.io/
- .NET Core: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/, https://www.asp.net/core/overview/aspnet-vnext
- Postman: https://www.getpostman.com/
- Dapper: http://dapper-tutorial.net/dapper