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

 

Web APIs mit ASP.NET MVC 6: Serialisierung mit Formatter beeinflussen

Um die (De)Serialisierung bei ASP.NET MVC 6 zu beeinflussen, kann der Entwickler beim Start der Anwendung die standardmäßig eingerichteten Formatter konfigurieren bzw. die genannten Auflistungen manipulieren, sprich weitere Formatter hinzufügen oder bestehende entfernen. Ein Beispiel dafür findet sich im nachfolgenden Listing. Es zeigt die Methode ConfigureServices der Klasse Startup, welche sich in jedem ASP.NET-MVC-6-Projekt befindet und die Web-Anwendung beim Hochfahren initialisiert. Die Aufgabe von ConfigureServices ist es, austauschbare Komponenten über den Dependency-Injection-Mechanismus von ASP.NET zur Verfügung zu stellen. Diese Komponenten, welche sich auch Services oder Dienste nennen, hinterlegt ConfigureServices in einer vom Web-Server übergebenen Auflistung des Typs IServiceCollection ... [Mehr]

Self-Hosting mit Kestrel in ASP.NET 5 bzw. ASP.NET MVC 6

David Fowler vom ASP.NET-Produktteam hat vor einigen Tagen ein Beispiel online gestellt, das zeigt, wie man ASP.NET 5 bzw. ASP.NET MVC 6 im Self-Hosting-Modus betreiben kann. Die bis dato bekannten Beispiele zu diesem Thema verwendeten eine ASP.NET-5-Anwendung, die unter Verwendung von Kommandozeilen-Parameter zu starten war. Die Beispiele von David zeigen hingegen, wie man mit Microsofts Entwicklungs-Web-Server Kestrel mehr Kontrolle über Self-Hosting bekommt, indem man den Self-Host bei Bedarf in einer eigenen Anwendung startet. Somit könnte man den Self-Host in einem Windows-Dienst oder innerhalb einer Windows-Anwendung starten. Ich habe das Beispiel von David ein wenig erweitert, sodass es zeigt, wie man eine Startup-Klasse, die die gewünschten Middleware-Komponenten aufsetzt und Services bereitstellt, einbinden kann. Das ist zum einen nützlich, wenn man eine Anwendung sowohl via Self-Host als auch in IIS hosten möchte und hilft zum anderen zu verstehen, was beim Hosting in IIS tatsächlich passiert, wenn hier ASP.NET 5 bzw. ASP.NET MVC 6 hochfährt. Das ganze versehe ich hier zur Erklärung auch mit einigen zusätzlichen Anmerkungen. [Mehr]

Synchrone Validatoren in AngularJS 1.3

Bis inkl. Version 1.2 mussten Entwickler Parser bereitstellen, um eigene Validierungsregeln zu implementieren. Seit Version 1.3 gibt es parallel dazu ein eigenes Validator-Konzept. Da sich dieses Konzept auf das Validieren von Eingaben beschränkt, ist es etwas einfacher zu nutzen. Darüber hinaus bietet dieses neue Konzept auch die Möglichkeit, Validierungsregel asynchron zu prüfen. Das ist vor allem dann nützlich, wenn hierzu ein HTTP-basierter Service anzustoßen ist. Dieser Beitrag geht zunächst auf einfache Validatoren, welche ihre Arbeit synchron verrichten, ein. Ein weiterer Beitrag wird sich ihren asynchronen Gegenstücken zuwenden. [Mehr]

Globalisierung von AngularJS-Anwendungen mit Globalize

Während ich in unserer AngularJS-Tipps-und-Tricks-Kolumn bei Heise Developer auf die Umsetzung mehrsprachiger AngularJS-Anwendungen mittels angular-translate eingehe, zeige ich hier eine Möglichkeit, in globalisierten Anwendungen verschiedene Zahlen- und Datumsformate zu unterstützen. Hierzu gibt es ja bereits ein paar einfache Filter, wie date oder number, in AngularJS. Diese helfen jedoch nur bei der Ausgabe von Daten. Möchte man eine ähnliche Unterstützung auch für Eingabeformulare haben, muss man zu anderen Frameworks greifen. Eines davon ist Globalize (https://github.com/jquery/globalize#0.x-fixes), welches auch in der Lage ist, Werte in Hinblick auf die Gepflogenheiten einer Sprache und/oder eines Landes zu parsen. [Mehr]

Artikelreihe zu AngularJS

Auf den Seiten von Heise-Online findet man nun meine 5-teilige Artikelreihe zu Single Page Applications (SPA) mit AngularJS, die im Laufe der letzten Monate dort nach und nach erschienen ist. Nachfolgend das "Inhaltsverzeichnis" inkl. Links auf die einzelnen Teile. [Mehr]

Slides and Samples from my Session about OAuth 2.0 and JavaScript at OREDEV in Malmö

Below, I place my slides and code-smaples form my session about OAuth 2.0 and JavaScript, that I presented at OREDEV in Malmö today. The sample-code contains a ASP.NET-based OAuth-2.0-Authorization-Server as well as an AngularJS-based Client for it. The client gets an access-token by using the OAuth 2.0 Implicit Flow and then accesses an HTTP-Service on behalf of the user with it. The presented constructor-function can be found ... [Mehr]

Klassenbasierte Middleware für Web-Apps und Web-APIs in ASP.NET MVC 6 mit vNext

Neben der im letzten Beitrag gezeigten funktionalen Möglichkeit zur Umsetzung einer Middleware-Komponente kann der Entwickler hierzu auch auf das objektorientierte Paradigma zurückgreifen. Auch diese Komponenten können in sämtlichen vNext-Projekten, darunter MVC-6-Projekten, welche auch die Möglichkeiten der Web API beinhalten, genutzt werden. Hierzu ... [Mehr]

Unterlagen zur Session über OAuth 2.0 und OpenId Connect mit ASP.NET Web API und MVC #adcx

Nachfolgend findet man die Unterlagen zu meiner Session über den Einsatz von OAuth 2.0 und OpenId Connect in ASP.NET Web-API- und MVC-Projekten, welche ich heute auf der ADC X in Mannheim gehalten habe. Die Folien veranschaulichen die einzelnen Flows mit Fokus auf Authorization Code Flow und Implicit Flow. Daneben veranschaulichen sie die Funktionsweise von OAuth 2.0 für SSO und wie OpenId Connect dabei unterstützt. Die Beispiele demonstrieren, wie man die auf den Folien gezeigten Möglichkeiten mit ASP.NET Web API und ASP.NET MVC nutzen kann. Das erste Beispiel ist ein ... [Mehr]

Werte mit AngularJS in Abhängigkeit anderer Werte validieren

Die Tage wurde ich gefragt, wie man mit AngularJS Werte in Abhängigkeit von anderer Werte validieren kann. Anwendungsfälle dafür sind Eingaben die zur Bestätigung doppelt erfasst werden müssen oder logische Abhängigkeiten zwischen Zahlen und Datumswerten, bei denen ein Startwert kleiner oder gleich einem Endwert zu sein hat.Da Validatoren in AngularJS eigentlich benutzerdefinierte Direktiven sind, kann man sich hier auf die Möglichkeiten der Datenbindung mit isolierten Scopes stützen. Das nachfolgende Beispiel ... [Mehr]