320
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

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

Embed Size (px)

Citation preview

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

01/06/2016

1

Formation Programmer en C# 6 alphorm.com™©

Formation C# 6.0

Avancée

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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

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

01/06/2016

4

Formation Programmer en C# 6 alphorm.com™©

Mes formations sur Alphorm

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

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

Page 6: Alphorm.com support de la formation programmer en C# 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

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

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#

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

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

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

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/

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

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

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

01/06/2016

11

Formation Programmer en C# 6 alphorm.com™©

Are You ready ? ☺

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

01/06/2016

12

Formation Programmer en C# 6 alphorm.com™©

Les fonctionnalités C# 2.0 Partie I

Le spectre d’évolution C#

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

13

Formation Programmer en C# 6 alphorm.com™©

Plan

• Les types Génériques

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

01/06/2016

14

Formation Programmer en C# 6 alphorm.com™©

Les types génériques

• Les types Génériques sont des types qui permettent d’attarder la spécification des types tels que :

� Les propriétés, indexeurs et champs

� Les arguments et types de retour des méthodes et des constructeurs

� Les éléments au niveau d’une collection

� Les définitions des classes, interfaces ,Delegates et structures

• Au moment de l’appel, le compilateur génère du code pour gérer le type de données spécifiques.

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

01/06/2016

15

Formation Programmer en C# 6 alphorm.com™©

Les types génériques

• Voici à présent un exemple d’utilisation des types génériques :

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

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

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

01/06/2016

17

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Les types Génériques

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

19

Formation Programmer en C# 6 alphorm.com™©

Plan

• Les types Nullables

• Les itérateurs

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

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

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

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

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

01/06/2016

22

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Les types Nullables

• Les itérateurs

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

24

Formation Programmer en C# 6 alphorm.com™©

Plan

• Les classes partielles

• Les classes statiques

• Les méthodes anonymes

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

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

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

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

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

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

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

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

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

30

Formation Programmer en C# 6 alphorm.com™©

Plan

• Les initiateurs d’objets

• Les initiateurs de collections

• Les types implicites

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

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

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

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

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

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 variablelocale anonyme

La définition de la même variable en mode CIL

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

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

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

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

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

37

Formation Programmer en C# 6 alphorm.com™©

Plan

• Les méthodes extensions

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

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

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

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 namespacediffé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

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

01/06/2016

40

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Les méthodes extensions

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

42

Formation Programmer en C# 6 alphorm.com™©

Plan

• Le LINQ

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

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 » ….

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

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

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

01/06/2016

45

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Le LINQ

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

47

Formation Programmer en C# 6 alphorm.com™©

Plan

• Le LINQ to SQL

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

01/06/2016

48

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Le LINQ to SQL

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

50

Formation Programmer en C# 6 alphorm.com™©

Plan

• Le LINQ to Entities

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

01/06/2016

51

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Le LINQ to Entities

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

53

Formation Programmer en C# 6 alphorm.com™©

Plan

• Le LINQ to XML

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

01/06/2016

54

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Le LINQ to XML

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

56

Formation Programmer en C# 6 alphorm.com™©

Plan

• La jointure en mode LINQ

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

01/06/2016

57

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La jointure en mode LINQ

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

59

Formation Programmer en C# 6 alphorm.com™©

Plan

• Les expressions Lambda

• Les méthodes partielles

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

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

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

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 »

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

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

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

01/06/2016

63

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Les expressions Lambda

• Les méthodes partielles

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

65

Formation Programmer en C# 6 alphorm.com™©

Plan

• La programmation dynamique

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

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

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

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 Bindersont 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

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

01/06/2016

68

Formation Programmer en C# 6 alphorm.com™©

La programmation dynamique

C# VB.NET

Dynamic LanguageRuntime

Common LanguageRuntime

.Net

DOM

Script Engines

Expression Tree

CallSite<T>

Position du DLR dans la plateforme .Net

Binder

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

01/06/2016

69

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La programmation dynamique

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

71

Formation Programmer en C# 6 alphorm.com™©

Plan

• La programmation dynamique

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

01/06/2016

72

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La programmation dynamique

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

74

Formation Programmer en C# 6 alphorm.com™©

Plan

• La programmation dynamique

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

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

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

01/06/2016

76

