DOTNET-DOKTOR-E-Mail-Newsletter
Newsletter 2/2017: Nachrichten, Vorträge und Bücher vom DOTNET-DOKTOR

www.dotnet-doktor.de - Dr. Holger Schwichtenberg
NEWSLETTER Ausgabe 2/2017 (Nachsendung)
für
Sehr geehrte Leser/innen meiner Bücher,
sehr geehrte Kunden/Kundinnen,
sehr geehrte Schulungsteilnehmer/innen,
sehr geehrte Nutzer/innen meiner Website,
im zweiten DOTNET-DOKTOR-Newsletter in diesem Jahr lesen Sie Folgendes:
  1. INFOTAG: Softwareentwickler-Update 2017/2018 am 14.11.2017 in München
  2. .NET Core 2.0 ist erschienen
  3. ASP.NET Core 2.0 ist erschienen
  4. Entity Framework Core 2.0 ist erschienen
  5. Was bringt PowerShell Core 6.0?
  6. Kostenloser Vortrag: "Eine 100-Millionen-Dollar-Cross-Platform-App mit ASP.NET Core, Angular und Electron" am 30.08.2017 in Ratingen (bei Düsseldorf)
  7. Mein Buch zu Entity Framework Core 1.x und 2.0
  8. 40% Rabatt auf (Rest-)Plätze für einige Seminare der .NET-Akademie im September 2017: C#, WPF, Xamarin, ASP.NET MVC, EF, WCF/WebAPI
  9. Abkürzungsverzeichnis auf www.entwickler-lexikon.de
  10. Neue Schulungsthemen: .NET Core 2.0, Kotlin, Android Studio, Microservices, Java 9-Update, Power BI, R/Data Science/Machine Learning, Microsoft Lizenzierung, Threat Modeling/Microsoft Security Development Lifecycle (SDL)
Mit herzlichen Grüßen aus Essen
Dr. Holger Schwichtenberg
Kontakt: Webformular
Website & Blog: www.dotnet-doktor.de
Twitter: www.twitter.com/dotnetdoktor

Infotag: Softwareentwickler-Update 2017/2018 am 14.11.2017 in München

Auf den vielfachen Wunsch unserer Kunden im Süden kommt der Infotag wieder nach München: dieses Mal mit einem Potpourri von aktuellen Themen für Softwareentwickler im Umfeld von .NET- und Webanwendungen. Wir reden über die aktuellen Produktversionen von .NET, .NET Core, C#, Visual Studio, TypeScript, Angular und TFS/VSTS. Außerdem zeigen wir den Nutzen von aktuellen Konzepten wie Cross-Platform-Entwicklung, DevOps, Docker und Cloud für Softwareentwickler. Wie immer bei unseren Infotagen: Sie erhalten eine geballte Informationsladung von bekannten Top-Experten zu einem sehr geringen Preis (wobei leider eine Veranstaltung in München grundsätzlich etwas teurer ist als in unserer NRW-Heimat). Zudem haben Sie die Gelegenheit, den anwesenden Experten auch individuelle Fragen in den Pausen zu stellen!

Geplante Themen dieses Infotages:
  • C# 7.0/7.1, .NET 4.7/4.7.1, .NET Core 2.0/2.1, .NET Standard 2.0, XAML Standard 1.0
  • Visual Studio 2017 Update 3 und Update 4
  • Effiziente Webanwendungsentwicklung mit TypeScript 2.x und Angular 4.x
  • Echte Cross-Platform-Anwendungen für alle Betriebssysteme mit Electron und Cordova
  • VS Team Services & Team Foundation Server: Microsofts fertige Teamumgebung (in der Cloud oder on-premise)
  • Mit DevOps und Business Agility die Herausforderungen der digitalen Transformation meistern
  • Docker für .NET- und Web-Entwickler: Continous Integration, Continous Delivery und Testen mit Docker
  • Microsoft Azure für .NET- und Web-Entwickler: Was kann ein Softwareentwickler aus der Microsoft-Cloud gut gebrauchen?

Vortragende an diesem Tag sind neben meiner Person mit Neno Loje und Rainer Stropek zwei weitere Microsoft Most Valuable Professionals (MVP) und Top-Experten der Entwicklungsszene!

