Es wird doch alles immer wieder (komplexer) einfacher

Was passiert jetzt mit ASP.NET vNext? Alles Neu?

Technologien mit vielen Optionen machen das Programmieren nicht einfach. Entscheidungen stehen an. Entscheidungen die sich oft auf viele Jahre auswirken. Applikationen müssen gewartet werden. Steht diese Technologie auch in ein paar Jahren noch zur Verfügung oder wird das wieder abgelöst?

Wie einfach war noch .NET 1.0. Windows Forms und Web Forms, und das mit etwa 3000 Klassen. Die Anzahl der Klassen wurde im Lauf der Zeit immer mehr. 4000 Klassen mit .NET 1.1, mit den Generics bei .NET 2.0 waren es dann schon 8000. Jetzt unbedingt die richtige Collection Klasse nehmen, nicht mehr eine der alten Collections die statt T auf Objekten basierten.

Mit .NET 3.0 gab’s dann entweder Windows Presentation Foundation (WPF) oder Windows Forms zur Auswahl bei der Entwicklung von Desktop Applikationen. Windows Communication Foundation (WCF) hat die Kommunikation mit ASP.NET Web Services und .NET Remoting abgelöst. Für Kommunikation war der große Vorteil dass nur mehr eine Programmierschnittstelle gelernt werden mußte. Die hat in allen Szenarien funktioniert. Wobei, ob WCF das wirklich einfacher gemacht hat? Neu mit .NET 3.0 war auch Windows Workflow Foundation (WF): eine Workflow Engine out of the box.

Einfacher wurde dann wieder alles mit .NET 3.5, LINQ und Lambda Expressions. Für den Datenbankzugriff gabs ab .NET 3.5.1 die Auswahl und Entscheidungsnotwendigkeit zwischen LINQ to SQL und dem Entity Framework.

Mit .NET 3.5 gab es auch ein neues Add-In Modell: System.AddIn. Da besteht keine Notwendigkeit mehr ein eigenes Add-In Modell aufzubauen. Die Architektur ist vorgegeben und jetzt einfach reinhängen… Hmmm… einfach ist System.AddIn ja doch nicht. Mit .NET 4.0 und dem Managed Extensibility Framework (MEF) wurde ein Add-In Modell dann doch noch einfach. Ist bekannt dass es da mittlerweile zwei Versionen gibt? System.ComponentModel.Composition und System.Composition. Eine Variante für das große Framework, und die kleinere für Portable Class Libraries (PCL). Nebenbei ist auch die Workflow Foundation neu entstanden. Achtung welche Klassen jetzt verwendet werden, da könnte man in Konflikt geraten. System.Workflow und System.Activities. Ich hätte ja auf einigen Klassen das Obsolete Attribute daraufgesetzt. Da gab es dann scheinbar doch zu viele Gegenstimmen.

Entity Framework hat sich weiterentwickelt. Database First oder Model First oder Code First. Wobei Code First ja nicht heißen muss zuerst Code und dann die Datenbank. Es kann auch umgekehrt sein und trotzdem Code First heißen. Wie auch Windows Store Apps nicht nur vom Windows Store installiert werden können.

Statt Web Forms steht auch ASP.NET MVC zur Wahl. Für die Entwicklung am Desktop war auch Silverlight mal eine Option. Oder doch gleich auf Windows Store Apps setzen? Unsere User sind noch nicht so weit? Dann doch WPF oder überhaupt zu HTML und JavaScript wechseln?

WCF ist doch zu komplex geworden. Mit ASP.NET Web API ist REST-basierte Kommunikation viel einfacher.

Mein Job ist es sich mit neuen Technologien zu beschäftigen. Aber ein Entwickler der in Projekten arbeitet hat keine Chance da am Laufenden zu bleiben um nicht falsche Entscheidungen zu treffen. Und dabei gibt es auch in nicht so offensichtlichen Bereichen Änderungen. Ein Beispiel? Seit Windows Vista gibt es neues Event Logging System. Das ist auch im .NET Framework abgebildet. Da haben wir doch eine EventLog Klasse im Namespace System.Diagnostics mit der man in den Event Log schreiben kann, und EventProvider im Namespace System.Diagnostics.Eventing. Laut Dokumentation erfüllen beide Klassen den gleichen Zweck. Ist schon bekannt dass es seit .NET 4.5 ein neues Tracing mit dem Namespace System.Diagnostics.Tracing gibt, oder ist diese Information an der Unzahl an neuen Features übersehen worden? Das ist die dritte Version nach der Trace Klasse ab .NET 1.0 und TraceSource ab .NET 2.0. Und jetzt habe ich noch überhaupt nicht die NuGet Packages die auch zum .NET Framework gehören erwähnt.

.NET 1.0 wurde im Jahr 2000 vorgestellt und 2002 released. Seitdem ist viel Zeit vergangen und sowohl Erweiterungen als auch Änderungen bringen mehr Komplexität. Es ist Zeit einen Neustart zu machen.

Der Neustart passiert jetzt mit Visual Studio „14“ . Visual Studio “14”, das ist nicht „Visual Studio 2014“. Visual Studio 2013 hat die Versionsnummer „12“, „13“ muss (wie auch bei Office) ausgelassen werden, und Version „14“ könnte zu einem Visual Studio 2015 werden; oder es bleibt bei Visual Studio 14 wenn wieder auf Versionsnummern statt Jahreszahlen umgestellt wird.

ASP.NET vNext (inkludiert ASP.NET MVC 6) vereinheitlicht Web Frameworks mit MVC, Web API und Web Pages. Bisher hatten – aus Historiengründen – der Controller von MVC und Web API unterschiedliche Basisklassen. Das wird jetzt vereinheitlicht. Kompatibilität zu Active Server Pages (ASP) – was im Jahr 2000 notwendig war – entfernt. Das bringt eine Menge Performance und reduziert benötigte Runtime-Resources. Das dafür verwendete .NET Framework braucht 11 MB statt den 200 MB des kompletten Frameworks. ASP.NET Web Forms kann da getrost weggelassen werden. Natürlich macht es da Sinn gleichzeitig Änderungen einzuführen, wie z.B. JSON statt XML Konfiguration.

Der Neustart hört mit ASP.NET nicht auf. Entity Framework 7 wird ganz neu geschrieben.  Auch hier gibt es Varianten die man in neuen Applikationen schon heute besser nicht mehr nutzt. Entity Framework wird in der neuen Version nicht nur ein Framework für relationale Datenquellen. Einen Azure Table Storage Provider wird es hier auch geben.

Natürlich wird der Neustart einfacher wenn schon jetzt auf die richtigen Architekturen und Modelle gesetzt wird. Und mit vNext wird mit Reduzierung dann alles wirklich einfacher.

Dabei müssen wir aber noch hoffen dass die Dokumentation gelöst wird. Suche ich nach Samples zu Klassen, welche werde ich dann finden? Alt oder neu? Bing integriert im Visual Studio wird hoffentlich die richtige Version der Samples zum geöffneten Projekt finden.

Viel Spaß in der Zukunft!

Christian Nagel

Christian Nagel ist Microsoft Regional Director und MVP für Visual C#, Buchautor, Trainer und Consultant.
Twitter:  @christiannagel CN innovation

Image © Eabffx | Dreamstime.com - Endless Labyrinth Photo

Das ist ein Gastbeitrag. Die Meinung des Autors muss sich nicht mit jener von Microsoft decken. Durch den Artikel ergeben sich keinerlei Handlungsempfehlungen. Microsoft übernimmt keine Gewähr für die Richtigkeit oder Vollständigkeit der Angaben.