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

 

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]

Entity Framework Performance Tip #3: Daten ohne Änderungsverfolgung laden

DbContext führt Buch über sämtliche Entitäten, die ihm bekannt sind. Das sind Entitäten, die er geladen oder gespeichert hat, sowie Entitäten, die die Anwendung zum Kontext hinzugefügt (attached) hat. Dazu verwaltet er diese Entitäten mit Zustandsinformationen in einer internen Datenstruktur. Dies erzeugt einen Overhead, der gerade bei der Arbeit mit größeren Datenmengen spürbar wird ... [Mehr]

Entity Framework Performance Tip #2: Pre-Loading

Entity Framework stellt auch Verknüpfungen zwischen Objekte, die die Anwendung hintereinander in den Context lädt, über deren Navigationseigenschaften her. Ich bezeichne dies als Pre-Loading. Pre-Loading kann eine effiziente Alternative zum Eager Loading darstellen, zumal Entity Framework beim Einsatz von Eager Laoding sämtliche Daten über eine einzige Abfrage lädt. [Mehr]

Entity Framework Performance Tip #1: Ladestrategien

Entity Framework unterstützt zwei Ladestrategien für benachbarte Objekte: Lazy Loading lädt benachbarte Objekte bei Bedarf nach, Eager Loading lädt benachbarte Objekte mittels Outer-Joins sofort. Daneben kann der Entwickler eine weitere Lade-Strategie verwenden, die hier als Pre-Loading bezeichnet und in einem weiteren Beitrag näher betrachtet wird. Lazy Loading bietet sich für Fälle an, in denen ... [Mehr]

Middleware in ASP.NET vNext, Teil 1: Überblick

Wie von Microsofts OWIN-Implementierung Katana bekannt, besteht die Aufgabe der Klasse Startup bei ASP.NET vNext darin, Middleware-Komponenten zu registrieren. Diese Komponenten werden von jeder HTTP-Anfrage in der definierten Reihenfolge durchlaufen, wobei jede Komponente auch die weitere Verarbeitung einer Anfrage durch nachfolgende Komponenten unterbinden kann. HTTP-Antworten durchlaufen diese in umgekehrter Reihenfolge. Middlware-Komponenten implementieren verschiedene Aspekte der Kommunikation mit Clients. Dazu zählt zum Beispiel die Implementierung von Security-Szenarien, die Komprimierung von Seiteninhalten, das Unterstützen von CORS und Web-Sockets, das Ausliefern von statischen Dateien oder das Delegieren an Anwendungs-Frameworks, wie ASP.NET MVC oder SignalR. Obwohl ASP.NET vNext nicht primär auf OWIN basiert ... [Mehr]

Soft-Delete mit Entity Framework 6.1

Seit Entity Framework 6.1 können Entwickler mit CommandTreeInterceptoren SQL-Anweisungen abfangen und abändern. Im Gegensatz zu den CommandInterceptoren, die bereits mit 6.0 zur Verfügung standen, stellen CommandTreeInterceptoren die SQL-Anweisung nicht in Form eines Strings sondern in Form eines Syntax-Baumes dar. Dies vereinfacht das Abändern der Anweisung. Auf diese Weise lassen sich globale Filter definieren. Ein solcher globaler Filter könnte zum Beispiel festlegen, dass nur Datensätze mit einem bestimmten Status oder nur Datensätze eines bestimmten Mandanten geladen werden. Dazu müsste der Interceptor jeder Abfrage um eine entsprechende Einschränkung erweitern. [Mehr]

Stored Functions mit Entity Framework Code First nutzen

Während Entity Framework prinzipiell mit Stored Functions bzw. Table Valued Functions, die innerhalb von Abfragen eingesetzt werden können, umgehen kann, hat diese Möglichkeit noch nicht den Weg in die Welt von Code First geschafft. Allerdings können Entwickler seit Entity Framework 6.1 auf die Mapping API zugreifen. Dabei handelt es sich um ein Objektmodell, welches in vergangenen Versionen lediglich interne zur Verfügung stand und sowohl lesenden als auch schreibenden Zugriff auf das Entity Data Model gewährt. Dies kann man sich zunutze machen, um eine Unterstützung für Stored Functions bzw. Table Valued Functions zu implementieren. Da das Entity Data Model und seine Repräsentation durch die Mapping API recht komplex sind, handelt es sich bei dieser Aufgabe nicht um etwas, das man nebenbei erledigen kann.

Glücklicherweise hat sich darum bereits jemand angenommen und das Ergebnis dieses Unterfangens als freies Projekt bereitgestellt. Dieses findet man unter [4]. Es bietet für die Konfiguration von Sotred Functions bzw. Table Valued Functions in Code-First-Szenarien eine einfache API, welche die Komplexität der Mapping-API verbirgt. Jenen, die wissen möchten, wie dieses Projekt die Mapping-API verwendet oder nicht von einem externen Projekt abhängig sein wollen, bietet dieser Beitrag eine nähere Beschreibung des von diesem Projekt verfolgten Ansatzes. [Mehr]