Datum: Dienstag, 14.11.2017
Uhrzeit: 09:30 bis ca. 17:30 Uhr
Ort: München (genauer Ort ist abhängig von der Teilnehmeranzahl und wird noch bekanntgegeben)
Preis:
  • Frühbucherpreis 249 € zzgl. 19% DE-MwSt. bis 30.09.2017, danach: 299 € zzgl. 19% DE-MwSt.
  • 3 für 2: Wenn Sie sich zu dritt aus einer Firma für den Infotag anmelden, zahlen Sie lediglich den Preis für 2 Teilnehmer! Gilt auch anlog für 6, 9 usw. Personen!
Weitere Informationen und Anmeldung

.NET Core 2.0 ist erschienen

Microsoft hat am 14.08.2017 die zweite Hauptversion seiner Core-Produktfamilie mit .NET Core, ASP.NET Core und Entity Framework Core als produktionsreife Version bereitgestellt. Parallel ist das dritte Update zu Visual Studio erschienen, das die Core 2.0-Produkte unterstützt.

Größte Neuerung in .NET Core 2.0 ist die Implementierung der Spezifikation ".NET Standard 2.0", welche Microsoft erst letzte Woche finalisiert hatte. Gegenüber .NET Core 1.1 realisiert .NET Core 2.0 damit rund 19.000 zusätzliche Programmierschnittstellen aus dem ursprünglichen .NET Framework. Damit wird nicht nur die Migration bestehenden Programmcodes auf .NET Core viel leichter, sondern es laufen auch sehr viel mehr bestehende .NET-Softwarekomponenten, die für das klassische .NET Framework geschrieben wurden, auch unter .NET Core. Laut Microsoft sind nun 70% der auf Nuget.org verfügbaren Pakete unter .NET Core 2.0 lauffähig, zumal .NET Core nun auch direkt .NET Framework-Pakete referenzieren kann. Auch totgesagte Klassen wie System.Data.DataSet kehren damit in die Welt von .NET Core ein.

.NET Core verwendet den neueren, berühmten und aufgrund seines schweren Bugs in der ersten Version auch berüchtigten Just-in-Time-Compiler RyuJIT nun auch in der 32-bit-Version anstelle des alten JIT32. RyuJIT wurde für 64-Bit-Systeme in .NET Framework 4.6 eingeführt und auch in .NET Core 1.x im 64-Bit-Modus verwendet. Jetzt, in .NET Core 2.0, kommt RyuJIT in einer beschleunigten Version für 32- und 64-Bit-Anwendungen zum Einsatz.

Die Downloads zu .NET Core 2.0 (Runtime und Software Development Kits (SDK) für zahlreiche Betriebssysteme) gibt es wahlweise auf Github.com oder der offiziellen Microsoft-.NET Core-Seite. Auch Docker-Images auf Basis von Linux und Windows Nano Server sind verfügbar. Neben den bisher unterstützten Windows-, Linux- und MacOS-Varianten läuft .NET Core nun auch auf Fedora 25/26, Debian 9, Ubuntu 17.04, Linux Mint 18, Suse Enterprise Linux 12 SP2+ und MacOS 10.13 "High Sierra". Die Unterstützung für ARM32-Prozessoren verbleibt vorerst im Preview-Stadium.

.NET Core 2.0 kann neben .NET Core 1.x auf einem System koexistieren. Zu beachten ist aber, dass nach der Installation des .NET Core 2.0-SDK dessen Werkzeuge auch für die .NET Core 1.x-Projekte automatisch verwendet werden, sofern der Entwickler nicht durch einen Eintrag in der global.json-Datei des jeweiligen Dateisystemordners die explizite Verwendung des älteren SDK erzwingt. Neben C# und F# unterstützt Microsoft nun für die .NET Core-Entwicklung auch Visual Basic.NET. Projektvorlagen liefert Microsoft dafür aber zunächst nur für Konsolenanwendungen und Bibliotheken, bisher nicht für Webprojekte.

Entwickler, die bisher .NET Core 1.0 oder 1.1 einsetzen, müssen beachten, dass der Support längstens noch bis zum 27.06.2019 läuft. Er kann sogar früher enden, wenn Microsoft .NET Core 2.0 zur Long Term Support (LTS)-Version erklärt. Das ist noch nicht erfolgt. Sobald diese Statuserklärung aber erfolgt, haben Nutzer von .NET Core 1.x dann nur noch ein Jahr Zeit für den Umstieg auf Version 2.0.