Formation Programmer en C# 6 alphorm.com™©

La programmation dynamique• Il y a souvent une amalgame entre utilisation d’un objet ExpandoObject

et faite d’ avoir recours à un dictionnaire

Tableau comparatif entre l’utilisation d’un dictionnaire et un ExpandoObejct

Définition du code

Identique quant à la définition d’un objet classique

Identique quant à la population d’une collection

Difficulté - Difficultés en cas des objets hiérarchiques complexes

Souplesse Très souple au changements des structures d’objets qu’on veut créer

-

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

01/06/2016

77

Formation Programmer en C# 6 alphorm.com™©

La programmation dynamique

Comportement Implémente l’interfaceINotifyPropertyChanged

N’implémente pas l’interfaceINotifyPropertyChanged

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)

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

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

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

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

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

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

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

01/06/2016

81

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La programmation dynamique

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

83

Formation Programmer en C# 6 alphorm.com™©

Plan• Les paramètres optionnels

• Les arguments nommés

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

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

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

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

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

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

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

01/06/2016

87

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert• Les paramètres optionnels

• Les arguments nommés

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

89

Formation Programmer en C# 6 alphorm.com™©

Plan• La variance des génériques

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

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 Atout 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.

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

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

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

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>

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

01/06/2016

93

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La variance des génériques

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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

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

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 classeSystem.Threading.Tasks.Task<TResult>, qui hérite de Task.

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

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é.

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

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

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

01/06/2016

100

Formation Programmer en C# 6 alphorm.com™©

La gestion des exceptions issues de Task

Une méthode à déclenchementpotentiel d’erreur

La gestion de l’erreur dans un contexte task

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

01/06/2016

101

Formation Programmer en C# 6 alphorm.com™©

La gestion des exceptions issues de Task

Une méthode à déclenchementpotentiel d’erreur

La gestion de l’erreur dans un contexte taskUne alternative qui utilise la prédicatHandle de l’exception AgregateException

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

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

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

01/06/2016

103

Formation Programmer en C# 6 alphorm.com™©

L’annulation de Task

La structure CancellationToken

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

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

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

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

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

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émentun 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 uneméthode nommée ou fournit un code Inline.

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

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 .

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

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

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

01/06/2016

109

Formation Programmer en C# 6 alphorm.com™©

Nouvelles collections supportant le multithreading

Type Description

BlockingCollection<T> Fournit des fonctionnalités de délimitation et de blocage pour tout type qui implémente IProducerConsumerCollection<T>

ConcurrentDictionary<TKey, TValue> Implémentation thread-safe d'un dictionnaire de paires clé-valeur.

ConcurrentQueue<T> Implémentation thread-safe d'une file d'attente FIFO (premier entré, premier sorti).

ConcurrentStack<T> Implémentation thread-safe d'une pile LIFO (dernier entré, premier sorti).

ConcurrentBag<T> Implémentation thread-safe d'une collection non ordonnée d'éléments.

IProducerConsumerCollection<T> Interface qu'un type doit être implémenté pour être utilisé dans uneBlockingCollection.

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

01/06/2016

110

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La classe Task

• La gestion des exceptions issues de Task

• L’annulation de Task

• La programmation parallèle

• Nouvelles collections supportant le multithreading

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

01/06/2016

111

Formation Programmer en C# 6 alphorm.com™©

Les fonctionnalités C# 5.0

Le spectre d’évolution C#

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

112

Formation Programmer en C# 6 alphorm.com™©

Plan• La nouvelle forme des fonctions asynchrones async/await

• Les classes CallerMemberName, CallerFilePath et CallerLineNumber

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

01/06/2016

113

Formation Programmer en C# 6 alphorm.com™©

Les fonctions asynchrones

• Les fonctions asynchrones représentent une nouvelle forme d’implémentation des tâches relativement de longue durée

• Les fonctions asynchrones évitent que l’application soit figée jusqu’à la terminaison d’une tâche alternative

• Cette fonctionnalité à été déjà utilisée, elle était représentée par le model APM Asynchronous Programming Model

• Auparavant, nous utilisons les délégués pour implémenter l’exécution des tâches d’une manière simultanée et asynchrone

