Softwarearchitekt.at | Schulungen, Trainings & Beratung in Deutschland und Österreich | Berater, Trainer, Autor, Dozent

 

Online-Artikel-Serie zu Security für Web-Sites und APIs in ASP.NET MVC 6

Da ASP.NET MVC 6 nicht nur der Nachfolger von MVC 5 sondern auch von ASP.NET Web API ist, stellt sich die Frage, wie Entwickler die damit entwickelten Services absichern können. Als Antwort findet man derzeit im GitHub Repository des Projektteams Middleware-Komponenten für Token-basierte Verfahren sowie Basisklassen für eigene Middleware-Komponenten. Infos dazu findet man in ... [Mehr]

Online-Artikel-Serie zu Web APIs mit ASP.NET MVC 6

Mit ASP.NET 5 und .NET Core will Microsoft eine neue Ära von .NET einläuten. Das Framework soll modularer sowie plattformunabhängig werden. Außerdem sollen verschiedene Versionen künftig einfacher nebeneinander auf einem Server betrieben werden können. Da dieser nach über zwölf Jahren durchgeführte Frühjahrsputz ohnehin Breaking Changes notwendig macht, nutzt Microsoft die Gelegenheit, Mehrgleisigkeiten zu entfernen. Dazu gehört die Tatsache, dass in den letzten Jahren mit ASP.NET MVC und ASP.NET Web API zwei sehr ähnliche Frameworks nebeneinander existierten. Während der Fokus bei MVC auf Webanwendungen und bei Web-API auf HTTP-basierten Services – so genannten Web-APIs – lag, teilten sie viele zum Teil nur geringfügig anders implementierte Konzepte, wie Controller, Model, Model Binding oder Routing. Infos dazu findet man in meinen Online-Artikeln ... [Mehr]

Visual Studio Code mit TypeScript und Angular 2 nutzen

Das neue Visual Studio Code, welches derzeit in der Version 0.5 vorliegt, ist ein leichtgewichtiger und plattform-übergreifend verfügbarer Code-Editor mit unterstützung für TypeScript 1.5. Auch Angular 2 setzt auf TypeScript 1.5 und somit bietet es sich an, erste Gehversuche mit Angular 2 unter Nutzung von Visual Studio Code zu unternehmen. Das dürfte auch einer der Gründe sein, warum selbst auf Google-Konferenzen Mitglieder aus dem Angular-Team immer auf Visual Studio Code zurückgreifen. Um ein erstes Beispiel mit der vorliegenden Version 0.5 zum Laufen zu kriegen, sind ein paar Schritte notwendig, die ich nachfolgend in Form einer Schritt-für-Schritt-Anleitung festhalte ... [Mehr]

Versionierte Web-APIs mit Swagger dokumentieren

Im Beitrag unter [1] habe ich gezeigt, wie man mit Routing-Constraints Web APIs versionisieren kann. Die in den Controllern hinterlegten Versionsnummern können auch von Swashbuckle [2] genutzt werden, um herauszufinden, welche Action-Methode zu welcher Version der Swagger-Dokumention gehört. Dazu implementiert man eine Methode mit der nachfolgend gezeigten Signatur. Sie nimmt die Beschreibung einer Action-Methode sowie eine Version entgegen und liefert true, falls die Methode in der Dokumentation der jeweiligen Version aufscheinen soll. Hierzu greift die hier gezeigte Methode auf die Eigenschaft Version des Attributs VersionedRoute zu ... [Mehr]

Web APIs versionisieren

Sobald mehr als eine Version einer Web API, zum Beispiel aus Gründen der Abwärtskompatibilität parallel zur Verfügung gestellt werden, muss der Aufrufer angeben können, welche Version er adressieren möchte. Eine dazu häufig genutzte Möglichkeit stellt der Einsatz eines HTTP-Headers, der die Versionsnummer wiederspiegelt, dar. Ab ASP.NET Web API 2.0 können solche Header ... [Mehr]

Folien und Beispiele zu meinem Vortrag über Micro-Services mit ASP.NET 5