Für die Entwicklung mit .NET Core 2.0 ist das ebenfalls am 14.08.2017 veröffentlichte Visual Studio 2017 in der Version Update 3 (alias Version 15.3) oder Visual Studio for Mac in der Version 7.1 notwendig. Dies ist die erste Version von Visual Studio, die den Parallelbetrieb mehrerer verschiedener .NET Core-SDKs, .NET Core in Windows-Nano-Server-basierten Docker-Containern (bisher legte Visual Studio immer nur Linux-basierte Container an) sowie das Live-Unit-Testing von .NET Core-Anwendungen unterstützt. Weiterhin braucht ein Entwickler für das Live-Unit-Testing die teure Enterprise-Version von Visual Studio.

ASP.NET Core 2.0 ist erschienen

Auch für sein Webentwicklungsframework ASP.NET Core hat Microsoft die Version 2.0 fertiggestellt. Anders als in der ersten Preview-Version angekündigt, läuft ASP.NET Core 2.0 nun doch nicht nur auf .NET Core 2.0, sondern weiterhin auch auf dem klassischen .NET Framework (ab Version 4.6.1). ASP.NET Core 2.0 basiert auf .NET Standard 2.0 und läuft daher nicht auf älteren .NET Framework-Versionen.

Ab ASP.NET Core 2.0 bietet Microsoft mit Microsoft.AspNetCore ein Nuget-Paket an, das als Meta-Paket alle von Microsoft für ASP.NET Core erstellten Nuget-Pakete nach sich zieht, einschließlich Entity Framework Core 2.0. Auf den ersten Blick widerspricht dies der von Microsoft mit .NET Core propagierten Strategie der minimalen Referenzierung von .NET-Klassen. Auf den zweiten Blick sorgen jedoch die Deployment-Werkzeuge von .NET Core dafür, dass am Ende nur die tatsächlich benötigten Pakete übrigbleiben.

ASP.NET Core bietet neben Performanceverbesserungen nun auch eine Unterstützung für die C#-7.1-Syntax in Views sowie als "Razor Pages" bezeichneten Views, die ganz ohne Controller auskommen. ASP.NET Core 2.0-Views können nun vorkompiliert werden – Microsoft hatte das in den Beta-Varianten für Version 1.0 bereits integriert, dann aber wieder ausgebaut. Den Startup-Programmcode von ASP.NET hat Microsoft in Version 2.0 mit Einführung der Methode WebHost.CreateDefaultBuilder() stark vereinfacht.

Visual Studio 2017 bietet nun beim Anlegen neuer ASP.NET Core-Webprojekte eine Auswahl zwischen .NET Core 1.0, 1.1 und 2.0 sowie neue Projektvorlagen, die neben Server-Programmcode auch direkt Client-Code mit Angular (derzeit auf Stand 4.1.2) oder React.js (derzeit Version 15.5.0) enthalten. Die neuen Vorlagen sind auch über das Kommandozeilenwerkzeug dotnet new verfügbar.

Entity Framework Core 2.0 ist erschienen