• Avec C# 5.0, il y a eu des améliorations majeures dans ce contexte qui facilite la vie au programmeur en lui laissant se concentrer plutôt sur sa tâche principale au lieu d’ajouter de l’extra code pour gérer la situation

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

01/06/2016

114

Formation Programmer en C# 6 alphorm.com™©

Les fonctions asynchrones

• Pour utiliser « async » et « await » d’une manière appropriée, il faut que le type de retour des fonctions asynchrones marquées par le mot clé « async » soit :

� void

� Task

� Task<T> ou T est un type générique qui représente le type de retour

• Lors de la conversion d’une méthode synchrone en asynchrone

� Toute méthode retournant un type T, doit devenir une méthode retournant un type Task<T>

� Toute méthode retournant « void », doit devenir une méthode retournant un type Task

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

01/06/2016

115

Formation Programmer en C# 6 alphorm.com™©

Les fonctions asynchrones

• L’utilisation du type void a une particularité, c’est qu’il rend la gestion des événements possible, car généralement les gestionnaires d’événements ont le type de retour void

• Cependant, il va falloir prendre en considération quelques différences à l’égard d’utilisation de void et Task

• Toute exception levée en cas de void sera portée directement sur l’objet SynchronizationContext qui était actif lors de l’appel de la méthode asynchrone

• L’exception une fois levée, elle ne sera pas automatiquement capturée au sein du fonction appelante comportant un type de retour void

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

01/06/2016

116

Formation Programmer en C# 6 alphorm.com™©

Les fonctions asynchrones

• Un autre détail qui rend la gestion encore plus difficile en cas des méthodes void c’est la précision du moment de réponse

• Il est facile de commencer plusieurs méthodes asynchrones void , mais il est difficile de déterminer quand elles finissent.

• Pour le cas des méthodes Task , il est possible de gérer ce côté via l’appel de la méthode WhenAll(Ienumerable<Task>)

• Il faut garder à l’esprit d’utiliser les méthodes void seulement en cas de gestion des événements asynchrones

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

01/06/2016

117

Formation Programmer en C# 6 alphorm.com™©

Les fonctions asynchrones

Exemple de définition de async /await

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

01/06/2016

118

Formation Programmer en C# 6 alphorm.com™©

Les fonctions asynchrones

Exemple du code appelant

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

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

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

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

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

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

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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

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

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#

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

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 :

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

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

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

01/06/2016

128

Formation Programmer en C# 6 alphorm.com™©

L’expression nameof

• Ce pendant, il aura toujours une contrainte de point de vue performances en utilisant ces deux techniques

• L’opérateur « nameof » vient pour corriger ce défaut

Une autre technique en se basant sur la réflexion

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

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 :

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

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

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

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

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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

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

01/06/2016

135

Formation Programmer en C# 6 alphorm.com™©

Les expressions Bodied

Quelques exemples des expressions « Bodied »

()

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

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

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

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

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

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

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

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

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

01/06/2016

140

Formation Programmer en C# 6 alphorm.com™©

Les filtres d’exceptions

Exemple illustratif d’utilisation de filtres d’exceptions

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

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

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

Page 144: Alphorm.com support de la formation programmer en C# 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

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

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 sourceItermediateLanguage

Exe ou DLL

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

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

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

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

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

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

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

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

Page 150: Alphorm.com support de la formation programmer en C# 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

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

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

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

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

Page 153: Alphorm.com support de la formation programmer en C# 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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

154

Formation Programmer en C# 6 alphorm.com™©

Plan

•Présentation du .Net Core

•DNX vs Mono

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

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

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

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

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

01/06/2016

157

Formation Programmer en C# 6 alphorm.com™©

Présentation du .Net Core

La structure de la nouvelle plateforme .Net

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

01/06/2016

158

Formation Programmer en C# 6 alphorm.com™©

Présentation du .Net Core

• Le .Net Core utilise le module CoreFx pour gérer les fonctionnalités principales telles que la gestion des entrées/sorties, XML, les collections

• Le .Net Core peut utiliser à présent le nouveau compilateur RyuJIT qui est un compilateur 64 bits beaucoup plus performant que le JIT

• RyuJIT fait une compilation pendant

une duré égale presque à 30 %

de la duré de compilation faite

par le JIT au pire des cas

Installation du RyuJIT

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

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

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

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

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

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 »

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

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

DNUUtility

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