Nachfolgend die Folien und Beispiele zu meinem Talk über Micro-Services mit ASP.NET 5 MVC. Die Demo-Anwendung besteht aus zwei Micro-Services. Der eine basiert auf AngularJS, Web APIs und ASP.NET 5; der andere ist eine klassische Web-Anwendung, welche auf ASP.NET MVC 6 basiert. Zur Authentifizierung kommen Tokens zum Einsatz. Diese werden via OpenId Connect angefordert und als Identity Provider fungiert Google. Darüber hinaus kommt zur Kommunikation zwischen den beiden Micro-Services neben einer REST-API auch der Microsoft Service Bus zum Einsatz. [Mehr]

Folien und Beispiele zu meinem Vortrag zum Erweitern von Entity Framework 6.x

Nachfolgend finden sich die Folien und Beispiele zu meinem Vortrag zum Erweitern von Entity Framework 6.x, welchen ich heute auf der DWX gehalten habe. Die Beispiele zeigen den Einsatz von Caching, Filter, Bulk-Updates mit Entity Framework 6.x. Dazu kommen Community-Erweiterungen sowie eigene Implementierungen zum Einsatz. Ein weiteres Beispiel zeigt, wie man sich mit einem eigenen MigrationGenerator DDL-Code für History-Tabellen generieren lassen kann. [Mehr]

Updated: Ein gut gehütetes Geheimnis: Proxies in Visual Studio für Web-APIs mit dem Azure SDK auf Knopfdruck generieren

Bis dato fehlt in Visual Studio die Möglichkeit, per Knopfdruck einen Proxy für eine Web API zu generieren. Das ist ärgerlich, zumal dies einen Rückschritt gegenüber SOAP-basierter Web-Services darstellt. Glücklicherweise hat Microsoft hier nachgerüstet. Allerdings haben das die wenigsten bemerkt. Der Grund dafür dürfte sein, dass diese Neuerung mit dem aktuellen SDK für Azure kommt. Microsoft nutzt diese Möglichkeit für die neuen Azure-basierten Api-Apps. Trotzdem kann man damit auch eigene Web APIs, die über Swagger dokumentiert sind, adressieren und somit einfach Proxies erhalten. [Mehr]

Web APIs mit Swagger dokumentieren

Im Bereich verteilter Systeme gehört die Generierung clientseitiger Proxys seit Jahrzehnten zum Alltag. Die Aufgabe dieser Proxys ist es, unter Verwendung des gewählten Netzwerkprotokolls und Datenformats mit einem Service zu kommunizieren. Nach außen hin bietet der Proxy eine Schnittstelle an, welche jener des Services gleicht. Diese Schnittstelle kann der Client nutzen, um serverseitige Operationen anzustoßen, ohne sich mit den Details der Netzwerkprogrammierung auseinandersetzen zu müssen. Um Proxies generieren zu können, bedarf es einer formalen Beschreibung der angebotenen Services. Für diesen Zweck wurden für zahlreiche Service-Technologien Interfacebeschreibungssprachen entwickelt. Ein sehr bekannter Vertreter ist die Web Service Description Language (WSDL), welche in erster Linie zum Beschreibung SOAP-basierter Web-Services zum Einsatz kommt. Für RESTful Services bzw. Web APIs hat sich noch kein solcher Standard auf breiter Basis durchgesetzt. Allerdings hat die Beschreibungssprache Swagger in der letzten Zeit sehr viel Unterstützung erfahren, sodass heute für fast jede Plattform Swagger-Unterstützung zumindest durch Erweiterungen aus der Community vorliegen. [Mehr]

Single Sign On mit OAuth 2.0 und OpenID Connect in ASP.NET 5