Entity Framework Core gibt es auch in der Version 2.0 in mehreren Nuget-Paketen, und zwar für die Datenbankmanagementsysteme Microsoft SQL Server [Microsoft.EntityFrameworkCore.SqlServer], Microsoft SQL Server Compact 3.5 [EntityFrameworkCore.SqlServerCompact35] und Microsoft SQL Server Compact 4.0 [www.nuget.org/packages/EntityFrameworkCore.SqlServerCompact40, SQLite [Microsoft.EntityFrameworkCore.Sqlite] sowie den In-Memory-Treiber für Unit Testing [Microsoft.EntityFrameworkCore.InMemory]. Die Aktualisierung der Treiber weiterer Hersteller wird folgen. Die für Version 1.x veröffentlichten Treiber sind nicht kompatibel zu Version 2.0, weil Microsoft - wie schon während der Beta-Phase von 1.x - abermals die Programmierschnittstelle geändert hat.

Entity Framework Core 2.0 basiert nun auf .NET Standard 2.0 und kann auf allen Plattformen laufen, die diesen API-Standard unterstützen, also .NET Framework ab Version 4.6.1, .NET Core ab Version 2.0, Xamarin.iOS ab Version 10.14, Xamarin.Android ab Version 7.5 und Xamarin.Mac ab Version 3.8. Dazu gehört aber aktuell noch nicht die Windows Universal Platform (UWP) in Windows 10. Hier kommt erst im Herbst mit dem Windows 10 Fall Creators Update die Unterstützung für .NET Standard 2.0.

Entity Framework Core 2.0 erhält einige neue Features, wie globale Datenfilter, die in der Kontextklasse definierbar sind und auf alle Abfragen einschließlich Eager Loading-Befehle wirken. Damit lassen sich Mandantenfähigkeit und besondere Anforderungen wie ein Soft Delete (Markieren eines Datensatz als gelöscht, statt ihn wirklich zu löschen) realisieren. Instanzen des Entity Framework-Kontextes können nun mit AddDbContextPool() vorab erzeugt und in einem Pool verwaltet werden, sodass Webanwendungen bei eingehenden HTTP-Anfragen schneller darauf zugreifen können. Bei der Verwendung von SQL für Abfragen kann der Entwickler nun die in C# 6.0 eingeführte String-Interpolations-Syntax zum Zusammenbau des SQL-Befehls verwenden. Entity Framework Core sorgt dabei dafür, dass es zu keinem SQL-Injektionsangriff kommen kann (siehe Listing).

string ort1 = "Essen";
string ort2 = "München";
using (var ctx = new WWWingsContext())
{
IQueryable<Flug> flugliste = ctx.FlugSet.FromSql($@"Select * from Flug where Abflugort={ort1} and Zielort={ort2}");
Console.WriteLine(flugliste.Count());
foreach (var flug in flugliste)
{
Console.WriteLine(flug);
}
}
Listing: String Interpolation bei SQL-Befehlen in Entity Framework Core 2.0

Microsoft hat in einigen Situationen die Übersetzung von LINQ zu SQL verbessert und führt nun einige Befehle in der Datenbank statt im RAM aus. In einem ersten Test hat Entity Framework Core 2.0 im Gegensatz zur 1.1-Version nun tatsächlich Abfragen mit ToString().Contains() und AddDays() korrekt in SQL übersetzt. Leider gilt das nicht für den wichtigen Operator GroupBy, der weiterhin alle Datensätze ins RAM lädt, um sie dort zu gruppieren, was in der Praxis häufig nicht akzeptabel ist. Da auch weiterhin die Verwendung von SQL statt LINQ mit FromSql() nur mit Entitätsklassen funktioniert, sind alle verfügbaren Workarounds sehr hässlich.

Die Kommentare der Nutzer auf Github drücken klar das absolute Unverständnis aus, dass Microsoft so eine elementare Funktion auch ein Jahr nach dem Erscheinen der ersten Version immer noch nicht realisiert hat – stattdessen aber viele andere Punkte jetzt liefert, die vielleicht für manchen Fall ganz schön, aber eindeutig für die Mehrheit nicht so wichtig sind wie ein performantes GroupBy.

Was aber am meisten daran frustriert ist, dass das Entwicklungsteam einen Pull-Request mit einer Implementierung von GroupBy nicht angenommen hat und immer wieder betont, dass die Umsetzung von GroupBy in dem bestehenden Quellcode nicht so einfach wäre. Dabei war Microsoft mit Entity Framework Core doch mit der Aussage angetreten, dass man den Quellcode des OR-Mappers in der Neuimplementierung einfacher und flexibler machen will, um agiler zu sein. Und jetzt ist diese Neuimplementierung so (schlecht?), dass man dort nicht einmal eine Gruppierungsfunktion einbauen kann? Das enttäuscht uns .NET-Entwickler doch wirklich sehr.

Was bringt PowerShell Core 6.0?

Neben der Windows PowerShell (WPS) entwickelt Microsoft jetzt auch eine PowerShell Core-Version (PSCore) als Open Source auf Github. Während die Windows PowerShell ausschließlich unter Windows läuft, gibt es die PowerShell Core auch für Linux und MacOS. Die Windows PowerShell steht derzeit bei Versionsnummer 5.1. PowerShell Core beginnt mit der Versionszählung bei 6.0. PowerShell Core basiert auf dem plattformunabhängigen .NET Core 2.0, während die klassische PowerShell auf dem klassischen .NET Framework 4.x aufsetzt, das es nur für Windows gibt.

Im Gegensatz zu der Entscheidung, beim Übergang von .NET Framework zu .NET Core die Versionsnummer wieder bei 1.0 zu beginnen, zählt Microsoft bei PowerShell Core weiter. Man kann aber nicht ausschließen, dass Microsoft dies noch ändern wird.

Die Windows PowerShell 5.1 ist weit mächtiger als die PowerShell Core 6.0, weil die PowerShell Core einen Neustart des PowerShell-Entwicklungsprojekts in Hinblick auf Plattformunabhängigkeit darstellt. In PowerShell Core fehlen viele Commandlets der Grundausstattung der Windows PowerShell (z.B. die Commandlets für EventLog, Clipboard, Transaktionen sowie die klassischen WMI-Commandlets und Out-GridView), und von den verfügbaren Erweiterungsmodulen laufen viele nicht auf PowerShell Core.

Zudem sind die Linux- und die MacOS-Version von PowerShell Core 6.0 auch gegenüber der Windows-Variante von PowerShell Core 6.0 in den Funktionen nochmals reduziert. So bietet die aktuelle Beta-Version von PowerShell Core auf Windows 460 Commandlets und Funktionen, während in Linux und MacOS nur 351 verfügbar sind (zum Teil, weil es äquivalente Systembausteine dort nicht gibt). So fehlen hier zum Beispiel auf Linux und MacOS:

Commandlets für lokale Benutzer und Gruppen, wie New-LocalUser, Get-LocalGroup, Enable-LocalUser u.a.
Alle Commandlets für Dienste, wie Get-Service, Start-Service, Stop-Service etc.
Alle CIM-Commandlets wie Get-CimInstance, Remove-CimInstance etc.
Nutzung von COM-Objekten mit dem Parameter -com im Commandlet New-Object
Alle File-Catalog-Commandlets (New-FileCatalog und Test-FileCatalog)
Alle Commandlets für Performance-Counter, wie Get-Counter und Export-Counter
Commandlets für Zugriffsrechtelisten: Get-Acl und Set-Acl
Rename-Computer, Restart-Computer, Stop-Computer, Get-ComputerInfo

Der Wert der PowerShell Core unter Linux und MacOS liegt zunächst also allenfalls in den mächtigen Pipelining- sowie Ein- und Ausgabe-Commandlets. Für konkrete Zugriffe auf das Betriebssystem hingegen gibt es für die PowerShell Core unter MacOS und Linux noch fast keine Commandlets. Man wird also hier immer klassische Linux- und MacOS-Kommandozeilenbefehle mit zeichenkettenbasierter Verarbeitung in die PowerShell einbinden müssen.

Beispiel: Die von cat aus der Datei passwd gelieferte Benutzerliste soll gefiltert und sortiert werden:
cat /etc/passwd | ConvertFrom-CSV -Delimiter ':' -Header Name,Passwd,UID,GID,Description,Home,Shell | Where-Object name -like "H*" | Sort-Object Name | Format-Table

Tipp: PowerShell Core stelle ich am 9.9.2017 auf der CIM Lingen 2017 vor.

Kostenloser Vortrag: "Eine 100-Millionen-Dollar-Cross-Plattform-App mit ASP.NET Core, Angular, Electron und Cordova" am 30.08.2017 18 Uhr in Ratingen (bei Düsseldorf)

Microsoft hat im Jahr 2015 über 100 Millionen Dollar für die App "Wunderlist" gezahlt. Ich habe in einem Fallbeispiel einen Großteil dieser App als HTML-basierte Cross-Platform-Lösung nachprogrammiert. Meine "Miraclelist" (www.miraclelist.de) läuft nicht nur im Browser, sondern auch als Desktop-Anwendung auf Windows und Linux sowie als App in iOS und Android. Auch das Backend ist Cross-Platform dank ASP.NET Core. An diesem User Group-Abend stelle ich diese Cross-Lösung vor und lege dabei besonderen Schwerpunkt auf die effiziente Realisierung des Clients mit Hilfe von TypeScript, Angular sowie dem Electron- und Cordova-Framework.

Datum: Mi, 30.08.2017
Uhrzeit: 18:00 bis ca. 20:30 Uhr
Ort: MT AG, Balcke-Dürr-Allee 9, 40882 Ratingen bei Düsseldorf

Die Teilnahme ist kostenfrei. Eine Online-Anmeldung ist jedoch zwingend erforderlich, damit ausreichend Sitzplätze zur Verfügung stehen.

Mein Buch zu Entity Framework Core 1.x und 2.0

Mein inkrementelles Buch zu Entity Framework Core ist mittlerweile auf rund 300 Seiten angewachsen und behandelt neben den Versionen 1.0 bis 1.1.2 auch schon die Version 2.0 des neuen Objekt-Relationalen Mappers von Microsoft.

Das Buch enthält in dieser Auflage nun alle wichtigen Szenarien des Datenbankzugriffs mit Entity Framework Core: Konzepte und Installation von Entity Framework Core, Reverse Engineering bestehender Datenbanken und Forward Engineering inkl. Schemamigrationen, Daten lesen und ändern mit LINQ, Dynamic LINQ, API, SQL, Stored Procedures und Table Value Functions, Objektbeziehungen und Ladestrategien, Change Tracking, Protokollierung, Datenänderungskonflikte, Transaktionen, Leistungsoptimierung, asynchrone Programmierung sowie die Zusatzwerkzeuge LINQPad, Entity Developer, Entity Framework Profile und AutoMapper. Auch der Einsatz von Entity Framework Core in der Softwarearchitektur wird diskutiert.

Das Buch richtet sich an Softwareentwickler, die bereits grundlegende Erfahrung mit .NET und C# sowie mit relationalen Datenbanken gesammelt haben und nun Entity Framework Core zur Erstellung von Datenzugriffscode in .NET, .NET Core und Xamarin einsetzen wollen. Vorkenntnisse in Vorgängerprodukten wie ADO.NET und ADO.NET Entity Framework sind zum Verständnis des Buchs nicht notwendig.

Bezugsquellen:

Im Herbst wird es ein weiteres Update zu dem Buch geben, dass Sie dann für ca. 8 bis 10 Dollar bei Leanpub.com erhalten können.

40% Rabatt auf (Rest-)Plätze für einige Seminare der .NET-Akademie im September 2017: C#, WPF, Xamarin, EF, ASP.NET MVC, WCF/WebAPI

Einige Plätze bei öffentlichen .NET-Seminaren im September 2017 in Essen vergibt die .NET-Akademie mit 40% Rabatt. Die jeweils dreitägigen Seminare kosten dann nur 959,40 € statt 1599,00 €. Das 2-Tages-Seminar dann 719,40 Euro statt 1199 Euro (gültig jeweils nur bei Anmeldung auf der Website mit Gutscheincode NL72-40 bis zum 24.08.2017 und nur für die Termine im September 2017).

Folgende Veranstaltungen sind jeweils nur für den Termin im September rabattiert:

Da die MVPs von www.IT-Visions.de natürlich immer am Puls der Zeit sind, können Sie selbstverständlich auch jetzt schon die aktuellsten Themen als Schulung oder Beratung buchen:

Leser-Website

Falls Sie eine technische Frage haben oder einen "Bug" in einem meiner Fachbücher finden sollten, nutzen Sie bitte die Leser-Website und die dortigen Foren. Ich freue mich über Ihr Feedback!

Informationen zu diesem Verteiler

Sie erhalten diese E-Mail, weil Sie sich auf www.dotnet-doktor.de, www.DOTNETFramework.de, www.windows-scripting.de oder www.IT-Visions.de mit der E-Mail-Adresse registriert haben, sich als Schulungsteilnehmer bei www.IT-Visions.de angemeldet haben oder Kontakt mit mir hatten.
Dieser Newsletter erscheint nur 3-4x pro Jahr. [Hier steht im versendeten Newsletter, wie man sich austragen kann]
Wenn Sie eine weitere/neue E-Mail-Adresse in den Verteiler aufnehmen wollen, besuchen Sie bitte:
http://www.dotnet-doktor.de/Formulare/NewsletterRegistrierung.aspx
Impressum
Verantwortlich für den Inhalt / Angaben gemäß § 5 TMG und § 55 Abs. 2 RStV:
Dr. Holger Schwichtenberg, Fahrenberg 40b, D-45257 Essen / Ruhrgebiet (Deutschland)
Sekretariat: 0201 7490-700 (Mo.-Fr. 9 bis 17 Uhr)
Telefax: 0201 7490-701
Link zum vollständigen Impressum
Link zum Haftungsausschluss und zur Datenschutzerklärung

Softwarearchitekt, Dozent und Autor mit Schwerpunkt Microsoft .NET und Web Mehr…

Mehr...

Mehr...

Mehr...