01/06/2016

163

Formation Programmer en C# 6 alphorm.com™©

DNX vs Mono

La structure de la nouvelle plateforme .Net

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

01/06/2016

164

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Présentation du .Net Core

• DNX vs Mono

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

166

Formation Programmer en C# 6 alphorm.com™©

Plan• Installation du .Net Core sous Ubuntu

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

01/06/2016

167

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Installation du .Net Core sous Ubuntu

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

169

Formation Programmer en C# 6 alphorm.com™©

Plan• Installation du DNVM pour ASP.NET Core sous Ubuntu

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

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

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

01/06/2016

171

Formation Programmer en C# 6 alphorm.com™©

Installation d'un éditeur de code

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

.Net Framework & .Net Core

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

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

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

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 ++

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

01/06/2016

174

Formation Programmer en C# 6 alphorm.com™©

Exemple de projet .Net Core

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

.Net Framework & .Net Core

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

01/06/2016

175

Formation Programmer en C# 6 alphorm.com™©

Plan

• Création du premier projet .Net Core sous Ubuntu

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

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

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

01/06/2016

177

Formation Programmer en C# 6 alphorm.com™©

Présentation de Scriptcs

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

178

Formation Programmer en C# 6 alphorm.com™©

Plan

•Présentation Scriptcs Engine

•Présentation du REPL

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

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

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

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 .exeet 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

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

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

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

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

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

01/06/2016

183

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

•Présentation Scriptcs Engine

•Présentation du REPL

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

01/06/2016

184

Formation Programmer en C# 6 alphorm.com™©

Installation de Scriptcs sous Windows

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

185

Formation Programmer en C# 6 alphorm.com™©

Plan

• Installation de Scriptcs sous Windows

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

01/06/2016

186

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Installation de Scriptcs sous Windows

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

01/06/2016

187

Formation Programmer en C# 6 alphorm.com™©

Installation de Scriptcs sous Linux

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

188

Formation Programmer en C# 6 alphorm.com™©

Plan

• Installation de Scriptcs sous Linux Ubuntu

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

01/06/2016

189

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Installation de Scriptcs sous Linux Ubuntu

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

191

Formation Programmer en C# 6 alphorm.com™©

Plan

• Installation d’un éditeur de code pour Windows Server 2012 R2

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

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

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

01/06/2016

193

Formation Programmer en C# 6 alphorm.com™©

Appel d'un script C#

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

194

Formation Programmer en C# 6 alphorm.com™©

Plan

•Appel d'un script C# à partir d’un fichier .csx

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

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

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

01/06/2016

196

Formation Programmer en C# 6 alphorm.com™©

Débogage d'un script C#

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

197

Formation Programmer en C# 6 alphorm.com™©

Plan

•Le débogage d’un C# script

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

01/06/2016

198

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

•Le débogage d’un C# script

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

01/06/2016

199

Formation Programmer en C# 6 alphorm.com™©

Référencement d'un script C#

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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#

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

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#

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

01/06/2016

202

Formation Programmer en C# 6 alphorm.com™©

Utilisation du script cache

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

203

Formation Programmer en C# 6 alphorm.com™©

Plan

• L’utilisation du script cache pour augmenter la performance

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

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

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

01/06/2016

205

Formation Programmer en C# 6 alphorm.com™©

L'appel d'un script VB Script

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

206

Formation Programmer en C# 6 alphorm.com™©

Plan

•L'appel d'un script VB Script à partir d’un script C#

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

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#

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

01/06/2016

208

Formation Programmer en C# 6 alphorm.com™©

L'appel du Powershell

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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#

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

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#

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

01/06/2016

211

Formation Programmer en C# 6 alphorm.com™©

La création d’un package Scriptcs

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

212

Formation Programmer en C# 6 alphorm.com™©

Plan

• La création d’un package Scriptcs

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

01/06/2016

213

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La création d’un package Scriptcs

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

01/06/2016

214

Formation Programmer en C# 6 alphorm.com™©

Le déploiement d’un package Scriptcs

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

215

Formation Programmer en C# 6 alphorm.com™©

Plan

• Le déploiement d’un package Scriptcs

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

01/06/2016

216

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Le déploiement d’un package Scriptcs

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

01/06/2016

217

