Core

Dans le doute reboot appliqué à .NET

François Bouteruche, @fbouteruche

.NET

Un peu d’histoire

13 février 2002

Et si on simplifiait le développement d’applications Windows et Web ?

.NET Framework 1.0 est né

Qu’est-ce que .NET ?

Un runtime et une API.

Quels langages peut-on utiliser avec .NET?

C#, F#, Visual Basic .NET, PHP (peachpie.io)

Qui est le concepteur principal de C# à l’origine ?

Anders Hejlsberg (Turbo Pascal, Delphi, Typescript…)

A quel langage C# a été longtemps comparé ?

Java

3 avril 2003, .NET Framework 1.1

Le runtime passe en version 1.1 (aïe)

Support d’IPv6, support d’ODBC et des bases de données Oracle…

22 janvier 2006, .NET Framework 2.0

Le runtime passe en version 2.0 (re-aïe)

Classes partielles, types nullable, méthodes anonymes, itérateurs, types génériques…

21 novembre 2006, .NET Framework 3.0

Et si on utilisait DirectX pour rendre les applications ?

Welcome Windows Presentation Foundation

Et si on supportait SOAP ?

Welcome Windows Communication Foundation

Et si on gérait des workflows ?

Welcome Workflow Foundation

5 septembre 2007

Et si on faisait notre propre Flash ?

Welcome Silverlight

(désolé)

19 novembre 2017, .NET Framework 3.5

Et si on requêtait des collections d’objets avec une syntaxe SQL-like ?

Welcome LINQ

(oh yeah!!!)

11 août 2008, .NET Framework 3.5 SP1

Dis-donc, c’est bien hibernate ! Et si on développait un ORM ?

Welcome Entity Framework 1.0

(epic fail pour la v1)

13 mars 2009

Et si on arrêtait avec les ViewState de WebForms ?

Welcome ASP.NET MVC 1.0

(oui !!! en route vers une plateforme web moderne !)

12 avril 2010, .NET Framework 4.0

Le runtime passe en version 4.0 (re-re-aïe)

Parallel Extensions, Parallel LINQ, Task Parallel Libray, Code Contracts…

15 août 2012, .NET Framework 4.5

Et si on gérait correctement les API REST ?

Welcome ASP.NET Web API

17 ans plus tard, ça donne quoi ?

un empilement de couche géologique

12 mai 2014

Annonce de ASP.NET vNext


Please wait while rebooting the system...

27 juin 2016

Core is alive !



C’est pareil mais différent

Pourquoi rebooter ?

Open source

Cross-platforme

Flexible

Performant

Tout terrain

Open Source





61000 contributeurs

3700 compagnies

56 projets actifs

Cross-Platforme

Flexible

Performant

Tech Empower Web Framework Benchmark Round 18 07-09-2019 sur 201 frameworks

Test Physical Cloud
JSON Serialization best position 33 11
# in Top 15 0 1
% of the best 94.1% (10th 98.9%) 89.1% (10th 89.7%)
Single Queries best position 32 28
# in Top 15 0 0
% of the best 41.5% (10th 57.1%) 47.7% (10th 53.2%)
Multiples Queries best position 37 18
# in Top 15 0 0
% of the best 53.2% (10th 67.1%) 47.% (10th 64.2%)
Fortunes best position 14 13
# in Top 15 1 2
% of the best 42.8% (10th 46.8%) 49.6% (10th 51.6%)
Data Updates best position 9 8
# in Top 15 4 4
% of the best 75.7% (10th 73.0%) 68.4% (10th 66.3%)
Plain Text best position 10 7
# in Top 15 2 2
% of the best 99.8% (10th 99.8%) 75.4% (10th 65.0%)

Tout terrain

C’est bien mais ça sert à quoi ?

concrètement pour .NET Core 3.0

  • Support de C# 8
  • Executable dépendant du runtime par défault
  • Un unique fichier exécutable en option
  • Réduction de la taille des apps avec IL Linker
  • Compilation par niveaux
  • Local tools
  • Major-version Roll Forward
  • Async streams
  • Windows Desktop : WinForms et WPF
  • Et bien plus…

What’s next ?

3 implémentations du runtime

.NET Standard

.NET 5 : on unifie

Une version tous les ans

Une LTS tous les 2 ans

That’s all folks !