Um zu verhindern, dass ein Benutzer bei verschiedenen Anwendungen jeweils ein eigenes Benutzerkonto pflegen muss, setzt man in der letzten Zeit vermehrt auf zentrale Identity-Provider. Diese kümmern sich auch um die Authentifizierung des Benutzers und stellen daraufhin ein Security-Token aus. Aufgrund solcher Token können verschiedene Services herausfinden, um welchen Benutzer es sich handelt. Dazu müssen sie zunächst das Token validieren. Zu diesem Zwecke weist es häufig eine Signatur des ausstellenden Identity-Providers auf. Neben weiteren Sicherheitsmerkmalen beinhaltet es auch Claims, die den Benutzer näher beschrieben. [Mehr]

AngularJS mit TypeScript 1.5 und ES6-Modulen nutzen

Eine lästige Angelegenheit bei der Entwicklung von Web-Anwendungen ist die Tatsache, dass sich der Entwickler darum kümmern muss, sämtliche direkt sowie auch indirekt verwendete JavaScript-Dateien über Script-Tags zu referenzieren. EcmaScript 6 löst dieses Problem durch ein Modul-System, bei dem jede Datei einen eigenen Namensraum erhält und Konstrukte für andere Dateien exportieren kann. TypeScript 1.5 unterstützt dieses Modul-System. Das ist jedoch nur die halbe Miete, denn zur Laufzeit benötigt man auch einen Module-Loader, der in der Lage ist, die referenzierten Module zu laden. [Mehr]

AngularJS-1.x-Code mit ES7-Dekoratoren kürzer und prägnanter gestalten – und dabei an 2.0 angleichen

Das neue EcmaScript-Sprachelement für Dekoratoren kommt zwar erst 2016 mit EcmaScript 7, jedoch findet man dafür jetzt schon breite Unterstützung. Beispielsweise unterstützen es Transpiler wie Babel genauso wie TypeScript 1.5. Und auch Angular 2 wird sich darauf stützen. Aus diesem Grund spricht auch nichts dagegen, heute schon Dekoratoren einzusetzen, um AngularJS-1.x-Code kürzer und prägnanter zu gestalten. Ganz nebenbei kann man damit auch den Code ähnlich wie Angular-2.0-Code gestalten und sich somit auf eine künftige Migration vorbereiten. Das hier gezeigte Beispiel ... [Mehr]

Unterlagen zu meiner Session "AngularJS hinter den Kulissen" von der DotNet Cologne

Nachfolgend die Unterlagen zu meiner Session "AngularJS hinter den Kulissen", die ich heute auf der DotNet Cologne in Köln gehalten habe. Die Idee des Beispiels ist es, zu zeigen, wie AngularJS intern funktioniert, indem einige Konzepte von Angular manuell implementiert werden. Darunter befinden sich Direktiven, wie ng-show, ng-class oder ng-repeat sowie form und ng-model, aber auch ein minimaler $http-Service und ein manuelles Bootstrapping, den den Ersatz für ng-app mit einem Attribut my-app nachahmt. Im Zuge dessen veranschaulicht das Beispiel Möglichkeiten von Direktiven, wie Transclusion oder die Kommunikation zwischen Direktiven. [Mehr]

AngularJS mit EcmaScript 6 & Starter-Kit

Mein Kollege Vildan Softic, mit dem ich gemeinsam an unserem AngularJS-Buch gearbeitet habe, hat vor einiger Zeit in unserer Kolumne bei Heise Online über das Zusammenspiel von AngularJS und EcmaScript 6 geschrieben. Dabei zeigt er, wie man mit dem Transpiler Babel und einem Gulp-Task EcmaScript 6 nach EcmaScript 5, das heute schon in jedem Browser läuft, transpilieren kann. Als Ergänzung dazu zeige ich hier anhand einer Schritt-für-Schritt-Anleitung, wie man solch ein Projekt einrichtet. Wer die hier beschriebene Schritt-für-Schritt-Anleitung nicht durchmachen, sondern gleich AngularJS und EcmaScript nutzen möchte, findet das Ergebnis dieser Anleitung in Form eines Starter-Kits hier. Die nötigen Informationen zur Nutzung dieses Starter-Kits finden sich in der darin enthaltenen Datei readme.md. [Mehr]