Formation Programmer en C# 6 alphorm.com™©

La consommation d’un package Scriptcs

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

218

Formation Programmer en C# 6 alphorm.com™©

Plan

• Le consommation d’un package Scriptcs

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

01/06/2016

219

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Le consommation d’un package Scriptcs

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

01/06/2016

220

Formation Programmer en C# 6 alphorm.com™©

L’extension du Scriptcs avec les modules

Le Scriptcs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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 »

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

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

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

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

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

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 »

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

01/06/2016

225

Formation Programmer en C# 6 alphorm.com™©

Présentation du compilateur Roslyn Partie I

Le Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

226

Formation Programmer en C# 6 alphorm.com™©

Plan

• Introduire le compilateur Roslyn

• Comprendre l’architecture du compilateur Roslyn

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

01/06/2016

227

Formation Programmer en C# 6 alphorm.com™©

Introduire le compilateur Roslyn

• C’est un nouveau compilateur, entièrement écrit en C #. Ce compilateur a pour but de développer :

� Les outils de Refactoring personnalisés

� Les éditeurs avec coloration syntaxique et la complétion du code

� Les plugins Visual Studio personnalisés

• Le Roslyn est introduit aussi dans un contexte stratégique de longue halène :

� Préparer et consolider la terrasse pour la nouvelle génération des compilateurs dites « Compiler as service »

� Etendre la plateforme .Net sur les autres environnements essentiellement non Windows

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

01/06/2016

228

Formation Programmer en C# 6 alphorm.com™©

Introduire le compilateur Roslyn

• Le code source de Roslyn est « open source » sous la licence Apache

• Il est téléchargeable à partir du :

� Site github: https://github.com/dotnet/roslyn

� Site codeplex: https://roslyn.codeplex.com/

• Les Assemblies qui composent la bibliothèque Roslyn sont :

� Microsoft.CodeAnalysis.dll

� Microsoft.CodeAnalysis.Csharp.dll

� System.Collections.Immutable.dll

� System.Reflection.Metadata.dll

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

01/06/2016

229

Formation Programmer en C# 6 alphorm.com™©

Introduire le compilateur Roslyn

• L'architecture Roslyn sépare la compilation en trois phases principales :

� Analyser le code écrit en C#

� Convertir le code écrit en symboles et résoudre le lien vers les dépendances

� Emmiter le résultat de conversion vers les Assemblies

• Le test du code est réalisé au niveau d’une instance de Visual Studio expérimentale

Instance de Visual Studio expérimentale

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

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

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

01/06/2016

231

Formation Programmer en C# 6 alphorm.com™©

Présentation du compilateur Roslyn Partie II

Le Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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 ErrorsImage d’une arbre de syntaxe

prise de MSDN

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

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

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

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

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

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

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

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

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

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

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

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 …)

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

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.

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

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

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

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

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

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

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

01/06/2016

244

Formation Programmer en C# 6 alphorm.com™©

Présentation du compilateur Roslyn Partie III

Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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

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

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é WorkspaceSolution, 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

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

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

Solution Solution N

Solution N

Solution N

Solution N

ProjetProjetProjetProjetProjet N

DocumentDocumentDocumentDocumentDocument N

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

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

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

01/06/2016

250

Formation Programmer en C# 6 alphorm.com™©

Exploration et analyse des arbres de syntaxes

Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

251

Formation Programmer en C# 6 alphorm.com™©

Plan

• Exploration et analyse des arbres de syntaxes

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

01/06/2016

252

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Exploration et analyse des arbres de syntaxes

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

01/06/2016

253

Formation Programmer en C# 6 alphorm.com™©

Exploration et analyse des modèles sémantiques

Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

254

Formation Programmer en C# 6 alphorm.com™©

Plan

• Exploration et analyse des modèles sémantiques

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

01/06/2016

255

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Exploration et analyse des modèles sémantiques

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

01/06/2016

256

Formation Programmer en C# 6 alphorm.com™©

Exploration et analyse des espaces de travail

Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

257

Formation Programmer en C# 6 alphorm.com™©

Plan

• Exploration et analyse des espaces de travail

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

01/06/2016

258

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Exploration et analyse des espaces de travail

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

01/06/2016

259

Formation Programmer en C# 6 alphorm.com™©

Extension Visual StudioCas du Code Refactoring (VSIX)

Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

