SlideShare une entreprise Scribd logo
1  sur  320
Télécharger pour lire hors ligne
01/06/2016
1
Formation Programmer en C# 6 alphorm.com™©
Formation
C# 6.0
Avancée
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
2
Formation Programmer en C# 6 alphorm.com™©
Plan
• Présentation du formateur
• Présentation du plan de formation
• Connaissances requises
• Publics concernés
• Liens utiles
01/06/2016
2
Formation Programmer en C# 6 alphorm.com™©
Plan
• Présentation du formateur
• Présentation du plan de formation
• Connaissances requises
• Publics concernés
• Liens utiles
01/06/2016
4
Formation Programmer en C# 6 alphorm.com™©
Mes formations sur Alphorm
01/06/2016
5
Formation Programmer en C# 6 alphorm.com™©
Présentation du plan de formation
• Le spectre d'évolution du C# du 2.0 au 6.0
• Les nouveautés apportées avec le .Net Framework 4.6
• Le Scriptcs Engine
• Le Roslyn
• Le C# 6.0 et le Cloud une introduction
• Un ensemble d’études de cas: Scriptcs, Les types, Les collections, La
sérialisation, LINQ, Réflexion, Programmation dynamique, Threading,
Interopérabilité, Base de données
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
7
Formation Programmer en C# 6 alphorm.com™©
Public concernés
• Cette formation cible
Les professionnels et développeurs qui ont déjà un niveau intermédiaire en
terme de C# et du .Net Framework qui cherchent une mise à niveau de leurs
connaissances en terme de nouveautés C# 6.0 et .Net Framework 4.6
Les professionnels et développeurs expérimentés qui sont issus d’autres
environnements tels que java, C++ et Linux, et qui veulent s’adapter au
développement C#
Les étudiants et les élèves ingénieurs qui ont déjà travaillé sur la plateforme
.Net Framework et notamment les versions C# antérieures
Les personnes en stage et qui veulent booster leurs carrières professionnelles
à condition qu’ils aillent un niveau intermédiaire aux moins en terme de
développement C#
01/06/2016
8
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mes articles
http://www.c-sharpcorner.com/members/bechir-bejaoui2
01/06/2016
9
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe Facebook C#
http://www.facebook.com/groups/csharp.programming/
01/06/2016
10
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe ma chaine Youtube
http://www.youtube.com/user/margoumix
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
3
Formation Programmer en C# 6 alphorm.com™©
Pésentation du formateur
Béchir Béjaoui
• Consultant et expert certifié en infrastructure réseau, développement des
solutions distribuées et Business Intelligence
• Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées
.net 3.5, MCSD Team Fondation Server , MCTS
• Mes références :
Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b
Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir-
bejaoui.aspx
Profil MSDN: social.msdn.microsoft.com/profile/masnsn
Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
01/06/2016
3
Formation Programmer en C# 6 alphorm.com™©
Pésentation du formateur
Béchir Béjaoui
• Consultant et expert certifié en infrastructure réseau, développement des
solutions distribuées et Business Intelligence
• Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées
.net 3.5, MCSD Team Fondation Server , MCTS
• Mes références :
Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b
Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir-
bejaoui.aspx
Profil MSDN: social.msdn.microsoft.com/profile/masnsn
Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
01/06/2016
3
Formation Programmer en C# 6 alphorm.com™©
Pésentation du formateur
Béchir Béjaoui
• Consultant et expert certifié en infrastructure réseau, développement des
solutions distribuées et Business Intelligence
• Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées
.net 3.5, MCSD Team Fondation Server , MCTS
• Mes références :
Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b
Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir-
bejaoui.aspx
Profil MSDN: social.msdn.microsoft.com/profile/masnsn
Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
01/06/2016
3
Formation Programmer en C# 6 alphorm.com™©
Pésentation du formateur
Béchir Béjaoui
• Consultant et expert certifié en infrastructure réseau, développement des
solutions distribuées et Business Intelligence
• Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées
.net 3.5, MCSD Team Fondation Server , MCTS
• Mes références :
Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b
Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir-
bejaoui.aspx
Profil MSDN: social.msdn.microsoft.com/profile/masnsn
Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
01/06/2016
16
Formation Programmer en C# 6 alphorm.com™©
Les types génériques
• Les avantages d’utilisation des génériques dans le code sont
principalement :
La réutilisation du code
Plus de contrôle sur les types d’éléments au niveau des collections et les méthodes à
travers les contraintes
La performance sur le plan d’utilisation des listes en évitant les opérations du
boxing/unboxing faite à chaque itération pour le cas des listes non génériques
01/06/2016
17
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les types Génériques
01/06/2016
18
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 2.0 Partie II
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
19
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les types Nullables
• Les itérateurs
01/06/2016
20
Formation Programmer en C# 6 alphorm.com™©
Les types Nullables
• Ils sont des types issus de la structure Nullable<T>
• Se sont des types qui peuvent stocker des valeurs nulles pour les types
valeur comme les entiers, les flottants et les doubles
• Ils sont principalement utilisés pour représenter les valeurs Nulles au
niveau des bases de données pour ces types valeur
• Ils sont définis selon les deux formes
En utilisant un point d’interrogation qui précède le type
En utilisant cette forme
01/06/2016
21
Formation Programmer en C# 6 alphorm.com™©
Les itérateurs
• Les itérateurs permettent de mieux gérer les itérations des éléments
d’une collection donnée
• Un itérateur selon MSDN est défini comme une méthode, un accesseur
ou un opérateur qui permet de réaliser une récurrence personnalisée
• Le mot clé « yield » permet d’itérer à travers une collection donnée
pour retourner un ensemble d’éléments au niveau d’une fonction :
Cas d’utilisation de yield pour itérer une collection
01/06/2016
22
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les types Nullables
• Les itérateurs
01/06/2016
23
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 2.0 Partie III
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
24
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les classes partielles
• Les classes statiques
• Les méthodes anonymes
01/06/2016
25
Formation Programmer en C# 6 alphorm.com™©
Les classes partielles
• Les classes partielles sont des classes qui peuvent être fragmentées sur
plusieurs fichiers .cs
• Les classes partielles sont indispensables pour les projets collaboratifs
de taille considérable
• Le mot clé « partial » doit précéder la classe pour la marquer comme
classe partielle
• Il est possible aussi de créer des structures et des interfaces partielles
01/06/2016
26
Formation Programmer en C# 6 alphorm.com™©
Les classes statiques
• Les classes statiques sont principalement des conteneurs logiques des
méthodes statiques
• Les classes statiques ne sont pas « instanciables » comme les classes
non statiques
• L’aspect bénéfique de ces classes, c’est qu’elles peuvent être partagées
en différents niveaux du code sans le besoin de créer de nouvelles
instances ce qui facilite l’implémentation de certain « Patterns »
Exemple de classe statique
01/06/2016
27
Formation Programmer en C# 6 alphorm.com™©
Les méthodes anonymes
• Une méthode anonyme est principalement considérée comme un
bloque d’instructions qui peut être injecté en amont au niveau des
arguments d’une autre méthode
Exemple d’utilisation des méthodes anonymes
01/06/2016
28
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les classes partielles
• Les classes statiques
• Les méthodes anonymes
01/06/2016
29
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie I
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
30
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les initiateurs d’objets
• Les initiateurs de collections
• Les types implicites
01/06/2016
31
Formation Programmer en C# 6 alphorm.com™©
Les initiateurs d’objets
• Les initiateurs d’objets prennent une nouvelle forme différente que celle
adoptée en C# 2.0 et versions antérieures
La forme des initiateurs
précédemment
La forme des initiateurs
en mode C# 3.0
01/06/2016
32
Formation Programmer en C# 6 alphorm.com™©
Les initiateurs de collections
• Les initiateurs de collections prennent une nouvelle forme, il est
désormais possible d’adopter la forme ci-dessous
La forme des initiateurs de collections en mode C# 3.0
01/06/2016
33
Formation Programmer en C# 6 alphorm.com™©
Les types implicites
• Les types implicites sont essentiellement utilisés sous forme de variables
locales pour inférer les types déjà définis
La définition d’une variable
locale anonyme
La définition de la même
variable en mode CIL
01/06/2016
34
Formation Programmer en C# 6 alphorm.com™©
Les types implicites
• Les types implicites sont aussi utilisés dans un contexte de requêtes
LINQ « Language Integrated Query » pour définir des types anonymes à
la volée
La définition d’un type anonyme dans un contexte de LINQ
01/06/2016
35
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les initiateurs d’objets
• Les initiateurs de collections
• Les types implicites
01/06/2016
36
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie II
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
37
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les méthodes extensions
01/06/2016
38
Formation Programmer en C# 6 alphorm.com™©
Les méthodes extensions
• Les méthodes extensions permettent d’étendre des types déjà définis
dont le code source n’est plus accessible par principe d’encapsulation
• Il n’aura pas de soucis pour les classes dont l’héritage est permis, par
contre il le sera pour les classes marquées par le mot clé « sealed »
Exemple de définition d’une méthode extension
01/06/2016
39
Formation Programmer en C# 6 alphorm.com™©
Les méthodes extensions
• En cas de coexistence de deux méthodes une originale et une méthode
extension qui ont la même signature alors au moment de l’appel la
priorité sera pour la méthode originale définie au niveau de la classe
cible
• En cas de coexistence de deux méthodes extensions portant la même
signature, une fait partie du namespace au quel la classe cible fait partie
et l’autre fait partie d’un namespace différent, dans ce cas, la première
aura la priorité au moment de l’appel
• En cas de coexistence de plusieurs méthodes extensions pour la même
classe et qui ont la même signature mais qui font partie de namespace
différents, en ce moment, il aura un conflit d’appel et une erreur au
moment de la compilation sera levée
Exemple de définition d’une méthode extension
01/06/2016
40
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les méthodes extensions
01/06/2016
41
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie III
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
42
Formation Programmer en C# 6 alphorm.com™©
Plan
• Le LINQ
01/06/2016
43
Formation Programmer en C# 6 alphorm.com™©
Le LINQ
• C’est l’acronyme de «Language Integrated Query»
• C’est un ORM « Object Relational Mapping » nouvellement introduit à
partir de C# 3.0
• Cet ORM ajoute des capacités d'interrogation sur des données au C# en
utilisant une syntaxe proche de celle de SQL « Select Query Language »
utilisé essentiellement dans le cadre des bases de données
relationnelles
• LINQ définit un ensemble d’opérateurs de requêtes qui peuvent être
utilisés pour effectuer des requêtes, filtrer et projeter des données au
niveau de plusieurs structures et conteneurs de données tel que les
bases de données, les fichiers DOM « Document Object Models » ….
01/06/2016
44
Formation Programmer en C# 6 alphorm.com™©
Le LINQ
• Le LINQ représente une variété de fournisseurs pour gérer les données
LINQ to Object
LINQ to SQL
LINQ to Entities « Entity Framework 5.x/6»
LINQ to XML
LINQ to quelques choses …..
• Dans ce dernier cas, il est possible de créer un fournisseur LINQ
personnalisé pour accéder à un conteneur de données particulier par
exemple LINQ to LDAP, LINQ to Tweeter, LINQ to Facebook, LINQ to
Google Maps
01/06/2016
45
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Le LINQ
01/06/2016
46
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie IV
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
47
Formation Programmer en C# 6 alphorm.com™©
Plan
• Le LINQ to SQL
01/06/2016
48
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Le LINQ to SQL
01/06/2016
49
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie IV
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
50
Formation Programmer en C# 6 alphorm.com™©
Plan
• Le LINQ to Entities
01/06/2016
51
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Le LINQ to Entities
01/06/2016
52
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie V
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
53
Formation Programmer en C# 6 alphorm.com™©
Plan
• Le LINQ to XML
01/06/2016
54
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Le LINQ to XML
01/06/2016
55
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie VI
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
56
Formation Programmer en C# 6 alphorm.com™©
Plan
• La jointure en mode LINQ
01/06/2016
57
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La jointure en mode LINQ
01/06/2016
58
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 3.0 Partie VII
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
59
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les expressions Lambda
• Les méthodes partielles
01/06/2016
60
Formation Programmer en C# 6 alphorm.com™©
Les expressions Lambda
• Il est possible de qualifier les expressions Lambda comme les
descendants des méthodes anonymes
• Elles sont essentiellement implémentées dans un contexte LINQ
« Language Integrated Query » comme filtres de requêtes
Une approche de comparaison des méthodes anonymes
et les expressions Lambda
01/06/2016
61
Formation Programmer en C# 6 alphorm.com™©
Les méthodes partielles
• La notion des méthodes partielles est similaire à celle de classes
partielles au niveau de la version C# 2.0
• Dans un contexte C# 2.0 il n’est pas possible de diviser le code d’une
méthode sur plusieurs fichiers .cs pourtant il est possible de le faire au
niveau des classes
• Une méthode partielle pourra ne pas avoir une implémentation à un
niveau donné, mais elle ne sera exécutée proprement que lorsqu’elle
admet une implémentation
• Une méthode partielle est marquée par le mot clé « partial », elle doit
être privée et ne retourne aucune valeur « void »
01/06/2016
62
Formation Programmer en C# 6 alphorm.com™©
Les méthodes partielles
• Les méthodes partielles sont uniquement définies au niveau des classes
partielles
• Les types d’arguments « out » sont interdits lors du passage des
arguments par référence, par conséquent, seul le mot clé « ref » pourra
être utilisé dans ce cas
• Il n’est pas possible de pointer un type DELEGATE vers une méthode
partielle
• Les méthodes partielles peuvent être statiques, elles peuvent aussi
utiliser des types génériques
01/06/2016
63
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les expressions Lambda
• Les méthodes partielles
01/06/2016
64
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 4.0 Partie I
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
65
Formation Programmer en C# 6 alphorm.com™©
Plan
• La programmation dynamique
01/06/2016
66
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
• La programmation dynamique est la fonctionnalité majeure
introduite par la .Net Framework 4.0
• La programmation dynamique veut dire utiliser une entité qui n’est
pas définie en temps de compilation comme un objet de type bien
défini
• La programmation dynamique résout beaucoup de soucis en relation
avec les objets qui n’ont pas une forme déterminée jusqu’au moment
de l’exécution du programme
• On prends comme exemple les structures d’objets définis au niveau
des structures XML souvent complexes et surtout variables
• Ou encore les classes définies dans d’autres environnements de
programmations et dont on veut les importer dans le contexte CLR
01/06/2016
67
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
• La programmation dynamique nécessite le DLR « Dynamic Language
Runtime » qui est une couche située au dessus du CLR « Common
language Runtime »
• Le DLR utilise des classes CallSite<T> pour représenter les types
dynamiques dont la création se fait lors de l’exécution
• La famille des classes dites Binders dont le nom finit toujours par Binder
sont dérivées de la classe Binder qui assure une liaison tardive. Cette
liaison permet de définir les types dynamiques au moment de
l’exécution
01/06/2016
68
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
C# VB.NET
Dynamic Language
Runtime
Common Language
Runtime
.Net
DOM
Script
Engines
Expression
Tree
CallSite
<T>
Position du DLR dans la plateforme .Net
Binder
01/06/2016
69
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La programmation dynamique
01/06/2016
70
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 4.0 Partie II
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
71
Formation Programmer en C# 6 alphorm.com™©
Plan
• La programmation dynamique
01/06/2016
72
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La programmation dynamique
01/06/2016
73
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 4.0 Partie III
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
74
Formation Programmer en C# 6 alphorm.com™©
Plan
• La programmation dynamique
01/06/2016
75
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
• Les classes ExpandoObject et DynamicObject sont les principales
implémentations de l’interface IDynamicMetaObjectProvider. Elles
permettent la création des objets dynamiques qui sont définis par le
mot clé dynamic
L’interface IDynamicMetaObjectProvider
01/06/2016
4
Formation Programmer en C# 6 alphorm.com™©
Mes formations sur Alphorm
01/06/2016
77
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
Comportement Implémente l’interface
INotifyPropertyChanged
N’implémente pas l’interface
INotifyPropertyChanged
Les méthodes Possible de définir des
méthodes
-
Les événements Possible de définir des
événements -
Tableau comparatif entre l’utilisation d’un dictionnaire et un
ExpandoObject (La suite)
01/06/2016
78
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
• La classe ExpandoObject est utilisée pour les cas de figures simples de
définition des objets dynamiques
• Cependant, la classe DynamicObject est utilisée pour des scenarii
encore plus avancés
• L’utilisation de DynamicObject ne se fait pas directement mais à travers
la définition d’une classe qui hérite de DynamicObject
• En suite, il faut ajouter la logique désirée à travers la réécriture de l’une
ou de l’ensemble de ces méthodes
01/06/2016
79
Formation Programmer en C# 6 alphorm.com™©
La programmation dynamique
Les méthodes à implémenter en cas d’utilisation de DynamicObject
TryInvokeMember Lors de l’appel d’une méthode
TryGetMember Lors de l’appel de l’accesseur GET de propriété
TrySetMember Lors de l’appel de l’accesseur SET de propriété
TryGetIndex Lors de l’appel de l’accesseur GET de l’indexeur
TrySetIndex Lors de l’appel de l’accesseur SET de l’indexeur
TryUnaryOperation Lors de l’appel d’une opération unaire tél que ++,+=, !
TryBinaryOperation Lors de l’appel d’une opération binaire tél que +, -, *, !=
TryConvert Lors de la conversion de l’objet dynamique
TryInvoke Lors de l’instanciation de l’objet dynamique
01/06/2016
80
Formation Programmer en C# 6 alphorm.com™©
• Voir plus de détails sur la programmation dynamique, je vous invite à lire
mon article « Toying with C# 4.0 » publié en 2010 à c-sharpcorner.com
01/06/2016
81
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La programmation dynamique
01/06/2016
82
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 4.0 Partie IV
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
83
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les paramètres optionnels
• Les arguments nommés
01/06/2016
84
Formation Programmer en C# 6 alphorm.com™©
Les paramètres optionnels
• Les paramètres optionnels donnent aux programmeurs le choix d’ entrer ou pas
les valeurs des arguments d’une méthode lors de son appel à condition que des
valeurs par défaut soient initialement attribuées lors de la définition de ces
méthodes en question
• Si aucune valeur n’est définie lors de l’appel, cette valeur par défaut sera utilisée
automatiquement
Exemple de définition des paramètres optionnels
01/06/2016
85
Formation Programmer en C# 6 alphorm.com™©
Les paramètres optionnels
• Les paramètres optionnels doivent apparaître au dernières positions après les
paramètres non optionnels
• Sinon une erreur sera levée dans le cas contraire
L’erreur CS1737 suite au non respect de la définition des paramètres optionnels
01/06/2016
86
Formation Programmer en C# 6 alphorm.com™©
Les arguments nommés
Exemple de définition des arguments nommés
• Les arguments nommés facilitent la vie au programmateur qui connaît les
arguments au sein d’une méthode mais qui ne sait pas leurs ordres
01/06/2016
87
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les paramètres optionnels
• Les arguments nommés
01/06/2016
88
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 4.0 Partie V
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
89
Formation Programmer en C# 6 alphorm.com™©
Plan
• La variance des génériques
01/06/2016
90
Formation Programmer en C# 6 alphorm.com™©
La variance des génériques
• Elle est inspirée de la théorie des catégories, c’est une théorie d’origine
mathématique qui assume que si un type A est convertible en type B, il
sera possible d’utiliser ce dernier au lieu du type A ou utiliser le type A
tout simplement
• Elle est déjà appliquée pour le cas des anciennes collections tel que
ArrayList mais elle n’est pas du tout Safe
• Les types génériques qui sont introduit à partir de la version C# 2.0 sont
strictement invariants
• La variance n’est appliquée qu’au types dont la conversion de l’un vers
l’autre est possible.
01/06/2016
91
Formation Programmer en C# 6 alphorm.com™©
La variance des génériques
• La variance des génériques est divisée en deux catégories à savoir, la
Covariance et la Contravariance
Exemple de Covariance Exemple de Contravariance
01/06/2016
92
Formation Programmer en C# 6 alphorm.com™©
La variance des génériques
Exemple d’utilisation de la covariance l’interface IComparable<T>
Exemple d’utilisation de Contravariance l’interface IEnumerable< T>
01/06/2016
93
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La variance des génériques
01/06/2016
94
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 4.0 Partie VI
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
95
Formation Programmer en C# 6 alphorm.com™©
Plan
• La classe Task
• La gestion des exceptions issues de Task
• L’annulation de Task
• La programmation parallèle
• Nouvelles collections supportant la multithreading
01/06/2016
96
Formation Programmer en C# 6 alphorm.com™©
La classe Task
• L'espace de noms System.Threading.Tasks fournit les types qui
simplifient le travail d'écriture du code simultané.
Il existe plusieurs raisons de préférer les Task au lieu des Thread
Les Task utilisent le TheradPool du CLR d’une manière directe ce qui rend leur
utilisation plus performante
Il est désormais possible l’achèvement d’un Task sans avoir recourt à un signal comme
il est le cas pour les Thread
Il est possible d’organiser les Task pour les enchainer les uns après les autres, la
relation entre les Task est considérée une relation Père/Fils dans ce contexte
Le Task représente une abstraction plus élevée par conséquent il est plus simple de
l’utiliser que le Thread
01/06/2016
97
Formation Programmer en C# 6 alphorm.com™©
La classe Task
• Une tâche qui retourne aucune valeur est représentée par la classe
System.Threading.Tasks.Task
• Une tâche qui retourne une valeur est représentée par la classe
System.Threading.Tasks.Task<TResult>, qui hérite de Task.
01/06/2016
98
Formation Programmer en C# 6 alphorm.com™©
La classe Task
• Une tâche de continuation est une tâche asynchrone appelée par une
autre tâche, également appelée antécédent lorsque ce dernier est
terminé.
01/06/2016
99
Formation Programmer en C# 6 alphorm.com™©
La gestion des exceptions issues de Task
• Les exceptions sont propagées lorsque vous utilisez l'une des méthodes
statiques ou d'instance Task.Wait ou Task<TResult>.Wait et lorsque vous les
gérer en incluant l'appel dans une instruction try-catch.
• Si une exception non gérée est levée , l'exception ne sera pas apparente
directement, elle sera stockée dans une collection d’exceptions membre de
AggregateException
• Lorsque la méthode Wait ou la propriété Résultat est invoquée , une
AggregateException sera levée dans ce cas
• La propriété InnnerExceptions permet de collecter les données sur les
exceptions qui sont levées au cour d’exécution de la tâche
01/06/2016
5
Formation Programmer en C# 6 alphorm.com™©
Présentation du plan de formation
• Le spectre d'évolution du C# du 2.0 au 6.0
• Les nouveautés apportées avec le .Net Framework 4.6
• Le Scriptcs Engine
• Le Roslyn
• Le C# 6.0 et le Cloud une introduction
• Un ensemble d’études de cas: Scriptcs, Les types, Les collections, La
sérialisation, LINQ, Réflexion, Programmation dynamique, Threading,
Interopérabilité, Base de données
01/06/2016
101
Formation Programmer en C# 6 alphorm.com™©
La gestion des exceptions issues de Task
Une méthode à déclenchement
potentiel d’erreur
La gestion de l’erreur dans un contexte task
Une alternative qui utilise la prédicat
Handle de l’exception AgregateException
01/06/2016
102
Formation Programmer en C# 6 alphorm.com™©
L’annulation de Task
• Il est possible de forcer l’annulation d’un Task même sans levée d’exception à
l’aide des objets du type CancellationToken et CancellationTokenSource
• La classe CancellationTokenSource
01/06/2016
103
Formation Programmer en C# 6 alphorm.com™©
L’annulation de Task
La structure CancellationToken
01/06/2016
104
Formation Programmer en C# 6 alphorm.com™©
L’annulation de Task
• Tout d’abord, il faut ajouter un objet CancellationToken comme paramètre au
niveau de la méthode cible
• Il faut appeler la méthode ThrowIfCancellationRequested si une condition
d’annulation est vraie
01/06/2016
105
Formation Programmer en C# 6 alphorm.com™©
L’annulation de Task
• D’autre part, Il faut forcer l’annulation à travers l’appel de la méthode Cancel de
l’objet CancellationTokenSource définie dans le code appelant
01/06/2016
106
Formation Programmer en C# 6 alphorm.com™©
La programmation parallèle
• La bibliothèque de tâches parallèles (TPL) supporte le parallélisme de traitement
des données avec la classe System.Threading.Tasks.Parallel.
• La méthode Parallel.Invoke offre un moyen pratique d'exécuter simultanément
un nombre d'instructions arbitraires. Pour cela, on pourra passer pour chaque
élément de travail un délégué Action ou une expression lambda qui appelle une
méthode nommée ou fournit un code Inline.
01/06/2016
107
Formation Programmer en C# 6 alphorm.com™©
La programmation parallèle
• La classe System.Threading.Tasks.Parallel fournit aussi des implémentations
parallèles basées sur la méthode des boucles for et foreach .
01/06/2016
108
Formation Programmer en C# 6 alphorm.com™©
Nouvelles collections supportant le multithreading
• Le .NET Framework 4 introduit l'espace de
noms System.Collections.Concurrent qui inclut plusieurs classes de
collections qui sont à la fois thread-safe et évolutives
• Plusieurs threads peuvent, sans risque et de façon efficace, ajouter ou
supprimer des éléments de ces collections sans extra code
• Pour lire les données d’une manière concurrentielle, il suffit d’utiliser les
collections génériques classiques
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
6
Formation Programmer en C# 6 alphorm.com™©
Connaissances requises
• Il est à noter que cette formation ne représente pas un cours magistral
de C# et du .Net Framework, c’est une formation avancée fortement
orientée pratique C#
• Cette formation n’est pas orientée vers les débutants en terme du .Net
Framework et du C#
• Par conséquent, le public concerné doit avoir des connaissances
intermédiaires au moins en terme de programmation et notamment C#
• La connaissance d’utilisation d’un environnement de développement
principalement Visual Studio ou autre IDE qui supporte au moins C#
4.0/5.0 est indispensable
01/06/2016
118
Formation Programmer en C# 6 alphorm.com™©
Les fonctions asynchrones
Exemple du code appelant
01/06/2016
119
Formation Programmer en C# 6 alphorm.com™©
Les classes CallerMemberName, CallerFilePath et CallerLineNumber
• Les classes attributs facilitent la vie des développeurs en phase de test
de leurs code en permettant d’avoir
Le nom de l’appelant qui est essentiellement le nom d’une méthode
Le fichier qui contient cette méthode appelante
Le numéro de ligne où la méthode appelée est invoquée
01/06/2016
120
Formation Programmer en C# 6 alphorm.com™©
Les classes CallerMemberName, CallerFilePath et CallerLineNumber
• Pour profiter de cette fonctionnalité, la seule manière est de définir des
arguments optionnels à la fin de la méthode cible de débogage et les
marquer par l’un des attributs requis
Un exemple illustratif d’utilisation
01/06/2016
121
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La nouvelle forme des fonctions asynchrones async/await
• Les classes CallerMemberName, CallerFilePath et CallerLineNumber
01/06/2016
122
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 6.0 Partie I
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
123
Formation Programmer en C# 6 alphorm.com™©
Plan
• L’opérateur Nul ou « Elvis »
• La nouvelle présentation de la chaine formatée
• Les auto-initiateurs des propriétés
• L’expression « Nameof »
• Les imports statiques
01/06/2016
124
Formation Programmer en C# 6 alphorm.com™©
L’opérateur Nul ou « Elvis »
• Cet opérateur peut réduire le code en terme de quantité d’une manière
efficace
Les versions précédentes C# La version C# 6.0
01/06/2016
125
Formation Programmer en C# 6 alphorm.com™©
La nouvelle présentation de la chaine formatée
• Les développeurs C# connaissent déjà la méthode « format » qui est
utilisée pour représenter une chaine de caractères sous une forme
personnalisée
• La méthode format pourra être substituée par le nouveau opérateur
« $ »
La différence de techniques de formatage de chaines entre C#6.0
et les versions précédentes C#
01/06/2016
126
Formation Programmer en C# 6 alphorm.com™©
Les auto-initiateurs des propriétés
• Après la fonctionnalité des arguments optionnels introduite au niveau
du C# 4.0 et qui donne une valeur par défaut aux arguments au niveau
d’une méthode, les auto-initiateurs des propriétés permettent
d’attribuer une valeur par défaut mais au niveau des propriétés cette
fois-ci.
• Voici un exemple qui illustre le cas d’utilisation d’un auto-initiateur pour
une propriété du type date :
01/06/2016
127
Formation Programmer en C# 6 alphorm.com™©
L’expression nameof
• L’opérateur « nameof » est nouveau dans C# 6.0, il permet de retourner
le nom d’une variable bien évidement sous forme de chaine de
caractères
• Dans les versions précédentes les développeurs sont obligés de passer
par l’écriture des utilitaires pour arriver au même résultat atteint via
l’opérateur «nameof»
L’une des méthodes utilisée précédemment
01/06/2016
7
Formation Programmer en C# 6 alphorm.com™©
Public concernés
• Cette formation cible
Les professionnels et développeurs qui ont déjà un niveau intermédiaire en
terme de C# et du .Net Framework qui cherchent une mise à niveau de leurs
connaissances en terme de nouveautés C# 6.0 et .Net Framework 4.6
Les professionnels et développeurs expérimentés qui sont issus d’autres
environnements tels que java, C++ et Linux, et qui veulent s’adapter au
développement C#
Les étudiants et les élèves ingénieurs qui ont déjà travaillé sur la plateforme
.Net Framework et notamment les versions C# antérieures
Les personnes en stage et qui veulent booster leurs carrières professionnelles
à condition qu’ils aillent un niveau intermédiaire aux moins en terme de
développement C#
01/06/2016
129
Formation Programmer en C# 6 alphorm.com™©
Les imports statiques
• Dans certains cas, l’utilisation des membres d’une classe statique est
nécessaire
• L’appel des membres se fait alors selon la forme suivante
« Nom de classe » . « Nom du membre »
• Exemple :
01/06/2016
130
Formation Programmer en C# 6 alphorm.com™©
Les imports statiques
• C# 6.0 rend possible l’écriture suivante
• A condition d’ajouter la référence suivante au niveau des imports
01/06/2016
131
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• L’opérateur Null ou « Elvis »
• La nouvelle présentation de la chaine formatée
• Les auto-initiateurs des propriétés
• L’expression « Nameof »
• Les imports statiques
01/06/2016
132
Formation Programmer en C# 6 alphorm.com™©
Les fonctionnalités
C# 6.0 Partie II
Le spectre d’évolution C#
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
133
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les expressions « Bodied »
• Les initiateurs de dictionnaire
• Le block « finally » pour l’appel asynchrone « await »
• Les filtres d’exceptions
01/06/2016
134
Formation Programmer en C# 6 alphorm.com™©
Les expressions Bodied
• Les expressions Bodied permettent au
Les propriétés
Les fonctions à valeur de retour unique
Les opérateurs
Les indexeurs
d’avoir leurs valeurs relatives affectées sous forme des expressions
lambda
• Le but étant toujours d’améliorer la qualité du code tout en prenant
l’aspect performance en considération
01/06/2016
135
Formation Programmer en C# 6 alphorm.com™©
Les expressions Bodied
Quelques exemples des expressions « Bodied »
()
01/06/2016
136
Formation Programmer en C# 6 alphorm.com™©
Les initiateurs de dictionnaires
• Les initiateurs de dictionnaires permettent une nouvelle forme
d’initiation encore beaucoup plus simple
01/06/2016
137
Formation Programmer en C# 6 alphorm.com™©
Le bloque finally pour l’appel asynchrone « await »
• La méthode d’appels asynchrones telle qu’elle est introduite en C# 5.0
utilise « async » et « await » pour appeler les services
• Au cas où une exception est levée, il est de bonne pratique d’imbriquer
le code susceptible dans un bloque try … catch ….
• Parfois, il s’avère nécessaire d’exécuter des instructions quelque soit la
situation en cas du déclenchement d’une exception ou pas
• Tel est le cas de libération des ressources, ou de connexion à une base
de données
• Dans le cas du C# 5.0, il est nécessaire de libérer les ressources au
niveau des deux bloques de code à savoir le bloque principal et le
bloque d’exception
01/06/2016
138
Formation Programmer en C# 6 alphorm.com™©
Le bloque finally pour l’appel asynchrone « await »
• Dans le cas du C# 6.0 il devient possible de placer ce code dupliqué au
niveau d’un bloque « finally »
La gestion du try … catch … en
mode C#5.0 pour le cas du await
La gestion du try … catch … en
mode C#6.0 pour le cas du await
01/06/2016
139
Formation Programmer en C# 6 alphorm.com™©
Les filtres d’exceptions
• Les filtres d’exceptions permettent de définir des conditions d’exécution
de codes des scénarii alternatifs lors de la levée d’une exception
• Cela permet une gestion beaucoup
plus granulaire des situations qui
ont déclenché une ou plusieurs
exceptions
Une hiérarchie d’exceptions
01/06/2016
8
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mes articles
http://www.c-sharpcorner.com/members/bechir-bejaoui2
01/06/2016
141
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les expressions « Bodied »
• Les initiateurs de dictionnaire
• Le block « finally » pour l’appel asynchrone « await »
• Les filtres d’exceptions
01/06/2016
142
Formation Programmer en C# 6 alphorm.com™©
Présentation de
.Net Framework 4.6
.Net Framework & .Net Core
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
143
Formation Programmer en C# 6 alphorm.com™©
Plan
• Présentation de la .Net Framework
• Introduction des nouveautés de la .Net Framework 4.6
01/06/2016
144
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
• Le principal composant du .Net Framework pourra être considéré tout
simplement comme une vaste collection de types managés qui sont
répartis d’une manière hiérarchique sous forme d’espaces de noms qui
représentent une sorte de conteneurs logiques pour ces types et pour
d’autres espaces de noms aussi
Structure hiérarchique des principaux types prédéfinis au niveau du .Net Framework
01/06/2016
145
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
• Cependant, côté physique il s’agit plutôt de DLL « Dynamic Library
Link » ou « Assemblys » qui peuvent être considérés comme des fichiers
de package
• Le deuxième majeur composant de la .Net Framework c’est le CLR « Le
« Common Language Runtime » qui pourra être définit comme une
petite machine virtuelle responsable d’exécution des programmes issus
des codes managés
Code source
Itermediate
Language
Exe ou DLL
01/06/2016
146
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
C# VB C++ Autre
Compilation
Code en mode Intermediate Language
Just In Time
Code natif
Le CLR
Schéma illustratif de transformation du code écrit en code natif
01/06/2016
147
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
• Le cœur de la .Net Framework réside dans l’Assembly nommé
mscorlib.dll
• Cet Assembly contient les types prédéfinis qui traitent essentiellement :
Le traitement des fichiers
La sérialisation
La réflexion
Le Threading
L’interopérabilité
L’assembly mscorlib.dll
01/06/2016
148
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
• La couche supérieure du .Net Framework réside dans trois Assemblys à
savoir :
System.dll
System.Core.dll
System.Xml.dll
• Ces deux couches 1er et 2emme niveau constituent le noyau solide de la
.Net Framework au dessus duquel les autres couches sont bâties
• Le reste des couches sont représentées sous forme d’interfaces
applicatives plutôt que des composants essentiels de la .Net Framework
01/06/2016
149
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
Présentation de la .Net Framework 4.6
01/06/2016
150
Formation Programmer en C# 6 alphorm.com™©
Présentation de la .Net Framework
• Le C# 6.0 cible essentiellement la .Net Framework 4.6 et 4.6.1
• Il est à noter que les applications qui tournent sous le CLR 4.6 peuvent
aussi tourner sous le CLR 4.0 puisque ce premier n’est qu’une version
« patchée » et non pas une mise à jour proprement dite
• Par conséquent, il n’aura pas
de soucis de compatibilité lors
de migration des anciennes
applications tournant sous
le CLR 4.0 vers le CLR 4.6 La précision de la .Net Framework
Cible au niveau des propriétés du projet
01/06/2016
151
Formation Programmer en C# 6 alphorm.com™©
Introduction des nouveautés du .Net Framework 4.6
• L’adoption du protocole HTTP/2 ou le HTTP v2.0 qui est plus
performant que le HTTP v1.1
• L’adoption du protocole « Token Binding Protocol » pour les
applications qui tournent sous Windows 10 pour des conversations
clients/serveurs plus sécurisés
• L’introduction d’un compilateur « Just In Time » en mode 64 bits encore
plus performant
• L’introduction d’une nouvelle classe qui s’appelle AppContext au niveau
de l’espace nom System.
• Cette classe AppContext offre aux auteurs de librairies un mécanisme
flexible de changement entre différentes versions de ces librairies au
niveau du code client
01/06/2016
152
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Présentation de la .Net Framework
• Introduction des nouveautés de la .Net Framework 4.6
01/06/2016
153
Formation Programmer en C# 6 alphorm.com™©
Présentation
du .Net Core
.Net Framework & .Net Core
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
154
Formation Programmer en C# 6 alphorm.com™©
Plan
•Présentation du .Net Core
•DNX vs Mono
01/06/2016
155
Formation Programmer en C# 6 alphorm.com™©
Présentation du .Net Core
• C’est une implémentation réduite du .Net Framework
• C’est une version non payante et open source du .Net Framework, elle
est téléchargeable à partir du site github sous le lien
https://github.com/dotnet/core
• A la différence du .Net Framework, le .Net Core utilise une version du
CLR « Common Language Runtime » appelée CoreCLR qui est une
implémentation réduite du CLR qui est aussi indépendante de toute
plateforme et architecture
• Le but étant de cibler les plateformes non Windows tel que Linux, Free
BSD, MAC OS et bien d’autres plateformes et architectures tels que le
ARM souvent utilisées pour le cas des appareils mobiles et les systèmes
embarqués
01/06/2016
156
Formation Programmer en C# 6 alphorm.com™©
Présentation du .Net Core
• Le .Net Core n’implémente que :
L’interface native de la console
La couche applicative ASP.NET 5.0
• Il n’implémente pas :
WPF
WINFORMS
• Car ce sont des technologies qui dépendent des librairies natives de
Windows, cependant, le but étant de viser bien d’autres plateformes
01/06/2016
157
Formation Programmer en C# 6 alphorm.com™©
Présentation du .Net Core
La structure de la nouvelle plateforme .Net
01/06/2016
9
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe Facebook C#
http://www.facebook.com/groups/csharp.programming/
01/06/2016
159
Formation Programmer en C# 6 alphorm.com™©
Présentation du .Net Core
Une comparaison de performances entre le RyuJIT et JIT64 bits
01/06/2016
160
Formation Programmer en C# 6 alphorm.com™©
Présentation du .Net Core
• La structure du .Net Core est modulaire, c’est-à-dire on ne parle plus de
Assemblys dans ce contexte mais plutôt de modules ou packages
• Dans ce cas, il va falloir installer le SDK DNX « Dot Net Execution » qui
contient les utilitaires nécessaires pour installer, désinstaller et paqueter
les packages .Net Core
• Même les Assemblys sont paquetés en cas de besoin pour être utilisés
ensuite dans un contexte .Net Core
01/06/2016
161
Formation Programmer en C# 6 alphorm.com™©
DNX vs Mono
• Il y a pas mal de confusion entre les deux concepts. Pour cette raison il
faut bien distinguer DNX et Mono
• Mono pourra être définit comme une plate-forme ouverte de
développement. Elle est basée sur la spécification CLI « Common
Language Infrastructure » qui comprend :
Le Compilateur
Le CLR « Common Language Runtime »
Le BCL « Base Class Library »
Le MCL « Mono Class Library »
01/06/2016
162
Formation Programmer en C# 6 alphorm.com™©
DNX vs Mono
• DNX peut être considéré comme un SDK et non pas comme une
plateforme à part entière comme il est le cas pour Mono
• Le DNX est composé de trois modules essentiels
L’environnement d’exécution DNX
Le gestionnaire de versions DNVM
Le gestionnaire des utilités DNU
contrôle utilise
La structure du DNX SDK
DNVM Le DNX
runtime
DNU
Utility
01/06/2016
163
Formation Programmer en C# 6 alphorm.com™©
DNX vs Mono
La structure de la nouvelle plateforme .Net
01/06/2016
164
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Présentation du .Net Core
• DNX vs Mono
01/06/2016
165
Formation Programmer en C# 6 alphorm.com™©
Installation et configuration
du .Net Core
.Net Framework & .Net Core
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
166
Formation Programmer en C# 6 alphorm.com™©
Plan
• Installation du .Net Core sous Ubuntu
01/06/2016
167
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Installation du .Net Core sous Ubuntu
01/06/2016
168
Formation Programmer en C# 6 alphorm.com™©
Installation et configuration
du .Net Core
.Net Framework & .Net Core
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
169
Formation Programmer en C# 6 alphorm.com™©
Plan
• Installation du DNVM pour ASP.NET Core sous Ubuntu
01/06/2016
170
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Installation du DNVM pour ASP.NET Core sous Ubuntu
01/06/2016
171
Formation Programmer en C# 6 alphorm.com™©
Installation d'un
éditeur de code
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
.Net Framework & .Net Core
01/06/2016
172
Formation Programmer en C# 6 alphorm.com™©
Plan
• Installation et le choix d'un éditeur de code cas de Sublime Text 3
01/06/2016
173
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Installation d'un éditeur de code
Atom
Sublime Text 3
Note pad ++
01/06/2016
174
Formation Programmer en C# 6 alphorm.com™©
Exemple de projet
.Net Core
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
.Net Framework & .Net Core
01/06/2016
175
Formation Programmer en C# 6 alphorm.com™©
Plan
• Création du premier projet .Net Core sous Ubuntu
01/06/2016
176
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Création du premier projet .Net Core sous Ubuntu
01/06/2016
177
Formation Programmer en C# 6 alphorm.com™©
Présentation
de Scriptcs
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
178
Formation Programmer en C# 6 alphorm.com™©
Plan
•Présentation Scriptcs Engine
•Présentation du REPL
01/06/2016
179
Formation Programmer en C# 6 alphorm.com™©
Présentation Scriptcs Engine
• Le Scriptcs Engine peut être considéré tout simplement comme un
interpréteur du code C#
• Le code écrit en C# est normalement compilé en CIL « Common
Intermediate Language » et puis « imité » en code natif par le JIT « Just
In Time » pour qu’il puisse être traité par le système d’exploitation
Windows
Code C#
Code
IL
Code
natif
Compilé
en
Interprété
en
01/06/2016
180
Formation Programmer en C# 6 alphorm.com™©
Présentation Scriptcs Engine
• Pour le cas de Scriptcs, il interprète le code C# en code natif, par
conséquent, il n’y aura plus de besoin de génération d’Assemblys .exe
et dlls pour construire et appeler les programmes écrits en C#
• Il suffit d’appeler le code à partir d’un simple fichier .csx, le Scriptcs
Engine s’en occupe dans ce cas pour le mettre en exécution
• L’écriture du code devient alors indépendante de toutes sorte d’EDI
« Environnement de développement Intégré » et du compilateur csc.exe
• L’exécution au niveau des plateformes non Windows devient aussi
beaucoup plus simple et flexible
Code C#
Code
natifInterprété en
01/06/2016
181
Formation Programmer en C# 6 alphorm.com™©
Présentation Scriptcs Engine
• Le déploiement du code écrit sous forme de C# script se fait en terme
de packages Nugget ou encore sous forme de modules pour le cas
d’ajout d’extensions au Scriptcs lui même
Un exemple d’une collection
de packages Nugget
01/06/2016
182
Formation Programmer en C# 6 alphorm.com™©
Présentation du REPL
• Comme tout environnement de script, il est nécessaire d’avoir un Shell
pour appeler les scripts et exécuter leurs contenus
• Pour le cas des scripts C#, en parle du REPL «Read Eval Print Loop »
• Le REPL est exécuté à partir d’une invite de commande simple
L’environnement d’exécution des scripts C# ou le REPL
01/06/2016
183
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Présentation Scriptcs Engine
•Présentation du REPL
01/06/2016
184
Formation Programmer en C# 6 alphorm.com™©
Installation de Scriptcs
sous Windows
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
185
Formation Programmer en C# 6 alphorm.com™©
Plan
•Installation de Scriptcs sous Windows
01/06/2016
186
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Installation de Scriptcs sous Windows
01/06/2016
187
Formation Programmer en C# 6 alphorm.com™©
Installation de Scriptcs
sous Linux
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
188
Formation Programmer en C# 6 alphorm.com™©
Plan
•Installation de Scriptcs sous Linux Ubuntu
01/06/2016
189
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Installation de Scriptcs sous Linux Ubuntu
01/06/2016
190
Formation Programmer en C# 6 alphorm.com™©
Installation d’un éditeur
de code pour Windows
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
191
Formation Programmer en C# 6 alphorm.com™©
Plan
•Installation d’un éditeur de code pour Windows
Server 2012 R2
01/06/2016
192
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Installation d’un éditeur de code pour Windows
Server 2012 R2
01/06/2016
193
Formation Programmer en C# 6 alphorm.com™©
Appel d'un script C#
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
194
Formation Programmer en C# 6 alphorm.com™©
Plan
•Appel d'un script C# à partir d’un fichier .csx
01/06/2016
195
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Appel d'un script C# à partir d’un fichier .csx
01/06/2016
196
Formation Programmer en C# 6 alphorm.com™©
Débogage d'un script
C#
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
197
Formation Programmer en C# 6 alphorm.com™©
Plan
•Le débogage d’un C# script
01/06/2016
198
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Le débogage d’un C# script
01/06/2016
199
Formation Programmer en C# 6 alphorm.com™©
Référencement
d'un script C#
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
200
Formation Programmer en C# 6 alphorm.com™©
Plan
•Le référencement d’un script C# dans un autre
script C#
01/06/2016
201
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•Le référencement d’un script C# dans un autre
script C#
01/06/2016
202
Formation Programmer en C# 6 alphorm.com™©
Utilisation du script
cache
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
203
Formation Programmer en C# 6 alphorm.com™©
Plan
• L’utilisation du script cache pour augmenter la performance
01/06/2016
204
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• L’utilisation du script cache pour augmenter la performance
01/06/2016
205
Formation Programmer en C# 6 alphorm.com™©
L'appel d'un script
VB Script
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
206
Formation Programmer en C# 6 alphorm.com™©
Plan
•L'appel d'un script VB Script à partir d’un script C#
01/06/2016
207
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•L'appel d'un script VB Script à partir d’un script C#
01/06/2016
208
Formation Programmer en C# 6 alphorm.com™©
L'appel du Powershell
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
209
Formation Programmer en C# 6 alphorm.com™©
Plan
• L'appel d'une Powershell Command Let à partir d’un script
C#
• L'appel d'un script Powershell personnalisé à partir d’un
script C#
01/06/2016
210
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• L'appel d'une Powershell Command Let à partir d’un script
C#
• L'appel d'un script Powershell personnalisé à partir d’un
script C#
01/06/2016
211
Formation Programmer en C# 6 alphorm.com™©
La création d’un package
Scriptcs
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
212
Formation Programmer en C# 6 alphorm.com™©
Plan
• La création d’un package Scriptcs
01/06/2016
213
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La création d’un package Scriptcs
01/06/2016
214
Formation Programmer en C# 6 alphorm.com™©
Le déploiement d’un
package Scriptcs
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
215
Formation Programmer en C# 6 alphorm.com™©
Plan
• Le déploiement d’un package Scriptcs
01/06/2016
216
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Le déploiement d’un package Scriptcs
01/06/2016
217
Formation Programmer en C# 6 alphorm.com™©
La consommation d’un
package Scriptcs
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
218
Formation Programmer en C# 6 alphorm.com™©
Plan
• Le consommation d’un package Scriptcs
01/06/2016
219
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Le consommation d’un package Scriptcs
01/06/2016
220
Formation Programmer en C# 6 alphorm.com™©
L’extension du Scriptcs avec
les modules
Le Scriptcs
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
221
Formation Programmer en C# 6 alphorm.com™©
Plan
• La définition d’un module Scriptcs
• Ce que vous pouvez faire avec les modules
• L’extension du Scriptcs avec un module « un exemple
d’initiation »
01/06/2016
222
Formation Programmer en C# 6 alphorm.com™©
La définition d’un module Scriptcs
• Un module est une fonctionnalité représentée sous une forme spéciale
de package Scriptcs qui est non pas utilisée pour étendre votre code
écrit en script C#, c’est-à-dire les scripts .csx mais qui étend
l’environnement Scriptcs lui-même en temps de l'exécution.
• Le module scriptcs-engine-mono par exemple permet d’étendre le
Scriptcs pour qu’il puisse intégrer l’environnement d’exécution mono au
lieu du .Net CLR
• Les modules Scriptcs sont très puissants, cependant et selon « Glenn
Block » l’inventeur de la notion de modules Scritpcs et membre de
l’équipe du développement du projet Scriptcs. Les modules
représentent un double tranchant, par conséquent, il ne faut pas en
abuser
01/06/2016
223
Formation Programmer en C# 6 alphorm.com™©
Ce que vous pouvez faire avec les modules
• Introduire un nouveau moteur pour l'exécution des scripts, par exemple
les moteurs Roslyn , Mono et FSharp sont tous déployés en tant que
modules.
• Enregistrer des processeurs de ligne « Line Processors » personnalisés.
• Remplacer le préprocesseur de fichiers « File PreProcessor » actuel avec
un qui est dérivé et qui effectue une analyse syntaxique spéciale du
script C#.
• L'introduction d'un hôte de script « Script Host » personnalisé
• Remplacer le système de fichiers avec une implémentation alternative,
tel que « Azure Blob Storage » par exemple.
• Créer une nouvelle commande au niveau du REPL
01/06/2016
224
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La définition d’un module Scriptcs
• Ce que vous pouvez faire avec les modules
• L’extension du Scriptcs avec un module « un exemple
d’initiation »
01/06/2016
225
Formation Programmer en C# 6 alphorm.com™©
Présentation du
compilateur Roslyn Partie I
Le Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
10
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe ma chaine Youtube
http://www.youtube.com/user/margoumix
01/06/2016
10
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe ma chaine Youtube
http://www.youtube.com/user/margoumix
01/06/2016
10
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe ma chaine Youtube
http://www.youtube.com/user/margoumix
01/06/2016
10
Formation Programmer en C# 6 alphorm.com™©
Liens utiles
• Un lien vers mon groupe ma chaine Youtube
http://www.youtube.com/user/margoumix
01/06/2016
230
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Introduire le compilateur Roslyn
• Comprendre l’architecture du compilateur Roslyn
01/06/2016
231
Formation Programmer en C# 6 alphorm.com™©
Présentation du
compilateur Roslyn Partie II
Le Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
232
Formation Programmer en C# 6 alphorm.com™©
Plan
• Les arbres de syntaxe
• La compilation sous Roslyn
• Les modèles sémantiques sous Roslyn
01/06/2016
233
Formation Programmer en C# 6 alphorm.com™©
Les arbres de syntaxe
• Un arbre de syntaxe pourra être considéré comme une structure DOM
« Document Object Model » utilisée pour représenter le code source
• Un arbre peut contenir :
Des objets du type Nœuds
Des objets du type Tokens
Des objets du type Trivias
Des objets du type Spans
Des objets du type Kinds
Des objets du type Errors
Image d’une arbre de syntaxe
prise de MSDN
01/06/2016
234
Formation Programmer en C# 6 alphorm.com™©
Les arbres de syntaxe (Les nœuds)
• Les nœuds de syntaxe sont les principaux éléments des arbres de
syntaxe
• Ces nœuds représentent des constructions syntaxiques telles que les:
Déclarations (les noms de variables, les noms de fonctions, les noms de classes ….)
Expressions ( ()=>,_=>,= …)
Clauses ou Tokens (if, else, for, while, using, class, struct ….)
• Les nœuds de syntaxe admettent toujours des nœuds enfants
représentés par la collection Descendant* et un nœud parent
représenté par Parent sauf le nœud racine qui n’a pas de nœud parent
• Chaque type de nœud est représenté par une classe appropriée qui
hérite de la classe SyntaxNode
01/06/2016
235
Formation Programmer en C# 6 alphorm.com™©
Les arbres de syntaxe (Les Tokens)
• Les Tokens sont les :
Mots clés
Les identificateurs
Les littéraux
Les ponctuations
• Les Tokens sont caractérisés par le fait qu’ils ne peuvent pas être
parents des autres nœuds ou des autres Tokens
• Les Tokens sont représentés par la structure SyntaxToken
01/06/2016
236
Formation Programmer en C# 6 alphorm.com™©
Les arbres de syntaxe (Les Trivias)
• Les Trivias représentent
Les espaces
Les commentaires
Les directives (#define,#pragma,#tryf…..)
• Au début, les Trivias n’étaient pas incluses dans l’arbre de syntaxe, elles
sont ajoutées par la suite vu leurs importance dans la phase
de Refactoring du code
• Les Trivias n’admettent pas de parents, elles sont représentées par la
structure SyntaxTrivia
01/06/2016
237
Formation Programmer en C# 6 alphorm.com™©
Les arbres de syntaxe (Les Spans)
• Les Spans représentent les positions des nœuds dans le code source et
le nombre de caractères formant ces nœuds
• La position et la longueur est représentée par des entiers
• Chaque nœud représente deux types de Spans :
Span
FullSpan qui diffère du Span en comptant les Trivias
01/06/2016
238
Formation Programmer en C# 6 alphorm.com™©
Les arbres de syntaxe (Les Kinds)
• Les Kinds sont stockés dans l’énumération SyntaxKind
• Ils représentent les types des nœuds
• Chaque nœud représente la propriété RawKind qui à son tour
représente son type
01/06/2016
239
Formation Programmer en C# 6 alphorm.com™©
La compilation sous Roslyn
• Une compilation est composée de :
Code source
Les références aux Assemblies nécessaires
Les options de compilation
• Une compilation transforme chaque élément de code en symbole, le
symbole représente un ensemble d’informations que nécessite le
compilateur sur un nœud :
L’emplacement
L’espace nom et le type
La signature (abstract, static, public, sealed …)
01/06/2016
240
Formation Programmer en C# 6 alphorm.com™©
La compilation sous Roslyn
• Les Symboles sont représentés par des classes qui implémentent les
interfaces :
ISymbol pour les propriétés, les variables et les champs
IMethodSymbol pour les procédures et les fonctions
• Les compilations sont immutables tout à fait comme les arbres de
syntaxe, elles sont représentées par la classe CSharpCompilation qui
hérite à son tour de la classe Compilation
• La méthode Create est utilisée dans ce cas pour créer une compilation à
partir d’un arbre de syntaxe.
01/06/2016
241
Formation Programmer en C# 6 alphorm.com™©
Les modèles sémantiques Roslyn
• Un modèle sémantique représente les informations sémantiques pour
un seul fichier source tel que
Les erreurs et les avertissements qui peuvent être générés
Les diagnostiques
Les informations relatives aux symboles
• Les modèles sémantiques sont représentés par la classe SemanticModel
• Les modèles sémantiques peuvent répondre à toutes les questions
difficiles de compilation qu’un développeur pourra avoir
01/06/2016
242
Formation Programmer en C# 6 alphorm.com™©
Les modèles sémantiques Roslyn
• Un modèle sémantique est coûteux en terme de performances en le
comparant à un arbre de syntaxe
• Un modèle sémantique est utilisé pour analyser le code en profondeur
contrairement à un arbre syntaxique
• Le modèle sémantique constitue le véritable pont entre la syntaxe et les
symboles
• En effet, les méthodes GetDeclaredSymbol et GetSymbolInfo de la
classe SemanticModel permet d’avoir un symbole à partir d’une
expression syntaxique
01/06/2016
243
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Les arbres de syntaxe
• La compilation sous Roslyn
• Les modèles sémantiques sous Roslyn
01/06/2016
244
Formation Programmer en C# 6 alphorm.com™©
Présentation du
compilateur Roslyn Partie III
Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
245
Formation Programmer en C# 6 alphorm.com™©
Plan
• Introduction de la notion espace de travail Workspace
• Le premier pas vers Roslyn
01/06/2016
246
Formation Programmer en C# 6 alphorm.com™©
Introduction de la notion espace travail Workspace
• La notion Workspace est le point de départ pour faire l'analyse du code
et du Refactoring en terme de solutions complètes
• C’est une notion très utile surtout pour écrire des extensions qui visent
le TFS « Team Foundation Server » , la solution de collaboration relative
à Visual Studio permettant la gestion des solutions, projets et le suivi
des éléments de travail, la planification, la gestion de projet en terme de
cycle de vie et l'analyse des performances.
• L’espace de travail est une API qui permet l'organisation de toutes les
informations sur les projets dans une solution dans le modèle d'objet
unique
• Elle offre un accès direct à des modèles d'objets comme, les arbres de
syntaxe, les modèles sémantiques et compilations
01/06/2016
247
Formation Programmer en C# 6 alphorm.com™©
Introduction de la notion espace noms namespace
• Une solution est considérée comme un modèle immutable des projets
et des documents.
• Après avoir obtenu une instance de solution de la propriété Workspace
Solution, cette instance est immutable
• Il est possible de modifier des solutions en construisant de nouvelles
instances basées sur des solutions existantes et des changements
spécifiques tout à fait comme les arbres de syntaxes.
• Un projet est considéré comme une partie de la solution immutable.
• Il représente tous les documents de base de code, d’analyses, d’options
de compilation et les références projet-à-projet.
• Un document est considéré comme une partie du projet
01/06/2016
248
Formation Programmer en C# 6 alphorm.com™©
Introduction de la notion espace noms namespace
• Un document représente une fichier du code source ou de
configuration
Une représentation structurelle
d’un espace de travail
Espace
de Travail
SolutionSolution
N
Solution
N
Solution
N
Solution
N
ProjetProjetProjetProjetProjet N
DocumentDocumentDocumentDocumentDocument N
01/06/2016
249
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Introduction de la notion espace de travail Workspace
• Le premier pas vers Roslyn
01/06/2016
250
Formation Programmer en C# 6 alphorm.com™©
Exploration et analyse des
arbres de syntaxes
Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
251
Formation Programmer en C# 6 alphorm.com™©
Plan
• Exploration et analyse des arbres de syntaxes
01/06/2016
252
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Exploration et analyse des arbres de syntaxes
01/06/2016
253
Formation Programmer en C# 6 alphorm.com™©
Exploration et analyse
des modèles sémantiques
Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
254
Formation Programmer en C# 6 alphorm.com™©
Plan
• Exploration et analyse des modèles sémantiques
01/06/2016
255
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Exploration et analyse des modèles sémantiques
01/06/2016
256
Formation Programmer en C# 6 alphorm.com™©
Exploration et analyse des
espaces de travail
Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
257
Formation Programmer en C# 6 alphorm.com™©
Plan
• Exploration et analyse des espaces de travail
01/06/2016
258
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Exploration et analyse des espaces de travail
01/06/2016
259
Formation Programmer en C# 6 alphorm.com™©
Extension Visual Studio
Cas du Code Refactoring (VSIX)
Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
260
Formation Programmer en C# 6 alphorm.com™©
Plan
• Comprendre le mécanisme du code Refactoring (VSIX)
01/06/2016
261
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Comprendre le mécanisme du code Refactoring
01/06/2016
262
Formation Programmer en C# 6 alphorm.com™©
Extension Visual Studio
Cas du
Analyzer with Code Fix
Roslyn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
263
Formation Programmer en C# 6 alphorm.com™©
Plan
• Comprendre le mécanisme du Analyzer with Code Fix
01/06/2016
264
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Comprendre le mécanisme du Analyzer with Code Fix
01/06/2016
265
Formation Programmer en C# 6 alphorm.com™©
Programmation C# 6.0
en Cloud
C# 6.0 et le Cloud
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
266
Formation Programmer en C# 6 alphorm.com™©
Plan
• Présentation de la notion Cloud et Cloud Stack
• Programmation C# en mode Cloud
• Introduction de la notion Cloud patterns
01/06/2016
267
Formation Programmer en C# 6 alphorm.com™©
Présentation de la notion Cloud et Cloud Stack
• Le Cloud ou nuage est tout simplement une grande unité de
matériels informatiques (banalisées) qui fonctionne au niveau d'un
centre de données qui existe à un coin donné au niveau du monde
• Le but derrière cette structure est :
Exécuter des programmes
Fournir des services
Stocker des quantités importantes de données
Le cloud computing
01/06/2016
268
Formation Programmer en C# 6 alphorm.com™©
Présentation de la notion Cloud et Cloud Stack
• Le « Cloud Stack» ou la pile de « Cloud » est composée de plusieurs
composants et infrastructures ordonnées selon une structure verticale
composée d’une ou des
• Infrastructure(s) : « Infrastructure as a Service » ou IaaS . Par analogie à un
PC, elle est comparée au matériel informatique
• Plateforme(s) : « Platform as a Service » ou PaaS . Par analogie à un PC, elle
est comparée au système d’exploitation et les programmes orientés services
ou « B to B »
• Application(s) : « Software as a Service » ou SaaS c’est l’ensemble des
programmes offerts au niveau du « Cloud » pour être consommés par les
utilisateurs finaux comme l’ application Office 365
01/06/2016
269
Formation Programmer en C# 6 alphorm.com™©
Programmation C# en mode « Cloud »
• La programmation « Cloud » est le développement d’une logique de
code donné qui pourra cibler les deux niveaux du nuage à
savoir PaaS et le SaaS
• La programmation en Cloud devrait prendre en considération la
portabilité, l'évolutivité et surtout préserver les performances et la
stabilité des programmes écrits.
• Ils existent plusieurs fournisseurs Cloud tel que Google, Amazon,
Azure …
• Pour programmer des applications orientées Cloud pour
l’infrastructure « Amazon Cloud», Amazon offre la SDK « AWS SDK for
.Net »
https://aws.amazon.com/sdk-for-net/
01/06/2016
270
Formation Programmer en C# 6 alphorm.com™©
Programmation C# en mode Cloud
• Pour programmer des applications orientées Cloud pour
l’infrastructure Google Cloud, Google offre la SDK « Google Cloud SDK
for .Net »
https://cloud.google.com/sdk/
• Pour programmer des applications orientées Cloud pour
l’infrastructure « Windows Azure » qui est le Cloud Microsoft, il faut
créer un compte Azure et ouvrir une session à partir de
https://manage.windowsazure.com
• La création de compte Azure se fait selon deux modes à savoir :
Le mode payant
Le mode d’essai gratuit un mois
01/06/2016
271
Formation Programmer en C# 6 alphorm.com™©
Programmation C# en mode « Cloud »
• Les services offerts qui peuvent être concernés par le
développement Cloud sous « Windows Azure » sont principalement :
Les données au niveau des bases de données
Les fichiers stockés
Les services et des applications en terme d’hébergement et déploiement
• La gestion des programmes pourrait être faite à travers l’interface de
gestion centralisée « Azure Management Studio » téléchargeable à
partir de ce lien http://www.cerebrata.com/
01/06/2016
272
Formation Programmer en C# 6 alphorm.com™©
Introduction de la notion « Cloud patterns »
• Les « Cloud Design Patterns » est un sous ensemble de design
patterns qui vise à adopter les bonnes pratiques en terme de qualité de
code
• Autre que le sens organisationnel, les « Cloud Design Patterns »
mettent l’accent sur d’autres aspects importants surtout dans un
contexte distribué tel que la performance, la disponibilité, la sécurité et
bien d’autres aspects importants
• A ce stade, il s’avère constructif d’introduire quelques patterns dans ce
contexte en se contentant des descriptions de ces patterns, cependant,
les implémentations vues leurs détails importants, elles ne seront pas
traitées au niveau de cette présentation.
01/06/2016
273
Formation Programmer en C# 6 alphorm.com™©
Introduction de la notion « Cloud patterns »
Le Retry pattern : Ce pattern permet la relance d’une nouvelle requête après la
levée d’une exception ou une erreur au niveau du service « Cloud »
Le Throttling pattern : Permet d’optimiser la qualité d’exécution en cas de
charge importante
Le Circuit Breaker pattern : Permet de découvrir l’état d’un service ou application
« Cloud » avant de lancer une requête vers cette dernière
Le Valet Key pattern : Utilisé dans le cas d’échange des fichiers de taille
importante de et vers le « Cloud »
Le Sharding pattern : Permet de décomposer les données au niveau d’une table
en mode horizontal sous forme de partitions ou Shards, le but étant d’optimiser
les performances en terme de recherches des données
Le CQRS pattern : Permet la séparation des commandes de requêtes des autres
commandes d’ajout, suppression et mise à jour de données
01/06/2016
274
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• Présentation de la notion Cloud et Cloud Stack
• Programmation C# en mode cloud
• Introduction de la notion « Cloud patterns »
01/06/2016
275
Formation Programmer en C# 6 alphorm.com™©
La réflexion
Les études de cas
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
276
Formation Programmer en C# 6 alphorm.com™©
Plan
•La création d’une classe attribut personnalisée
01/06/2016
277
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
•La création d’une classe attribut personnalisée
01/06/2016
278
Formation Programmer en C# 6 alphorm.com™©
La sérialisation
avancée
Les études de cas
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
279
Formation Programmer en C# 6 alphorm.com™©
Plan
• La création d’un type « Serializer » personnalisé
01/06/2016
280
Formation Programmer en C# 6 alphorm.com™©
Ce qu’on a couvert
• La création d’un type « Serializer » personnalisé
01/06/2016
281
Formation Programmer en C# 6 alphorm.com™©
La sérialisation
avancée
Les études de cas
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Béchir BEJAOUI
Formateur et Consultant indépendant spécialisé
en technologie et systèmes d’informations
01/06/2016
282
Formation Programmer en C# 6 alphorm.com™©
Plan
• La création d’un type « Serializer » personnalisé
Pourquoi avoir recourt à un « Serializer » personnalisé
Mécanisme de sérialisation du « Serializer » personnalisé
Exploration de l’implémentation
01/06/2016
283
Formation Programmer en C# 6 alphorm.com™©
Mécanisme de sérialisation du « Serializer » personnalisé
Custom
Serializer
Object
Graph
Persisté
Type
Format
Mode
Stockage
3.Prend
1.Prend 2.Prend
4.Transforme
& persiste
Processus de
sérialisation
01/06/2016
284
Formation Programmer en C# 6 alphorm.com™©
Mécanisme de sérialisation du « Serializer » personnalisé
Custom
Serializer
Fichier
Graph
Extrait
+
Construction de
L’objet
dynamiquement
Type
Format
Mode
Stockage
3.Prend
1.Prend 2.Prend
4.Transforme
& persiste
Processus de
desérialisation
01/06/2016
285
Formation Programmer en C# 6 alphorm.com™©
Mécanisme de sérialisation du « Serializer » personnalisé
• L’interface IFormat
01/06/2016
286
Formation Programmer en C# 6 alphorm.com™©
Mécanisme de sérialisation du « Serializer » personnalisé
• La classe Nœud
01/06/2016
287
Formation Programmer en C# 6 alphorm.com™©
Mécanisme de sérialisation du « Serializer » personnalisé
• La classe StorageModeAttribute
01/06/2016
288
Formation Programmer en C# 6 alphorm.com™©
Mécanisme de sérialisation du « Serializer » personnalisé
• La classe FormatAttribute
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
01/06/2016
11
Formation Programmer en C# 6 alphorm.com™©
Are You ready ? ☺
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6

Contenu connexe

Tendances

Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm
 
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm
 
Alphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM AdministrationAlphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM AdministrationAlphorm
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm
 
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm
 
Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm
 
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...Alphorm
 
Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...Alphorm
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm
 
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm
 
Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm
 
Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm
 
Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)Alphorm
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm
 
Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm
 
alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0Alphorm
 

Tendances (20)

Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11
 
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
 
Alphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM AdministrationAlphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM Administration
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5
 
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentaux
 
Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs
 
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
 
Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement
 
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
 
Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2
 
Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1
 
Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124
 
Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
 
alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0
 

En vedette

Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm
 
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITalphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITAlphorm
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)Alphorm
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm
 
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)Alphorm
 
Alphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ssAlphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ssAlphorm
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm
 
Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21Alphorm
 
Alphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 InitiationAlphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 InitiationAlphorm
 
Alphorm.com Support de la Formation Outlook 2016 Initiation
Alphorm.com  Support de la Formation Outlook 2016 Initiation Alphorm.com  Support de la Formation Outlook 2016 Initiation
Alphorm.com Support de la Formation Outlook 2016 Initiation Alphorm
 
alphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - Utilisateuralphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - UtilisateurAlphorm
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)Alphorm
 
alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)Alphorm
 
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...Alphorm
 
Alphorm.com Formation Le Language C
Alphorm.com  Formation Le Language C Alphorm.com  Formation Le Language C
Alphorm.com Formation Le Language C Alphorm
 

En vedette (20)

Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFX
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.x
 
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITalphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScript
 
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
 
Alphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ssAlphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ss
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, Android
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
 
Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21
 
Alphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 InitiationAlphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 Initiation
 
Alphorm.com Support de la Formation Outlook 2016 Initiation
Alphorm.com  Support de la Formation Outlook 2016 Initiation Alphorm.com  Support de la Formation Outlook 2016 Initiation
Alphorm.com Support de la Formation Outlook 2016 Initiation
 
alphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - Utilisateuralphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - Utilisateur
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
 
alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)
 
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
 
Alphorm.com Formation Le Language C
Alphorm.com  Formation Le Language C Alphorm.com  Formation Le Language C
Alphorm.com Formation Le Language C
 

Similaire à Alphorm.com support de la formation programmer en C# 6

Alphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetFrédéric Vandenbriele
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilespprem
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformepprem
 
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...FranceNumerique
 
Alphorm.com Support de la Formation Azure Iaas 3
Alphorm.com Support de la Formation Azure Iaas 3 Alphorm.com Support de la Formation Azure Iaas 3
Alphorm.com Support de la Formation Azure Iaas 3 Alphorm
 
présentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfprésentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfghiz-
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
 
Atelier mooc enseigner le langage c en ligne
Atelier   mooc enseigner le langage c en ligneAtelier   mooc enseigner le langage c en ligne
Atelier mooc enseigner le langage c en ligneElla Hamonic
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartLa FeWeb
 