260

Formation Programmer en C# 6 alphorm.com™©

Plan

• Comprendre le mécanisme du code Refactoring (VSIX)

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

01/06/2016

261

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Comprendre le mécanisme du code Refactoring

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

01/06/2016

262

Formation Programmer en C# 6 alphorm.com™©

Extension Visual StudioCas du

Analyzer with Code Fix

Roslyn

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

263

Formation Programmer en C# 6 alphorm.com™©

Plan

• Comprendre le mécanisme du Analyzer with Code Fix

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

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

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

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.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

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

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

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

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

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/

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

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

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

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/

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

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.

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

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

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

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 »

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

01/06/2016

275

Formation Programmer en C# 6 alphorm.com™©

La réflexion

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

276

Formation Programmer en C# 6 alphorm.com™©

Plan

•La création d’une classe attribut personnalisée

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

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

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

01/06/2016

278

Formation Programmer en C# 6 alphorm.com™©

La sérialisationavancée

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

279

Formation Programmer en C# 6 alphorm.com™©

Plan

• La création d’un type « Serializer » personnalisé

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

01/06/2016

280

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La création d’un type « Serializer » personnalisé

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

01/06/2016

281

Formation Programmer en C# 6 alphorm.com™©

La sérialisationavancée

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

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

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

01/06/2016

283

Formation Programmer en C# 6 alphorm.com™©

Mécanisme de sérialisation du « Serializer » personnalisé

Custom Serializer

ObjectGraph

Persisté

TypeFormat

Mode Stockage

3.Prend

1.Prend 2.Prend

4.Transforme& persiste

Processus de sérialisation

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

01/06/2016

284

Formation Programmer en C# 6 alphorm.com™©

Mécanisme de sérialisation du « Serializer » personnalisé

Custom Serializer

Fichier

GraphExtrait

+Construction de

L’objetdynamiquement

TypeFormat

Mode Stockage

3.Prend

1.Prend 2.Prend

4.Transforme& persiste

Processus de desérialisation

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

01/06/2016

285

Formation Programmer en C# 6 alphorm.com™©

Mécanisme de sérialisation du « Serializer » personnalisé

• L’interface IFormat

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

01/06/2016

286

Formation Programmer en C# 6 alphorm.com™©

Mécanisme de sérialisation du « Serializer » personnalisé

• La classe Nœud

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

01/06/2016

287

Formation Programmer en C# 6 alphorm.com™©

Mécanisme de sérialisation du « Serializer » personnalisé

• La classe StorageModeAttribute

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

01/06/2016

288

Formation Programmer en C# 6 alphorm.com™©

Mécanisme de sérialisation du « Serializer » personnalisé

• La classe FormatAttribute

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

01/06/2016

289

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• 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

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

01/06/2016

290

Formation Programmer en C# 6 alphorm.com™©

La programmation dynamique

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

291

Formation Programmer en C# 6 alphorm.com™©

Plan

• Etendre une classe non dynamique au temps d’exécution

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

01/06/2016

292

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Etendre une classe non dynamique au temps d’exécution

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

01/06/2016

293

Formation Programmer en C# 6 alphorm.com™©

Le Threading

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

294

Formation Programmer en C# 6 alphorm.com™©

Plan

• La création d’un multi thread Crawler

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

01/06/2016

295

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La création d’un multi thread Crawler

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

01/06/2016

296

Formation Programmer en C# 6 alphorm.com™©

Interopérabilité

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

297

Formation Programmer en C# 6 alphorm.com™©

Plan

• La communication entre une application .net C# et une carte électronique programmable à base de AVR Atmega 16

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

01/06/2016

298

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La communication entre une application .net C# et une carte électronique programmable à base de AVR Atmega 16

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

01/06/2016

299

Formation Programmer en C# 6 alphorm.com™©

Bases de données

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

300

Formation Programmer en C# 6 alphorm.com™©

Plan

• La connexion à une base de donnée MySQL cas d’une application Console cas basé sur ADO.NET

• Création d’une application MVC5 basée sur MySQL cas basé sur EntityFramework 6

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

01/06/2016

301

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La connexion à une base de donnée MySQL cas d’une application Console cas basé sur ADO.NET

• Création d’une application MVC5 basée sur MySQL cas basé sur EntityFramework 6

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

01/06/2016

302

Formation Programmer en C# 6 alphorm.com™©

Les types

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

303

Formation Programmer en C# 6 alphorm.com™©

Plan

• L’implémentation du type matrice

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

01/06/2016

304

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• L’implémentation du type matrice

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

01/06/2016

305

Formation Programmer en C# 6 alphorm.com™©

Les collections

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

306

Formation Programmer en C# 6 alphorm.com™©

Plan

• La création d'une collection observable personnalisée

� Approche 1 cas d’implémentation des événements

� Approche 2 cas d’utilisation des attributs personnalisé

� Approche 3 cas d’implémentation du patron de conception observable

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

01/06/2016

307

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La création d'une collection observable personnalisée

� Approche 1 cas d’implémentation des événements

� Approche 2 cas d’utilisation des attributs personnalisé

� Approche 3 cas d’implémentation du patron de conception observable

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

01/06/2016

308

Formation Programmer en C# 6 alphorm.com™©

LINQ

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

309

Formation Programmer en C# 6 alphorm.com™©

Plan

• La création d’un fournisseur de LINQ personnalisé

� Les principaux Principes à tenir

� Les principaux liens à visiter

� Exploration et test d’un fournisseur Linq basique

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

01/06/2016

310

Formation Programmer en C# 6 alphorm.com™©

Les principaux Principes à tenir

• IQueryable

• IQueryProvider

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

01/06/2016

311

Formation Programmer en C# 6 alphorm.com™©

Les principaux Principes à tenir

• Les expressions

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

01/06/2016

312

Formation Programmer en C# 6 alphorm.com™©

Les principaux liens à visiter

• Un exemple pas à pas qui n’est pas fonctionnel fournit par MSDN, et il n’est pas mis à jour!

https://msdn.microsoft.com/en-us/library/bb546158(v=vs.110).aspx

• Les expressions

https://msdn.microsoft.com/fr-fr/library/ms173144.aspx

• Pour comprendre comment implémenter un visiteur d’arborescence

https://msdn.microsoft.com/fr-fr/library/bb882521(v=vs.90).aspx

Pour accélérer votre le développement d’un fournisseur de LINQ personnalisé

https://github.com/re-motion/Relinq

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

01/06/2016

313

Formation Programmer en C# 6 alphorm.com™©

Les principaux liens à visiter

• Un lien vers un diagramme qui décrit le principe de fonctionnement de LINQ to SQL

http://www.devbible.com/UserFiles/1483901625/1166729295.jpg

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

01/06/2016

314

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• La création d’un fournisseur de LINQ personnalisé

� Les principaux Principes à tenir

� Les principaux liens à visiter

� Exploration et test d’un fournisseur Linq basique

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

01/06/2016

315

Formation Programmer en C# 6 alphorm.com™©

Scriptcs

Les études de cas

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

316

Formation Programmer en C# 6 alphorm.com™©

Plan

• Exploration et test d’un package Scriptcs cas de SQLTOXMLJSON

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

01/06/2016

317

Formation Programmer en C# 6 alphorm.com™©

Ce qu’on a couvert

• Exploration et test d’un package Scriptcs cas de SQLTOXMLJSON

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

01/06/2016

318

Formation Programmer en C# 6 alphorm.com™©

Le Bilan

Le mot de la fin

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Béchir BEJAOUIFormateur et Consultant indépendant spécialisé en technologie et systèmes d’informations

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

01/06/2016

319

Formation Programmer en C# 6 alphorm.com™©

Le bilan

• Cinq chapitres

� Spectre d’évolution C# à partir de la version 2.0 jusqu’à la version 6.0

� Le .Net Framework 4.6 & .Net Core version 1.0

� Le Scriptcs

� Le Roslyn

� Le C# et le Cloud, une introduction de la programmation Cloud

� Des études de cas sous forme de projets C#

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

01/06/2016

320

Formation Programmer en C# 6 alphorm.com™©

Vos questions & remarques

• Vos questions et remarques sont les bienvenues sur

Mon compte Linked In:

http://tn.linkedin.com/in/bejaoui-06b2452b

Mon groupe C# sur Facebook:

http://www.facebook.com/groups/937775196280145/

Mon mail:

[email protected]