alphorm.com - Formation Programmer en C++
alphorm.com - Formation Programmer en C++alphorm.com - Formation Programmer en C++
alphorm.com - Formation Programmer en C++Alphorm
 
Projet de développement d'un site sous Drupal par Tamistrians
Projet de développement d'un site sous Drupal par TamistriansProjet de développement d'un site sous Drupal par Tamistrians
Projet de développement d'un site sous Drupal par TamistriansEquipe Tamistrians
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014ALTER WAY
 
Alphorm.com Formation les fondamentaux de Matlab 2013 A
Alphorm.com  Formation les fondamentaux de Matlab 2013 AAlphorm.com  Formation les fondamentaux de Matlab 2013 A
Alphorm.com Formation les fondamentaux de Matlab 2013 AAlphorm
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 

Similaire à Alphorm.com support de la formation programmer en C# 6 (20)

Alphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeurs
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NET
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
 
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
 
Alphorm.com Support de la Formation Azure Iaas 3
Alphorm.com Support de la Formation Azure Iaas 3 Alphorm.com Support de la Formation Azure Iaas 3
Alphorm.com Support de la Formation Azure Iaas 3
 
présentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfprésentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdf
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 
Atelier mooc enseigner le langage c en ligne
Atelier   mooc enseigner le langage c en ligneAtelier   mooc enseigner le langage c en ligne
Atelier mooc enseigner le langage c en ligne
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows Containers
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
 
Synefo
SynefoSynefo
Synefo
 
alphorm.com - Formation Programmer en C++
alphorm.com - Formation Programmer en C++alphorm.com - Formation Programmer en C++
alphorm.com - Formation Programmer en C++
 
Projet de développement d'un site sous Drupal par Tamistrians
Projet de développement d'un site sous Drupal par TamistriansProjet de développement d'un site sous Drupal par Tamistrians
Projet de développement d'un site sous Drupal par Tamistrians
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014
 
Alphorm.com Formation les fondamentaux de Matlab 2013 A
Alphorm.com  Formation les fondamentaux de Matlab 2013 AAlphorm.com  Formation les fondamentaux de Matlab 2013 A
Alphorm.com Formation les fondamentaux de Matlab 2013 A
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 

Plus de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Plus de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com support de la formation programmer en C# 6

  • 1. 01/06/2016 1 Formation Programmer en C# 6 alphorm.com™© Formation C# 6.0 Avancée Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 2. 01/06/2016 2 Formation Programmer en C# 6 alphorm.com™© Plan • Présentation du formateur • Présentation du plan de formation • Connaissances requises • Publics concernés • Liens utiles
  • 3. 01/06/2016 2 Formation Programmer en C# 6 alphorm.com™© Plan • Présentation du formateur • Présentation du plan de formation • Connaissances requises • Publics concernés • Liens utiles
  • 4. 01/06/2016 4 Formation Programmer en C# 6 alphorm.com™© Mes formations sur Alphorm
  • 5. 01/06/2016 5 Formation Programmer en C# 6 alphorm.com™© Présentation du plan de formation • Le spectre d'évolution du C# du 2.0 au 6.0 • Les nouveautés apportées avec le .Net Framework 4.6 • Le Scriptcs Engine • Le Roslyn • Le C# 6.0 et le Cloud une introduction • Un ensemble d’études de cas: Scriptcs, Les types, Les collections, La sérialisation, LINQ, Réflexion, Programmation dynamique, Threading, Interopérabilité, Base de données
  • 6. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 7. 01/06/2016 7 Formation Programmer en C# 6 alphorm.com™© Public concernés • Cette formation cible Les professionnels et développeurs qui ont déjà un niveau intermédiaire en terme de C# et du .Net Framework qui cherchent une mise à niveau de leurs connaissances en terme de nouveautés C# 6.0 et .Net Framework 4.6 Les professionnels et développeurs expérimentés qui sont issus d’autres environnements tels que java, C++ et Linux, et qui veulent s’adapter au développement C# Les étudiants et les élèves ingénieurs qui ont déjà travaillé sur la plateforme .Net Framework et notamment les versions C# antérieures Les personnes en stage et qui veulent booster leurs carrières professionnelles à condition qu’ils aillent un niveau intermédiaire aux moins en terme de développement C#
  • 8. 01/06/2016 8 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mes articles http://www.c-sharpcorner.com/members/bechir-bejaoui2
  • 9. 01/06/2016 9 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe Facebook C# http://www.facebook.com/groups/csharp.programming/
  • 10. 01/06/2016 10 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe ma chaine Youtube http://www.youtube.com/user/margoumix
  • 11. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 12. 01/06/2016 3 Formation Programmer en C# 6 alphorm.com™© Pésentation du formateur Béchir Béjaoui • Consultant et expert certifié en infrastructure réseau, développement des solutions distribuées et Business Intelligence • Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées .net 3.5, MCSD Team Fondation Server , MCTS • Mes références : Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir- bejaoui.aspx Profil MSDN: social.msdn.microsoft.com/profile/masnsn Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
  • 13. 01/06/2016 3 Formation Programmer en C# 6 alphorm.com™© Pésentation du formateur Béchir Béjaoui • Consultant et expert certifié en infrastructure réseau, développement des solutions distribuées et Business Intelligence • Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées .net 3.5, MCSD Team Fondation Server , MCTS • Mes références : Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir- bejaoui.aspx Profil MSDN: social.msdn.microsoft.com/profile/masnsn Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
  • 14. 01/06/2016 3 Formation Programmer en C# 6 alphorm.com™© Pésentation du formateur Béchir Béjaoui • Consultant et expert certifié en infrastructure réseau, développement des solutions distribuées et Business Intelligence • Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées .net 3.5, MCSD Team Fondation Server , MCTS • Mes références : Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir- bejaoui.aspx Profil MSDN: social.msdn.microsoft.com/profile/masnsn Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
  • 15. 01/06/2016 3 Formation Programmer en C# 6 alphorm.com™© Pésentation du formateur Béchir Béjaoui • Consultant et expert certifié en infrastructure réseau, développement des solutions distribuées et Business Intelligence • Certifications : MCITP en SQL SERVER BI, MCPD Applications Distribuées .net 3.5, MCSD Team Fondation Server , MCTS • Mes références : Profil LinkedIn : tn.linkedin.com/pub/bejaoui/2b/245/6b Profil C-sharpcorner : www.c-sharpcorner.com/authors/yougerthen/bechir- bejaoui.aspx Profil MSDN: social.msdn.microsoft.com/profile/masnsn Profil Alphorm : http://www.alphorm.com/formateur/bechir-bejaoui
  • 16. 01/06/2016 16 Formation Programmer en C# 6 alphorm.com™© Les types génériques • Les avantages d’utilisation des génériques dans le code sont principalement : La réutilisation du code Plus de contrôle sur les types d’éléments au niveau des collections et les méthodes à travers les contraintes La performance sur le plan d’utilisation des listes en évitant les opérations du boxing/unboxing faite à chaque itération pour le cas des listes non génériques
  • 17. 01/06/2016 17 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les types Génériques
  • 18. 01/06/2016 18 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 2.0 Partie II Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 19. 01/06/2016 19 Formation Programmer en C# 6 alphorm.com™© Plan • Les types Nullables • Les itérateurs
  • 20. 01/06/2016 20 Formation Programmer en C# 6 alphorm.com™© Les types Nullables • Ils sont des types issus de la structure Nullable<T> • Se sont des types qui peuvent stocker des valeurs nulles pour les types valeur comme les entiers, les flottants et les doubles • Ils sont principalement utilisés pour représenter les valeurs Nulles au niveau des bases de données pour ces types valeur • Ils sont définis selon les deux formes En utilisant un point d’interrogation qui précède le type En utilisant cette forme
  • 21. 01/06/2016 21 Formation Programmer en C# 6 alphorm.com™© Les itérateurs • Les itérateurs permettent de mieux gérer les itérations des éléments d’une collection donnée • Un itérateur selon MSDN est défini comme une méthode, un accesseur ou un opérateur qui permet de réaliser une récurrence personnalisée • Le mot clé « yield » permet d’itérer à travers une collection donnée pour retourner un ensemble d’éléments au niveau d’une fonction : Cas d’utilisation de yield pour itérer une collection
  • 22. 01/06/2016 22 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les types Nullables • Les itérateurs
  • 23. 01/06/2016 23 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 2.0 Partie III Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 24. 01/06/2016 24 Formation Programmer en C# 6 alphorm.com™© Plan • Les classes partielles • Les classes statiques • Les méthodes anonymes
  • 25. 01/06/2016 25 Formation Programmer en C# 6 alphorm.com™© Les classes partielles • Les classes partielles sont des classes qui peuvent être fragmentées sur plusieurs fichiers .cs • Les classes partielles sont indispensables pour les projets collaboratifs de taille considérable • Le mot clé « partial » doit précéder la classe pour la marquer comme classe partielle • Il est possible aussi de créer des structures et des interfaces partielles
  • 26. 01/06/2016 26 Formation Programmer en C# 6 alphorm.com™© Les classes statiques • Les classes statiques sont principalement des conteneurs logiques des méthodes statiques • Les classes statiques ne sont pas « instanciables » comme les classes non statiques • L’aspect bénéfique de ces classes, c’est qu’elles peuvent être partagées en différents niveaux du code sans le besoin de créer de nouvelles instances ce qui facilite l’implémentation de certain « Patterns » Exemple de classe statique
  • 27. 01/06/2016 27 Formation Programmer en C# 6 alphorm.com™© Les méthodes anonymes • Une méthode anonyme est principalement considérée comme un bloque d’instructions qui peut être injecté en amont au niveau des arguments d’une autre méthode Exemple d’utilisation des méthodes anonymes
  • 28. 01/06/2016 28 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les classes partielles • Les classes statiques • Les méthodes anonymes
  • 29. 01/06/2016 29 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie I Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 30. 01/06/2016 30 Formation Programmer en C# 6 alphorm.com™© Plan • Les initiateurs d’objets • Les initiateurs de collections • Les types implicites
  • 31. 01/06/2016 31 Formation Programmer en C# 6 alphorm.com™© Les initiateurs d’objets • Les initiateurs d’objets prennent une nouvelle forme différente que celle adoptée en C# 2.0 et versions antérieures La forme des initiateurs précédemment La forme des initiateurs en mode C# 3.0
  • 32. 01/06/2016 32 Formation Programmer en C# 6 alphorm.com™© Les initiateurs de collections • Les initiateurs de collections prennent une nouvelle forme, il est désormais possible d’adopter la forme ci-dessous La forme des initiateurs de collections en mode C# 3.0
  • 33. 01/06/2016 33 Formation Programmer en C# 6 alphorm.com™© Les types implicites • Les types implicites sont essentiellement utilisés sous forme de variables locales pour inférer les types déjà définis La définition d’une variable locale anonyme La définition de la même variable en mode CIL
  • 34. 01/06/2016 34 Formation Programmer en C# 6 alphorm.com™© Les types implicites • Les types implicites sont aussi utilisés dans un contexte de requêtes LINQ « Language Integrated Query » pour définir des types anonymes à la volée La définition d’un type anonyme dans un contexte de LINQ
  • 35. 01/06/2016 35 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les initiateurs d’objets • Les initiateurs de collections • Les types implicites
  • 36. 01/06/2016 36 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie II Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 37. 01/06/2016 37 Formation Programmer en C# 6 alphorm.com™© Plan • Les méthodes extensions
  • 38. 01/06/2016 38 Formation Programmer en C# 6 alphorm.com™© Les méthodes extensions • Les méthodes extensions permettent d’étendre des types déjà définis dont le code source n’est plus accessible par principe d’encapsulation • Il n’aura pas de soucis pour les classes dont l’héritage est permis, par contre il le sera pour les classes marquées par le mot clé « sealed » Exemple de définition d’une méthode extension
  • 39. 01/06/2016 39 Formation Programmer en C# 6 alphorm.com™© Les méthodes extensions • En cas de coexistence de deux méthodes une originale et une méthode extension qui ont la même signature alors au moment de l’appel la priorité sera pour la méthode originale définie au niveau de la classe cible • En cas de coexistence de deux méthodes extensions portant la même signature, une fait partie du namespace au quel la classe cible fait partie et l’autre fait partie d’un namespace différent, dans ce cas, la première aura la priorité au moment de l’appel • En cas de coexistence de plusieurs méthodes extensions pour la même classe et qui ont la même signature mais qui font partie de namespace différents, en ce moment, il aura un conflit d’appel et une erreur au moment de la compilation sera levée Exemple de définition d’une méthode extension
  • 40. 01/06/2016 40 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les méthodes extensions
  • 41. 01/06/2016 41 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie III Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 42. 01/06/2016 42 Formation Programmer en C# 6 alphorm.com™© Plan • Le LINQ
  • 43. 01/06/2016 43 Formation Programmer en C# 6 alphorm.com™© Le LINQ • C’est l’acronyme de «Language Integrated Query» • C’est un ORM « Object Relational Mapping » nouvellement introduit à partir de C# 3.0 • Cet ORM ajoute des capacités d'interrogation sur des données au C# en utilisant une syntaxe proche de celle de SQL « Select Query Language » utilisé essentiellement dans le cadre des bases de données relationnelles • LINQ définit un ensemble d’opérateurs de requêtes qui peuvent être utilisés pour effectuer des requêtes, filtrer et projeter des données au niveau de plusieurs structures et conteneurs de données tel que les bases de données, les fichiers DOM « Document Object Models » ….
  • 44. 01/06/2016 44 Formation Programmer en C# 6 alphorm.com™© Le LINQ • Le LINQ représente une variété de fournisseurs pour gérer les données LINQ to Object LINQ to SQL LINQ to Entities « Entity Framework 5.x/6» LINQ to XML LINQ to quelques choses ….. • Dans ce dernier cas, il est possible de créer un fournisseur LINQ personnalisé pour accéder à un conteneur de données particulier par exemple LINQ to LDAP, LINQ to Tweeter, LINQ to Facebook, LINQ to Google Maps
  • 45. 01/06/2016 45 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Le LINQ
  • 46. 01/06/2016 46 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie IV Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 47. 01/06/2016 47 Formation Programmer en C# 6 alphorm.com™© Plan • Le LINQ to SQL
  • 48. 01/06/2016 48 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Le LINQ to SQL
  • 49. 01/06/2016 49 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie IV Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 50. 01/06/2016 50 Formation Programmer en C# 6 alphorm.com™© Plan • Le LINQ to Entities
  • 51. 01/06/2016 51 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Le LINQ to Entities
  • 52. 01/06/2016 52 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie V Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 53. 01/06/2016 53 Formation Programmer en C# 6 alphorm.com™© Plan • Le LINQ to XML
  • 54. 01/06/2016 54 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Le LINQ to XML
  • 55. 01/06/2016 55 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie VI Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 56. 01/06/2016 56 Formation Programmer en C# 6 alphorm.com™© Plan • La jointure en mode LINQ
  • 57. 01/06/2016 57 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La jointure en mode LINQ
  • 58. 01/06/2016 58 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 3.0 Partie VII Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 59. 01/06/2016 59 Formation Programmer en C# 6 alphorm.com™© Plan • Les expressions Lambda • Les méthodes partielles
  • 60. 01/06/2016 60 Formation Programmer en C# 6 alphorm.com™© Les expressions Lambda • Il est possible de qualifier les expressions Lambda comme les descendants des méthodes anonymes • Elles sont essentiellement implémentées dans un contexte LINQ « Language Integrated Query » comme filtres de requêtes Une approche de comparaison des méthodes anonymes et les expressions Lambda
  • 61. 01/06/2016 61 Formation Programmer en C# 6 alphorm.com™© Les méthodes partielles • La notion des méthodes partielles est similaire à celle de classes partielles au niveau de la version C# 2.0 • Dans un contexte C# 2.0 il n’est pas possible de diviser le code d’une méthode sur plusieurs fichiers .cs pourtant il est possible de le faire au niveau des classes • Une méthode partielle pourra ne pas avoir une implémentation à un niveau donné, mais elle ne sera exécutée proprement que lorsqu’elle admet une implémentation • Une méthode partielle est marquée par le mot clé « partial », elle doit être privée et ne retourne aucune valeur « void »
  • 62. 01/06/2016 62 Formation Programmer en C# 6 alphorm.com™© Les méthodes partielles • Les méthodes partielles sont uniquement définies au niveau des classes partielles • Les types d’arguments « out » sont interdits lors du passage des arguments par référence, par conséquent, seul le mot clé « ref » pourra être utilisé dans ce cas • Il n’est pas possible de pointer un type DELEGATE vers une méthode partielle • Les méthodes partielles peuvent être statiques, elles peuvent aussi utiliser des types génériques
  • 63. 01/06/2016 63 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les expressions Lambda • Les méthodes partielles
  • 64. 01/06/2016 64 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 4.0 Partie I Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 65. 01/06/2016 65 Formation Programmer en C# 6 alphorm.com™© Plan • La programmation dynamique
  • 66. 01/06/2016 66 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique • La programmation dynamique est la fonctionnalité majeure introduite par la .Net Framework 4.0 • La programmation dynamique veut dire utiliser une entité qui n’est pas définie en temps de compilation comme un objet de type bien défini • La programmation dynamique résout beaucoup de soucis en relation avec les objets qui n’ont pas une forme déterminée jusqu’au moment de l’exécution du programme • On prends comme exemple les structures d’objets définis au niveau des structures XML souvent complexes et surtout variables • Ou encore les classes définies dans d’autres environnements de programmations et dont on veut les importer dans le contexte CLR
  • 67. 01/06/2016 67 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique • La programmation dynamique nécessite le DLR « Dynamic Language Runtime » qui est une couche située au dessus du CLR « Common language Runtime » • Le DLR utilise des classes CallSite<T> pour représenter les types dynamiques dont la création se fait lors de l’exécution • La famille des classes dites Binders dont le nom finit toujours par Binder sont dérivées de la classe Binder qui assure une liaison tardive. Cette liaison permet de définir les types dynamiques au moment de l’exécution
  • 68. 01/06/2016 68 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique C# VB.NET Dynamic Language Runtime Common Language Runtime .Net DOM Script Engines Expression Tree CallSite <T> Position du DLR dans la plateforme .Net Binder
  • 69. 01/06/2016 69 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La programmation dynamique
  • 70. 01/06/2016 70 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 4.0 Partie II Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 71. 01/06/2016 71 Formation Programmer en C# 6 alphorm.com™© Plan • La programmation dynamique
  • 72. 01/06/2016 72 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La programmation dynamique
  • 73. 01/06/2016 73 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 4.0 Partie III Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 74. 01/06/2016 74 Formation Programmer en C# 6 alphorm.com™© Plan • La programmation dynamique
  • 75. 01/06/2016 75 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique • Les classes ExpandoObject et DynamicObject sont les principales implémentations de l’interface IDynamicMetaObjectProvider. Elles permettent la création des objets dynamiques qui sont définis par le mot clé dynamic L’interface IDynamicMetaObjectProvider
  • 76. 01/06/2016 4 Formation Programmer en C# 6 alphorm.com™© Mes formations sur Alphorm
  • 77. 01/06/2016 77 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique Comportement Implémente l’interface INotifyPropertyChanged N’implémente pas l’interface INotifyPropertyChanged Les méthodes Possible de définir des méthodes - Les événements Possible de définir des événements - Tableau comparatif entre l’utilisation d’un dictionnaire et un ExpandoObject (La suite)
  • 78. 01/06/2016 78 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique • La classe ExpandoObject est utilisée pour les cas de figures simples de définition des objets dynamiques • Cependant, la classe DynamicObject est utilisée pour des scenarii encore plus avancés • L’utilisation de DynamicObject ne se fait pas directement mais à travers la définition d’une classe qui hérite de DynamicObject • En suite, il faut ajouter la logique désirée à travers la réécriture de l’une ou de l’ensemble de ces méthodes
  • 79. 01/06/2016 79 Formation Programmer en C# 6 alphorm.com™© La programmation dynamique Les méthodes à implémenter en cas d’utilisation de DynamicObject TryInvokeMember Lors de l’appel d’une méthode TryGetMember Lors de l’appel de l’accesseur GET de propriété TrySetMember Lors de l’appel de l’accesseur SET de propriété TryGetIndex Lors de l’appel de l’accesseur GET de l’indexeur TrySetIndex Lors de l’appel de l’accesseur SET de l’indexeur TryUnaryOperation Lors de l’appel d’une opération unaire tél que ++,+=, ! TryBinaryOperation Lors de l’appel d’une opération binaire tél que +, -, *, != TryConvert Lors de la conversion de l’objet dynamique TryInvoke Lors de l’instanciation de l’objet dynamique
  • 80. 01/06/2016 80 Formation Programmer en C# 6 alphorm.com™© • Voir plus de détails sur la programmation dynamique, je vous invite à lire mon article « Toying with C# 4.0 » publié en 2010 à c-sharpcorner.com
  • 81. 01/06/2016 81 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La programmation dynamique
  • 82. 01/06/2016 82 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 4.0 Partie IV Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 83. 01/06/2016 83 Formation Programmer en C# 6 alphorm.com™© Plan • Les paramètres optionnels • Les arguments nommés
  • 84. 01/06/2016 84 Formation Programmer en C# 6 alphorm.com™© Les paramètres optionnels • Les paramètres optionnels donnent aux programmeurs le choix d’ entrer ou pas les valeurs des arguments d’une méthode lors de son appel à condition que des valeurs par défaut soient initialement attribuées lors de la définition de ces méthodes en question • Si aucune valeur n’est définie lors de l’appel, cette valeur par défaut sera utilisée automatiquement Exemple de définition des paramètres optionnels
  • 85. 01/06/2016 85 Formation Programmer en C# 6 alphorm.com™© Les paramètres optionnels • Les paramètres optionnels doivent apparaître au dernières positions après les paramètres non optionnels • Sinon une erreur sera levée dans le cas contraire L’erreur CS1737 suite au non respect de la définition des paramètres optionnels
  • 86. 01/06/2016 86 Formation Programmer en C# 6 alphorm.com™© Les arguments nommés Exemple de définition des arguments nommés • Les arguments nommés facilitent la vie au programmateur qui connaît les arguments au sein d’une méthode mais qui ne sait pas leurs ordres
  • 87. 01/06/2016 87 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les paramètres optionnels • Les arguments nommés
  • 88. 01/06/2016 88 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 4.0 Partie V Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 89. 01/06/2016 89 Formation Programmer en C# 6 alphorm.com™© Plan • La variance des génériques
  • 90. 01/06/2016 90 Formation Programmer en C# 6 alphorm.com™© La variance des génériques • Elle est inspirée de la théorie des catégories, c’est une théorie d’origine mathématique qui assume que si un type A est convertible en type B, il sera possible d’utiliser ce dernier au lieu du type A ou utiliser le type A tout simplement • Elle est déjà appliquée pour le cas des anciennes collections tel que ArrayList mais elle n’est pas du tout Safe • Les types génériques qui sont introduit à partir de la version C# 2.0 sont strictement invariants • La variance n’est appliquée qu’au types dont la conversion de l’un vers l’autre est possible.
  • 91. 01/06/2016 91 Formation Programmer en C# 6 alphorm.com™© La variance des génériques • La variance des génériques est divisée en deux catégories à savoir, la Covariance et la Contravariance Exemple de Covariance Exemple de Contravariance
  • 92. 01/06/2016 92 Formation Programmer en C# 6 alphorm.com™© La variance des génériques Exemple d’utilisation de la covariance l’interface IComparable<T> Exemple d’utilisation de Contravariance l’interface IEnumerable< T>
  • 93. 01/06/2016 93 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La variance des génériques
  • 94. 01/06/2016 94 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 4.0 Partie VI Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 95. 01/06/2016 95 Formation Programmer en C# 6 alphorm.com™© Plan • La classe Task • La gestion des exceptions issues de Task • L’annulation de Task • La programmation parallèle • Nouvelles collections supportant la multithreading
  • 96. 01/06/2016 96 Formation Programmer en C# 6 alphorm.com™© La classe Task • L'espace de noms System.Threading.Tasks fournit les types qui simplifient le travail d'écriture du code simultané. Il existe plusieurs raisons de préférer les Task au lieu des Thread Les Task utilisent le TheradPool du CLR d’une manière directe ce qui rend leur utilisation plus performante Il est désormais possible l’achèvement d’un Task sans avoir recourt à un signal comme il est le cas pour les Thread Il est possible d’organiser les Task pour les enchainer les uns après les autres, la relation entre les Task est considérée une relation Père/Fils dans ce contexte Le Task représente une abstraction plus élevée par conséquent il est plus simple de l’utiliser que le Thread
  • 97. 01/06/2016 97 Formation Programmer en C# 6 alphorm.com™© La classe Task • Une tâche qui retourne aucune valeur est représentée par la classe System.Threading.Tasks.Task • Une tâche qui retourne une valeur est représentée par la classe System.Threading.Tasks.Task<TResult>, qui hérite de Task.
  • 98. 01/06/2016 98 Formation Programmer en C# 6 alphorm.com™© La classe Task • Une tâche de continuation est une tâche asynchrone appelée par une autre tâche, également appelée antécédent lorsque ce dernier est terminé.
  • 99. 01/06/2016 99 Formation Programmer en C# 6 alphorm.com™© La gestion des exceptions issues de Task • Les exceptions sont propagées lorsque vous utilisez l'une des méthodes statiques ou d'instance Task.Wait ou Task<TResult>.Wait et lorsque vous les gérer en incluant l'appel dans une instruction try-catch. • Si une exception non gérée est levée , l'exception ne sera pas apparente directement, elle sera stockée dans une collection d’exceptions membre de AggregateException • Lorsque la méthode Wait ou la propriété Résultat est invoquée , une AggregateException sera levée dans ce cas • La propriété InnnerExceptions permet de collecter les données sur les exceptions qui sont levées au cour d’exécution de la tâche
  • 100. 01/06/2016 5 Formation Programmer en C# 6 alphorm.com™© Présentation du plan de formation • Le spectre d'évolution du C# du 2.0 au 6.0 • Les nouveautés apportées avec le .Net Framework 4.6 • Le Scriptcs Engine • Le Roslyn • Le C# 6.0 et le Cloud une introduction • Un ensemble d’études de cas: Scriptcs, Les types, Les collections, La sérialisation, LINQ, Réflexion, Programmation dynamique, Threading, Interopérabilité, Base de données
  • 101. 01/06/2016 101 Formation Programmer en C# 6 alphorm.com™© La gestion des exceptions issues de Task Une méthode à déclenchement potentiel d’erreur La gestion de l’erreur dans un contexte task Une alternative qui utilise la prédicat Handle de l’exception AgregateException
  • 102. 01/06/2016 102 Formation Programmer en C# 6 alphorm.com™© L’annulation de Task • Il est possible de forcer l’annulation d’un Task même sans levée d’exception à l’aide des objets du type CancellationToken et CancellationTokenSource • La classe CancellationTokenSource
  • 103. 01/06/2016 103 Formation Programmer en C# 6 alphorm.com™© L’annulation de Task La structure CancellationToken
  • 104. 01/06/2016 104 Formation Programmer en C# 6 alphorm.com™© L’annulation de Task • Tout d’abord, il faut ajouter un objet CancellationToken comme paramètre au niveau de la méthode cible • Il faut appeler la méthode ThrowIfCancellationRequested si une condition d’annulation est vraie
  • 105. 01/06/2016 105 Formation Programmer en C# 6 alphorm.com™© L’annulation de Task • D’autre part, Il faut forcer l’annulation à travers l’appel de la méthode Cancel de l’objet CancellationTokenSource définie dans le code appelant
  • 106. 01/06/2016 106 Formation Programmer en C# 6 alphorm.com™© La programmation parallèle • La bibliothèque de tâches parallèles (TPL) supporte le parallélisme de traitement des données avec la classe System.Threading.Tasks.Parallel. • La méthode Parallel.Invoke offre un moyen pratique d'exécuter simultanément un nombre d'instructions arbitraires. Pour cela, on pourra passer pour chaque élément de travail un délégué Action ou une expression lambda qui appelle une méthode nommée ou fournit un code Inline.
  • 107. 01/06/2016 107 Formation Programmer en C# 6 alphorm.com™© La programmation parallèle • La classe System.Threading.Tasks.Parallel fournit aussi des implémentations parallèles basées sur la méthode des boucles for et foreach .
  • 108. 01/06/2016 108 Formation Programmer en C# 6 alphorm.com™© Nouvelles collections supportant le multithreading • Le .NET Framework 4 introduit l'espace de noms System.Collections.Concurrent qui inclut plusieurs classes de collections qui sont à la fois thread-safe et évolutives • Plusieurs threads peuvent, sans risque et de façon efficace, ajouter ou supprimer des éléments de ces collections sans extra code • Pour lire les données d’une manière concurrentielle, il suffit d’utiliser les collections génériques classiques
  • 109. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 110. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 111. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 112. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 113. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 114. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 115. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 116. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 117. 01/06/2016 6 Formation Programmer en C# 6 alphorm.com™© Connaissances requises • Il est à noter que cette formation ne représente pas un cours magistral de C# et du .Net Framework, c’est une formation avancée fortement orientée pratique C# • Cette formation n’est pas orientée vers les débutants en terme du .Net Framework et du C# • Par conséquent, le public concerné doit avoir des connaissances intermédiaires au moins en terme de programmation et notamment C# • La connaissance d’utilisation d’un environnement de développement principalement Visual Studio ou autre IDE qui supporte au moins C# 4.0/5.0 est indispensable
  • 118. 01/06/2016 118 Formation Programmer en C# 6 alphorm.com™© Les fonctions asynchrones Exemple du code appelant
  • 119. 01/06/2016 119 Formation Programmer en C# 6 alphorm.com™© Les classes CallerMemberName, CallerFilePath et CallerLineNumber • Les classes attributs facilitent la vie des développeurs en phase de test de leurs code en permettant d’avoir Le nom de l’appelant qui est essentiellement le nom d’une méthode Le fichier qui contient cette méthode appelante Le numéro de ligne où la méthode appelée est invoquée
  • 120. 01/06/2016 120 Formation Programmer en C# 6 alphorm.com™© Les classes CallerMemberName, CallerFilePath et CallerLineNumber • Pour profiter de cette fonctionnalité, la seule manière est de définir des arguments optionnels à la fin de la méthode cible de débogage et les marquer par l’un des attributs requis Un exemple illustratif d’utilisation
  • 121. 01/06/2016 121 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La nouvelle forme des fonctions asynchrones async/await • Les classes CallerMemberName, CallerFilePath et CallerLineNumber
  • 122. 01/06/2016 122 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 6.0 Partie I Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 123. 01/06/2016 123 Formation Programmer en C# 6 alphorm.com™© Plan • L’opérateur Nul ou « Elvis » • La nouvelle présentation de la chaine formatée • Les auto-initiateurs des propriétés • L’expression « Nameof » • Les imports statiques
  • 124. 01/06/2016 124 Formation Programmer en C# 6 alphorm.com™© L’opérateur Nul ou « Elvis » • Cet opérateur peut réduire le code en terme de quantité d’une manière efficace Les versions précédentes C# La version C# 6.0
  • 125. 01/06/2016 125 Formation Programmer en C# 6 alphorm.com™© La nouvelle présentation de la chaine formatée • Les développeurs C# connaissent déjà la méthode « format » qui est utilisée pour représenter une chaine de caractères sous une forme personnalisée • La méthode format pourra être substituée par le nouveau opérateur « $ » La différence de techniques de formatage de chaines entre C#6.0 et les versions précédentes C#
  • 126. 01/06/2016 126 Formation Programmer en C# 6 alphorm.com™© Les auto-initiateurs des propriétés • Après la fonctionnalité des arguments optionnels introduite au niveau du C# 4.0 et qui donne une valeur par défaut aux arguments au niveau d’une méthode, les auto-initiateurs des propriétés permettent d’attribuer une valeur par défaut mais au niveau des propriétés cette fois-ci. • Voici un exemple qui illustre le cas d’utilisation d’un auto-initiateur pour une propriété du type date :
  • 127. 01/06/2016 127 Formation Programmer en C# 6 alphorm.com™© L’expression nameof • L’opérateur « nameof » est nouveau dans C# 6.0, il permet de retourner le nom d’une variable bien évidement sous forme de chaine de caractères • Dans les versions précédentes les développeurs sont obligés de passer par l’écriture des utilitaires pour arriver au même résultat atteint via l’opérateur «nameof» L’une des méthodes utilisée précédemment
  • 128. 01/06/2016 7 Formation Programmer en C# 6 alphorm.com™© Public concernés • Cette formation cible Les professionnels et développeurs qui ont déjà un niveau intermédiaire en terme de C# et du .Net Framework qui cherchent une mise à niveau de leurs connaissances en terme de nouveautés C# 6.0 et .Net Framework 4.6 Les professionnels et développeurs expérimentés qui sont issus d’autres environnements tels que java, C++ et Linux, et qui veulent s’adapter au développement C# Les étudiants et les élèves ingénieurs qui ont déjà travaillé sur la plateforme .Net Framework et notamment les versions C# antérieures Les personnes en stage et qui veulent booster leurs carrières professionnelles à condition qu’ils aillent un niveau intermédiaire aux moins en terme de développement C#
  • 129. 01/06/2016 129 Formation Programmer en C# 6 alphorm.com™© Les imports statiques • Dans certains cas, l’utilisation des membres d’une classe statique est nécessaire • L’appel des membres se fait alors selon la forme suivante « Nom de classe » . « Nom du membre » • Exemple :
  • 130. 01/06/2016 130 Formation Programmer en C# 6 alphorm.com™© Les imports statiques • C# 6.0 rend possible l’écriture suivante • A condition d’ajouter la référence suivante au niveau des imports
  • 131. 01/06/2016 131 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • L’opérateur Null ou « Elvis » • La nouvelle présentation de la chaine formatée • Les auto-initiateurs des propriétés • L’expression « Nameof » • Les imports statiques
  • 132. 01/06/2016 132 Formation Programmer en C# 6 alphorm.com™© Les fonctionnalités C# 6.0 Partie II Le spectre d’évolution C# Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 133. 01/06/2016 133 Formation Programmer en C# 6 alphorm.com™© Plan • Les expressions « Bodied » • Les initiateurs de dictionnaire • Le block « finally » pour l’appel asynchrone « await » • Les filtres d’exceptions
  • 134. 01/06/2016 134 Formation Programmer en C# 6 alphorm.com™© Les expressions Bodied • Les expressions Bodied permettent au Les propriétés Les fonctions à valeur de retour unique Les opérateurs Les indexeurs d’avoir leurs valeurs relatives affectées sous forme des expressions lambda • Le but étant toujours d’améliorer la qualité du code tout en prenant l’aspect performance en considération
  • 135. 01/06/2016 135 Formation Programmer en C# 6 alphorm.com™© Les expressions Bodied Quelques exemples des expressions « Bodied » ()
  • 136. 01/06/2016 136 Formation Programmer en C# 6 alphorm.com™© Les initiateurs de dictionnaires • Les initiateurs de dictionnaires permettent une nouvelle forme d’initiation encore beaucoup plus simple
  • 137. 01/06/2016 137 Formation Programmer en C# 6 alphorm.com™© Le bloque finally pour l’appel asynchrone « await » • La méthode d’appels asynchrones telle qu’elle est introduite en C# 5.0 utilise « async » et « await » pour appeler les services • Au cas où une exception est levée, il est de bonne pratique d’imbriquer le code susceptible dans un bloque try … catch …. • Parfois, il s’avère nécessaire d’exécuter des instructions quelque soit la situation en cas du déclenchement d’une exception ou pas • Tel est le cas de libération des ressources, ou de connexion à une base de données • Dans le cas du C# 5.0, il est nécessaire de libérer les ressources au niveau des deux bloques de code à savoir le bloque principal et le bloque d’exception
  • 138. 01/06/2016 138 Formation Programmer en C# 6 alphorm.com™© Le bloque finally pour l’appel asynchrone « await » • Dans le cas du C# 6.0 il devient possible de placer ce code dupliqué au niveau d’un bloque « finally » La gestion du try … catch … en mode C#5.0 pour le cas du await La gestion du try … catch … en mode C#6.0 pour le cas du await
  • 139. 01/06/2016 139 Formation Programmer en C# 6 alphorm.com™© Les filtres d’exceptions • Les filtres d’exceptions permettent de définir des conditions d’exécution de codes des scénarii alternatifs lors de la levée d’une exception • Cela permet une gestion beaucoup plus granulaire des situations qui ont déclenché une ou plusieurs exceptions Une hiérarchie d’exceptions
  • 140. 01/06/2016 8 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mes articles http://www.c-sharpcorner.com/members/bechir-bejaoui2
  • 141. 01/06/2016 141 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les expressions « Bodied » • Les initiateurs de dictionnaire • Le block « finally » pour l’appel asynchrone « await » • Les filtres d’exceptions
  • 142. 01/06/2016 142 Formation Programmer en C# 6 alphorm.com™© Présentation de .Net Framework 4.6 .Net Framework & .Net Core Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 143. 01/06/2016 143 Formation Programmer en C# 6 alphorm.com™© Plan • Présentation de la .Net Framework • Introduction des nouveautés de la .Net Framework 4.6
  • 144. 01/06/2016 144 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework • Le principal composant du .Net Framework pourra être considéré tout simplement comme une vaste collection de types managés qui sont répartis d’une manière hiérarchique sous forme d’espaces de noms qui représentent une sorte de conteneurs logiques pour ces types et pour d’autres espaces de noms aussi Structure hiérarchique des principaux types prédéfinis au niveau du .Net Framework
  • 145. 01/06/2016 145 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework • Cependant, côté physique il s’agit plutôt de DLL « Dynamic Library Link » ou « Assemblys » qui peuvent être considérés comme des fichiers de package • Le deuxième majeur composant de la .Net Framework c’est le CLR « Le « Common Language Runtime » qui pourra être définit comme une petite machine virtuelle responsable d’exécution des programmes issus des codes managés Code source Itermediate Language Exe ou DLL
  • 146. 01/06/2016 146 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework C# VB C++ Autre Compilation Code en mode Intermediate Language Just In Time Code natif Le CLR Schéma illustratif de transformation du code écrit en code natif
  • 147. 01/06/2016 147 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework • Le cœur de la .Net Framework réside dans l’Assembly nommé mscorlib.dll • Cet Assembly contient les types prédéfinis qui traitent essentiellement : Le traitement des fichiers La sérialisation La réflexion Le Threading L’interopérabilité L’assembly mscorlib.dll
  • 148. 01/06/2016 148 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework • La couche supérieure du .Net Framework réside dans trois Assemblys à savoir : System.dll System.Core.dll System.Xml.dll • Ces deux couches 1er et 2emme niveau constituent le noyau solide de la .Net Framework au dessus duquel les autres couches sont bâties • Le reste des couches sont représentées sous forme d’interfaces applicatives plutôt que des composants essentiels de la .Net Framework
  • 149. 01/06/2016 149 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework Présentation de la .Net Framework 4.6
  • 150. 01/06/2016 150 Formation Programmer en C# 6 alphorm.com™© Présentation de la .Net Framework • Le C# 6.0 cible essentiellement la .Net Framework 4.6 et 4.6.1 • Il est à noter que les applications qui tournent sous le CLR 4.6 peuvent aussi tourner sous le CLR 4.0 puisque ce premier n’est qu’une version « patchée » et non pas une mise à jour proprement dite • Par conséquent, il n’aura pas de soucis de compatibilité lors de migration des anciennes applications tournant sous le CLR 4.0 vers le CLR 4.6 La précision de la .Net Framework Cible au niveau des propriétés du projet
  • 151. 01/06/2016 151 Formation Programmer en C# 6 alphorm.com™© Introduction des nouveautés du .Net Framework 4.6 • L’adoption du protocole HTTP/2 ou le HTTP v2.0 qui est plus performant que le HTTP v1.1 • L’adoption du protocole « Token Binding Protocol » pour les applications qui tournent sous Windows 10 pour des conversations clients/serveurs plus sécurisés • L’introduction d’un compilateur « Just In Time » en mode 64 bits encore plus performant • L’introduction d’une nouvelle classe qui s’appelle AppContext au niveau de l’espace nom System. • Cette classe AppContext offre aux auteurs de librairies un mécanisme flexible de changement entre différentes versions de ces librairies au niveau du code client
  • 152. 01/06/2016 152 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Présentation de la .Net Framework • Introduction des nouveautés de la .Net Framework 4.6
  • 153. 01/06/2016 153 Formation Programmer en C# 6 alphorm.com™© Présentation du .Net Core .Net Framework & .Net Core Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 154. 01/06/2016 154 Formation Programmer en C# 6 alphorm.com™© Plan •Présentation du .Net Core •DNX vs Mono
  • 155. 01/06/2016 155 Formation Programmer en C# 6 alphorm.com™© Présentation du .Net Core • C’est une implémentation réduite du .Net Framework • C’est une version non payante et open source du .Net Framework, elle est téléchargeable à partir du site github sous le lien https://github.com/dotnet/core • A la différence du .Net Framework, le .Net Core utilise une version du CLR « Common Language Runtime » appelée CoreCLR qui est une implémentation réduite du CLR qui est aussi indépendante de toute plateforme et architecture • Le but étant de cibler les plateformes non Windows tel que Linux, Free BSD, MAC OS et bien d’autres plateformes et architectures tels que le ARM souvent utilisées pour le cas des appareils mobiles et les systèmes embarqués
  • 156. 01/06/2016 156 Formation Programmer en C# 6 alphorm.com™© Présentation du .Net Core • Le .Net Core n’implémente que : L’interface native de la console La couche applicative ASP.NET 5.0 • Il n’implémente pas : WPF WINFORMS • Car ce sont des technologies qui dépendent des librairies natives de Windows, cependant, le but étant de viser bien d’autres plateformes
  • 157. 01/06/2016 157 Formation Programmer en C# 6 alphorm.com™© Présentation du .Net Core La structure de la nouvelle plateforme .Net
  • 158. 01/06/2016 9 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe Facebook C# http://www.facebook.com/groups/csharp.programming/
  • 159. 01/06/2016 159 Formation Programmer en C# 6 alphorm.com™© Présentation du .Net Core Une comparaison de performances entre le RyuJIT et JIT64 bits
  • 160. 01/06/2016 160 Formation Programmer en C# 6 alphorm.com™© Présentation du .Net Core • La structure du .Net Core est modulaire, c’est-à-dire on ne parle plus de Assemblys dans ce contexte mais plutôt de modules ou packages • Dans ce cas, il va falloir installer le SDK DNX « Dot Net Execution » qui contient les utilitaires nécessaires pour installer, désinstaller et paqueter les packages .Net Core • Même les Assemblys sont paquetés en cas de besoin pour être utilisés ensuite dans un contexte .Net Core
  • 161. 01/06/2016 161 Formation Programmer en C# 6 alphorm.com™© DNX vs Mono • Il y a pas mal de confusion entre les deux concepts. Pour cette raison il faut bien distinguer DNX et Mono • Mono pourra être définit comme une plate-forme ouverte de développement. Elle est basée sur la spécification CLI « Common Language Infrastructure » qui comprend : Le Compilateur Le CLR « Common Language Runtime » Le BCL « Base Class Library » Le MCL « Mono Class Library »
  • 162. 01/06/2016 162 Formation Programmer en C# 6 alphorm.com™© DNX vs Mono • DNX peut être considéré comme un SDK et non pas comme une plateforme à part entière comme il est le cas pour Mono • Le DNX est composé de trois modules essentiels L’environnement d’exécution DNX Le gestionnaire de versions DNVM Le gestionnaire des utilités DNU contrôle utilise La structure du DNX SDK DNVM Le DNX runtime DNU Utility
  • 163. 01/06/2016 163 Formation Programmer en C# 6 alphorm.com™© DNX vs Mono La structure de la nouvelle plateforme .Net
  • 164. 01/06/2016 164 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Présentation du .Net Core • DNX vs Mono
  • 165. 01/06/2016 165 Formation Programmer en C# 6 alphorm.com™© Installation et configuration du .Net Core .Net Framework & .Net Core Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 166. 01/06/2016 166 Formation Programmer en C# 6 alphorm.com™© Plan • Installation du .Net Core sous Ubuntu
  • 167. 01/06/2016 167 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Installation du .Net Core sous Ubuntu
  • 168. 01/06/2016 168 Formation Programmer en C# 6 alphorm.com™© Installation et configuration du .Net Core .Net Framework & .Net Core Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 169. 01/06/2016 169 Formation Programmer en C# 6 alphorm.com™© Plan • Installation du DNVM pour ASP.NET Core sous Ubuntu
  • 170. 01/06/2016 170 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Installation du DNVM pour ASP.NET Core sous Ubuntu
  • 171. 01/06/2016 171 Formation Programmer en C# 6 alphorm.com™© Installation d'un éditeur de code Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations .Net Framework & .Net Core
  • 172. 01/06/2016 172 Formation Programmer en C# 6 alphorm.com™© Plan • Installation et le choix d'un éditeur de code cas de Sublime Text 3
  • 173. 01/06/2016 173 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Installation d'un éditeur de code Atom Sublime Text 3 Note pad ++
  • 174. 01/06/2016 174 Formation Programmer en C# 6 alphorm.com™© Exemple de projet .Net Core Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations .Net Framework & .Net Core
  • 175. 01/06/2016 175 Formation Programmer en C# 6 alphorm.com™© Plan • Création du premier projet .Net Core sous Ubuntu
  • 176. 01/06/2016 176 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Création du premier projet .Net Core sous Ubuntu
  • 177. 01/06/2016 177 Formation Programmer en C# 6 alphorm.com™© Présentation de Scriptcs Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 178. 01/06/2016 178 Formation Programmer en C# 6 alphorm.com™© Plan •Présentation Scriptcs Engine •Présentation du REPL
  • 179. 01/06/2016 179 Formation Programmer en C# 6 alphorm.com™© Présentation Scriptcs Engine • Le Scriptcs Engine peut être considéré tout simplement comme un interpréteur du code C# • Le code écrit en C# est normalement compilé en CIL « Common Intermediate Language » et puis « imité » en code natif par le JIT « Just In Time » pour qu’il puisse être traité par le système d’exploitation Windows Code C# Code IL Code natif Compilé en Interprété en
  • 180. 01/06/2016 180 Formation Programmer en C# 6 alphorm.com™© Présentation Scriptcs Engine • Pour le cas de Scriptcs, il interprète le code C# en code natif, par conséquent, il n’y aura plus de besoin de génération d’Assemblys .exe et dlls pour construire et appeler les programmes écrits en C# • Il suffit d’appeler le code à partir d’un simple fichier .csx, le Scriptcs Engine s’en occupe dans ce cas pour le mettre en exécution • L’écriture du code devient alors indépendante de toutes sorte d’EDI « Environnement de développement Intégré » et du compilateur csc.exe • L’exécution au niveau des plateformes non Windows devient aussi beaucoup plus simple et flexible Code C# Code natifInterprété en
  • 181. 01/06/2016 181 Formation Programmer en C# 6 alphorm.com™© Présentation Scriptcs Engine • Le déploiement du code écrit sous forme de C# script se fait en terme de packages Nugget ou encore sous forme de modules pour le cas d’ajout d’extensions au Scriptcs lui même Un exemple d’une collection de packages Nugget
  • 182. 01/06/2016 182 Formation Programmer en C# 6 alphorm.com™© Présentation du REPL • Comme tout environnement de script, il est nécessaire d’avoir un Shell pour appeler les scripts et exécuter leurs contenus • Pour le cas des scripts C#, en parle du REPL «Read Eval Print Loop » • Le REPL est exécuté à partir d’une invite de commande simple L’environnement d’exécution des scripts C# ou le REPL
  • 183. 01/06/2016 183 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Présentation Scriptcs Engine •Présentation du REPL
  • 184. 01/06/2016 184 Formation Programmer en C# 6 alphorm.com™© Installation de Scriptcs sous Windows Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 185. 01/06/2016 185 Formation Programmer en C# 6 alphorm.com™© Plan •Installation de Scriptcs sous Windows
  • 186. 01/06/2016 186 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Installation de Scriptcs sous Windows
  • 187. 01/06/2016 187 Formation Programmer en C# 6 alphorm.com™© Installation de Scriptcs sous Linux Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 188. 01/06/2016 188 Formation Programmer en C# 6 alphorm.com™© Plan •Installation de Scriptcs sous Linux Ubuntu
  • 189. 01/06/2016 189 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Installation de Scriptcs sous Linux Ubuntu
  • 190. 01/06/2016 190 Formation Programmer en C# 6 alphorm.com™© Installation d’un éditeur de code pour Windows Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 191. 01/06/2016 191 Formation Programmer en C# 6 alphorm.com™© Plan •Installation d’un éditeur de code pour Windows Server 2012 R2
  • 192. 01/06/2016 192 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Installation d’un éditeur de code pour Windows Server 2012 R2
  • 193. 01/06/2016 193 Formation Programmer en C# 6 alphorm.com™© Appel d'un script C# Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 194. 01/06/2016 194 Formation Programmer en C# 6 alphorm.com™© Plan •Appel d'un script C# à partir d’un fichier .csx
  • 195. 01/06/2016 195 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Appel d'un script C# à partir d’un fichier .csx
  • 196. 01/06/2016 196 Formation Programmer en C# 6 alphorm.com™© Débogage d'un script C# Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 197. 01/06/2016 197 Formation Programmer en C# 6 alphorm.com™© Plan •Le débogage d’un C# script
  • 198. 01/06/2016 198 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Le débogage d’un C# script
  • 199. 01/06/2016 199 Formation Programmer en C# 6 alphorm.com™© Référencement d'un script C# Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 200. 01/06/2016 200 Formation Programmer en C# 6 alphorm.com™© Plan •Le référencement d’un script C# dans un autre script C#
  • 201. 01/06/2016 201 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •Le référencement d’un script C# dans un autre script C#
  • 202. 01/06/2016 202 Formation Programmer en C# 6 alphorm.com™© Utilisation du script cache Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 203. 01/06/2016 203 Formation Programmer en C# 6 alphorm.com™© Plan • L’utilisation du script cache pour augmenter la performance
  • 204. 01/06/2016 204 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • L’utilisation du script cache pour augmenter la performance
  • 205. 01/06/2016 205 Formation Programmer en C# 6 alphorm.com™© L'appel d'un script VB Script Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 206. 01/06/2016 206 Formation Programmer en C# 6 alphorm.com™© Plan •L'appel d'un script VB Script à partir d’un script C#
  • 207. 01/06/2016 207 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •L'appel d'un script VB Script à partir d’un script C#
  • 208. 01/06/2016 208 Formation Programmer en C# 6 alphorm.com™© L'appel du Powershell Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 209. 01/06/2016 209 Formation Programmer en C# 6 alphorm.com™© Plan • L'appel d'une Powershell Command Let à partir d’un script C# • L'appel d'un script Powershell personnalisé à partir d’un script C#
  • 210. 01/06/2016 210 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • L'appel d'une Powershell Command Let à partir d’un script C# • L'appel d'un script Powershell personnalisé à partir d’un script C#
  • 211. 01/06/2016 211 Formation Programmer en C# 6 alphorm.com™© La création d’un package Scriptcs Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 212. 01/06/2016 212 Formation Programmer en C# 6 alphorm.com™© Plan • La création d’un package Scriptcs
  • 213. 01/06/2016 213 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La création d’un package Scriptcs
  • 214. 01/06/2016 214 Formation Programmer en C# 6 alphorm.com™© Le déploiement d’un package Scriptcs Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 215. 01/06/2016 215 Formation Programmer en C# 6 alphorm.com™© Plan • Le déploiement d’un package Scriptcs
  • 216. 01/06/2016 216 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Le déploiement d’un package Scriptcs
  • 217. 01/06/2016 217 Formation Programmer en C# 6 alphorm.com™© La consommation d’un package Scriptcs Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 218. 01/06/2016 218 Formation Programmer en C# 6 alphorm.com™© Plan • Le consommation d’un package Scriptcs
  • 219. 01/06/2016 219 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Le consommation d’un package Scriptcs
  • 220. 01/06/2016 220 Formation Programmer en C# 6 alphorm.com™© L’extension du Scriptcs avec les modules Le Scriptcs Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 221. 01/06/2016 221 Formation Programmer en C# 6 alphorm.com™© Plan • La définition d’un module Scriptcs • Ce que vous pouvez faire avec les modules • L’extension du Scriptcs avec un module « un exemple d’initiation »
  • 222. 01/06/2016 222 Formation Programmer en C# 6 alphorm.com™© La définition d’un module Scriptcs • Un module est une fonctionnalité représentée sous une forme spéciale de package Scriptcs qui est non pas utilisée pour étendre votre code écrit en script C#, c’est-à-dire les scripts .csx mais qui étend l’environnement Scriptcs lui-même en temps de l'exécution. • Le module scriptcs-engine-mono par exemple permet d’étendre le Scriptcs pour qu’il puisse intégrer l’environnement d’exécution mono au lieu du .Net CLR • Les modules Scriptcs sont très puissants, cependant et selon « Glenn Block » l’inventeur de la notion de modules Scritpcs et membre de l’équipe du développement du projet Scriptcs. Les modules représentent un double tranchant, par conséquent, il ne faut pas en abuser
  • 223. 01/06/2016 223 Formation Programmer en C# 6 alphorm.com™© Ce que vous pouvez faire avec les modules • Introduire un nouveau moteur pour l'exécution des scripts, par exemple les moteurs Roslyn , Mono et FSharp sont tous déployés en tant que modules. • Enregistrer des processeurs de ligne « Line Processors » personnalisés. • Remplacer le préprocesseur de fichiers « File PreProcessor » actuel avec un qui est dérivé et qui effectue une analyse syntaxique spéciale du script C#. • L'introduction d'un hôte de script « Script Host » personnalisé • Remplacer le système de fichiers avec une implémentation alternative, tel que « Azure Blob Storage » par exemple. • Créer une nouvelle commande au niveau du REPL
  • 224. 01/06/2016 224 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La définition d’un module Scriptcs • Ce que vous pouvez faire avec les modules • L’extension du Scriptcs avec un module « un exemple d’initiation »
  • 225. 01/06/2016 225 Formation Programmer en C# 6 alphorm.com™© Présentation du compilateur Roslyn Partie I Le Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 226. 01/06/2016 10 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe ma chaine Youtube http://www.youtube.com/user/margoumix
  • 227. 01/06/2016 10 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe ma chaine Youtube http://www.youtube.com/user/margoumix
  • 228. 01/06/2016 10 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe ma chaine Youtube http://www.youtube.com/user/margoumix
  • 229. 01/06/2016 10 Formation Programmer en C# 6 alphorm.com™© Liens utiles • Un lien vers mon groupe ma chaine Youtube http://www.youtube.com/user/margoumix
  • 230. 01/06/2016 230 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Introduire le compilateur Roslyn • Comprendre l’architecture du compilateur Roslyn
  • 231. 01/06/2016 231 Formation Programmer en C# 6 alphorm.com™© Présentation du compilateur Roslyn Partie II Le Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 232. 01/06/2016 232 Formation Programmer en C# 6 alphorm.com™© Plan • Les arbres de syntaxe • La compilation sous Roslyn • Les modèles sémantiques sous Roslyn
  • 233. 01/06/2016 233 Formation Programmer en C# 6 alphorm.com™© Les arbres de syntaxe • Un arbre de syntaxe pourra être considéré comme une structure DOM « Document Object Model » utilisée pour représenter le code source • Un arbre peut contenir : Des objets du type Nœuds Des objets du type Tokens Des objets du type Trivias Des objets du type Spans Des objets du type Kinds Des objets du type Errors Image d’une arbre de syntaxe prise de MSDN
  • 234. 01/06/2016 234 Formation Programmer en C# 6 alphorm.com™© Les arbres de syntaxe (Les nœuds) • Les nœuds de syntaxe sont les principaux éléments des arbres de syntaxe • Ces nœuds représentent des constructions syntaxiques telles que les: Déclarations (les noms de variables, les noms de fonctions, les noms de classes ….) Expressions ( ()=>,_=>,= …) Clauses ou Tokens (if, else, for, while, using, class, struct ….) • Les nœuds de syntaxe admettent toujours des nœuds enfants représentés par la collection Descendant* et un nœud parent représenté par Parent sauf le nœud racine qui n’a pas de nœud parent • Chaque type de nœud est représenté par une classe appropriée qui hérite de la classe SyntaxNode
  • 235. 01/06/2016 235 Formation Programmer en C# 6 alphorm.com™© Les arbres de syntaxe (Les Tokens) • Les Tokens sont les : Mots clés Les identificateurs Les littéraux Les ponctuations • Les Tokens sont caractérisés par le fait qu’ils ne peuvent pas être parents des autres nœuds ou des autres Tokens • Les Tokens sont représentés par la structure SyntaxToken
  • 236. 01/06/2016 236 Formation Programmer en C# 6 alphorm.com™© Les arbres de syntaxe (Les Trivias) • Les Trivias représentent Les espaces Les commentaires Les directives (#define,#pragma,#tryf…..) • Au début, les Trivias n’étaient pas incluses dans l’arbre de syntaxe, elles sont ajoutées par la suite vu leurs importance dans la phase de Refactoring du code • Les Trivias n’admettent pas de parents, elles sont représentées par la structure SyntaxTrivia
  • 237. 01/06/2016 237 Formation Programmer en C# 6 alphorm.com™© Les arbres de syntaxe (Les Spans) • Les Spans représentent les positions des nœuds dans le code source et le nombre de caractères formant ces nœuds • La position et la longueur est représentée par des entiers • Chaque nœud représente deux types de Spans : Span FullSpan qui diffère du Span en comptant les Trivias
  • 238. 01/06/2016 238 Formation Programmer en C# 6 alphorm.com™© Les arbres de syntaxe (Les Kinds) • Les Kinds sont stockés dans l’énumération SyntaxKind • Ils représentent les types des nœuds • Chaque nœud représente la propriété RawKind qui à son tour représente son type
  • 239. 01/06/2016 239 Formation Programmer en C# 6 alphorm.com™© La compilation sous Roslyn • Une compilation est composée de : Code source Les références aux Assemblies nécessaires Les options de compilation • Une compilation transforme chaque élément de code en symbole, le symbole représente un ensemble d’informations que nécessite le compilateur sur un nœud : L’emplacement L’espace nom et le type La signature (abstract, static, public, sealed …)
  • 240. 01/06/2016 240 Formation Programmer en C# 6 alphorm.com™© La compilation sous Roslyn • Les Symboles sont représentés par des classes qui implémentent les interfaces : ISymbol pour les propriétés, les variables et les champs IMethodSymbol pour les procédures et les fonctions • Les compilations sont immutables tout à fait comme les arbres de syntaxe, elles sont représentées par la classe CSharpCompilation qui hérite à son tour de la classe Compilation • La méthode Create est utilisée dans ce cas pour créer une compilation à partir d’un arbre de syntaxe.
  • 241. 01/06/2016 241 Formation Programmer en C# 6 alphorm.com™© Les modèles sémantiques Roslyn • Un modèle sémantique représente les informations sémantiques pour un seul fichier source tel que Les erreurs et les avertissements qui peuvent être générés Les diagnostiques Les informations relatives aux symboles • Les modèles sémantiques sont représentés par la classe SemanticModel • Les modèles sémantiques peuvent répondre à toutes les questions difficiles de compilation qu’un développeur pourra avoir
  • 242. 01/06/2016 242 Formation Programmer en C# 6 alphorm.com™© Les modèles sémantiques Roslyn • Un modèle sémantique est coûteux en terme de performances en le comparant à un arbre de syntaxe • Un modèle sémantique est utilisé pour analyser le code en profondeur contrairement à un arbre syntaxique • Le modèle sémantique constitue le véritable pont entre la syntaxe et les symboles • En effet, les méthodes GetDeclaredSymbol et GetSymbolInfo de la classe SemanticModel permet d’avoir un symbole à partir d’une expression syntaxique
  • 243. 01/06/2016 243 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Les arbres de syntaxe • La compilation sous Roslyn • Les modèles sémantiques sous Roslyn
  • 244. 01/06/2016 244 Formation Programmer en C# 6 alphorm.com™© Présentation du compilateur Roslyn Partie III Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 245. 01/06/2016 245 Formation Programmer en C# 6 alphorm.com™© Plan • Introduction de la notion espace de travail Workspace • Le premier pas vers Roslyn
  • 246. 01/06/2016 246 Formation Programmer en C# 6 alphorm.com™© Introduction de la notion espace travail Workspace • La notion Workspace est le point de départ pour faire l'analyse du code et du Refactoring en terme de solutions complètes • C’est une notion très utile surtout pour écrire des extensions qui visent le TFS « Team Foundation Server » , la solution de collaboration relative à Visual Studio permettant la gestion des solutions, projets et le suivi des éléments de travail, la planification, la gestion de projet en terme de cycle de vie et l'analyse des performances. • L’espace de travail est une API qui permet l'organisation de toutes les informations sur les projets dans une solution dans le modèle d'objet unique • Elle offre un accès direct à des modèles d'objets comme, les arbres de syntaxe, les modèles sémantiques et compilations
  • 247. 01/06/2016 247 Formation Programmer en C# 6 alphorm.com™© Introduction de la notion espace noms namespace • Une solution est considérée comme un modèle immutable des projets et des documents. • Après avoir obtenu une instance de solution de la propriété Workspace Solution, cette instance est immutable • Il est possible de modifier des solutions en construisant de nouvelles instances basées sur des solutions existantes et des changements spécifiques tout à fait comme les arbres de syntaxes. • Un projet est considéré comme une partie de la solution immutable. • Il représente tous les documents de base de code, d’analyses, d’options de compilation et les références projet-à-projet. • Un document est considéré comme une partie du projet
  • 248. 01/06/2016 248 Formation Programmer en C# 6 alphorm.com™© Introduction de la notion espace noms namespace • Un document représente une fichier du code source ou de configuration Une représentation structurelle d’un espace de travail Espace de Travail SolutionSolution N Solution N Solution N Solution N ProjetProjetProjetProjetProjet N DocumentDocumentDocumentDocumentDocument N
  • 249. 01/06/2016 249 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Introduction de la notion espace de travail Workspace • Le premier pas vers Roslyn
  • 250. 01/06/2016 250 Formation Programmer en C# 6 alphorm.com™© Exploration et analyse des arbres de syntaxes Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 251. 01/06/2016 251 Formation Programmer en C# 6 alphorm.com™© Plan • Exploration et analyse des arbres de syntaxes
  • 252. 01/06/2016 252 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Exploration et analyse des arbres de syntaxes
  • 253. 01/06/2016 253 Formation Programmer en C# 6 alphorm.com™© Exploration et analyse des modèles sémantiques Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 254. 01/06/2016 254 Formation Programmer en C# 6 alphorm.com™© Plan • Exploration et analyse des modèles sémantiques
  • 255. 01/06/2016 255 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Exploration et analyse des modèles sémantiques
  • 256. 01/06/2016 256 Formation Programmer en C# 6 alphorm.com™© Exploration et analyse des espaces de travail Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 257. 01/06/2016 257 Formation Programmer en C# 6 alphorm.com™© Plan • Exploration et analyse des espaces de travail
  • 258. 01/06/2016 258 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Exploration et analyse des espaces de travail
  • 259. 01/06/2016 259 Formation Programmer en C# 6 alphorm.com™© Extension Visual Studio Cas du Code Refactoring (VSIX) Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 260. 01/06/2016 260 Formation Programmer en C# 6 alphorm.com™© Plan • Comprendre le mécanisme du code Refactoring (VSIX)
  • 261. 01/06/2016 261 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Comprendre le mécanisme du code Refactoring
  • 262. 01/06/2016 262 Formation Programmer en C# 6 alphorm.com™© Extension Visual Studio Cas du Analyzer with Code Fix Roslyn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 263. 01/06/2016 263 Formation Programmer en C# 6 alphorm.com™© Plan • Comprendre le mécanisme du Analyzer with Code Fix
  • 264. 01/06/2016 264 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Comprendre le mécanisme du Analyzer with Code Fix
  • 265. 01/06/2016 265 Formation Programmer en C# 6 alphorm.com™© Programmation C# 6.0 en Cloud C# 6.0 et le Cloud Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 266. 01/06/2016 266 Formation Programmer en C# 6 alphorm.com™© Plan • Présentation de la notion Cloud et Cloud Stack • Programmation C# en mode Cloud • Introduction de la notion Cloud patterns
  • 267. 01/06/2016 267 Formation Programmer en C# 6 alphorm.com™© Présentation de la notion Cloud et Cloud Stack • Le Cloud ou nuage est tout simplement une grande unité de matériels informatiques (banalisées) qui fonctionne au niveau d'un centre de données qui existe à un coin donné au niveau du monde • Le but derrière cette structure est : Exécuter des programmes Fournir des services Stocker des quantités importantes de données Le cloud computing
  • 268. 01/06/2016 268 Formation Programmer en C# 6 alphorm.com™© Présentation de la notion Cloud et Cloud Stack • Le « Cloud Stack» ou la pile de « Cloud » est composée de plusieurs composants et infrastructures ordonnées selon une structure verticale composée d’une ou des • Infrastructure(s) : « Infrastructure as a Service » ou IaaS . Par analogie à un PC, elle est comparée au matériel informatique • Plateforme(s) : « Platform as a Service » ou PaaS . Par analogie à un PC, elle est comparée au système d’exploitation et les programmes orientés services ou « B to B » • Application(s) : « Software as a Service » ou SaaS c’est l’ensemble des programmes offerts au niveau du « Cloud » pour être consommés par les utilisateurs finaux comme l’ application Office 365
  • 269. 01/06/2016 269 Formation Programmer en C# 6 alphorm.com™© Programmation C# en mode « Cloud » • La programmation « Cloud » est le développement d’une logique de code donné qui pourra cibler les deux niveaux du nuage à savoir PaaS et le SaaS • La programmation en Cloud devrait prendre en considération la portabilité, l'évolutivité et surtout préserver les performances et la stabilité des programmes écrits. • Ils existent plusieurs fournisseurs Cloud tel que Google, Amazon, Azure … • Pour programmer des applications orientées Cloud pour l’infrastructure « Amazon Cloud», Amazon offre la SDK « AWS SDK for .Net » https://aws.amazon.com/sdk-for-net/
  • 270. 01/06/2016 270 Formation Programmer en C# 6 alphorm.com™© Programmation C# en mode Cloud • Pour programmer des applications orientées Cloud pour l’infrastructure Google Cloud, Google offre la SDK « Google Cloud SDK for .Net » https://cloud.google.com/sdk/ • Pour programmer des applications orientées Cloud pour l’infrastructure « Windows Azure » qui est le Cloud Microsoft, il faut créer un compte Azure et ouvrir une session à partir de https://manage.windowsazure.com • La création de compte Azure se fait selon deux modes à savoir : Le mode payant Le mode d’essai gratuit un mois
  • 271. 01/06/2016 271 Formation Programmer en C# 6 alphorm.com™© Programmation C# en mode « Cloud » • Les services offerts qui peuvent être concernés par le développement Cloud sous « Windows Azure » sont principalement : Les données au niveau des bases de données Les fichiers stockés Les services et des applications en terme d’hébergement et déploiement • La gestion des programmes pourrait être faite à travers l’interface de gestion centralisée « Azure Management Studio » téléchargeable à partir de ce lien http://www.cerebrata.com/
  • 272. 01/06/2016 272 Formation Programmer en C# 6 alphorm.com™© Introduction de la notion « Cloud patterns » • Les « Cloud Design Patterns » est un sous ensemble de design patterns qui vise à adopter les bonnes pratiques en terme de qualité de code • Autre que le sens organisationnel, les « Cloud Design Patterns » mettent l’accent sur d’autres aspects importants surtout dans un contexte distribué tel que la performance, la disponibilité, la sécurité et bien d’autres aspects importants • A ce stade, il s’avère constructif d’introduire quelques patterns dans ce contexte en se contentant des descriptions de ces patterns, cependant, les implémentations vues leurs détails importants, elles ne seront pas traitées au niveau de cette présentation.
  • 273. 01/06/2016 273 Formation Programmer en C# 6 alphorm.com™© Introduction de la notion « Cloud patterns » Le Retry pattern : Ce pattern permet la relance d’une nouvelle requête après la levée d’une exception ou une erreur au niveau du service « Cloud » Le Throttling pattern : Permet d’optimiser la qualité d’exécution en cas de charge importante Le Circuit Breaker pattern : Permet de découvrir l’état d’un service ou application « Cloud » avant de lancer une requête vers cette dernière Le Valet Key pattern : Utilisé dans le cas d’échange des fichiers de taille importante de et vers le « Cloud » Le Sharding pattern : Permet de décomposer les données au niveau d’une table en mode horizontal sous forme de partitions ou Shards, le but étant d’optimiser les performances en terme de recherches des données Le CQRS pattern : Permet la séparation des commandes de requêtes des autres commandes d’ajout, suppression et mise à jour de données
  • 274. 01/06/2016 274 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • Présentation de la notion Cloud et Cloud Stack • Programmation C# en mode cloud • Introduction de la notion « Cloud patterns »
  • 275. 01/06/2016 275 Formation Programmer en C# 6 alphorm.com™© La réflexion Les études de cas Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 276. 01/06/2016 276 Formation Programmer en C# 6 alphorm.com™© Plan •La création d’une classe attribut personnalisée
  • 277. 01/06/2016 277 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert •La création d’une classe attribut personnalisée
  • 278. 01/06/2016 278 Formation Programmer en C# 6 alphorm.com™© La sérialisation avancée Les études de cas Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 279. 01/06/2016 279 Formation Programmer en C# 6 alphorm.com™© Plan • La création d’un type « Serializer » personnalisé
  • 280. 01/06/2016 280 Formation Programmer en C# 6 alphorm.com™© Ce qu’on a couvert • La création d’un type « Serializer » personnalisé
  • 281. 01/06/2016 281 Formation Programmer en C# 6 alphorm.com™© La sérialisation avancée Les études de cas Site : http://www.alphorm.com Blog : http://blog.alphorm.com Béchir BEJAOUI Formateur et Consultant indépendant spécialisé en technologie et systèmes d’informations
  • 282. 01/06/2016 282 Formation Programmer en C# 6 alphorm.com™© Plan • La création d’un type « Serializer » personnalisé Pourquoi avoir recourt à un « Serializer » personnalisé Mécanisme de sérialisation du « Serializer » personnalisé Exploration de l’implémentation
  • 283. 01/06/2016 283 Formation Programmer en C# 6 alphorm.com™© Mécanisme de sérialisation du « Serializer » personnalisé Custom Serializer Object Graph Persisté Type Format Mode Stockage 3.Prend 1.Prend 2.Prend 4.Transforme & persiste Processus de sérialisation
  • 284. 01/06/2016 284 Formation Programmer en C# 6 alphorm.com™© Mécanisme de sérialisation du « Serializer » personnalisé Custom Serializer Fichier Graph Extrait + Construction de L’objet dynamiquement Type Format Mode Stockage 3.Prend 1.Prend 2.Prend 4.Transforme & persiste Processus de desérialisation
  • 285. 01/06/2016 285 Formation Programmer en C# 6 alphorm.com™© Mécanisme de sérialisation du « Serializer » personnalisé • L’interface IFormat
  • 286. 01/06/2016 286 Formation Programmer en C# 6 alphorm.com™© Mécanisme de sérialisation du « Serializer » personnalisé • La classe Nœud
  • 287. 01/06/2016 287 Formation Programmer en C# 6 alphorm.com™© Mécanisme de sérialisation du « Serializer » personnalisé • La classe StorageModeAttribute
  • 288. 01/06/2016 288 Formation Programmer en C# 6 alphorm.com™© Mécanisme de sérialisation du « Serializer » personnalisé • La classe FormatAttribute
  • 289. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 290. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 291. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 292. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 293. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 294. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 295. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 296. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 297. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 298. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 299. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 300. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 301. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 302. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 303. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 304. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 305. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 306. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 307. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 308. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 309. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺
  • 310. 01/06/2016 11 Formation Programmer en C# 6 alphorm.com™© Are You ready ? ☺