0% ont trouvé ce document utile (0 vote)
85 vues48 pages

Introduction à .NET et C#

Transféré par

Saritta Saraa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
85 vues48 pages

Introduction à .NET et C#

Transféré par

Saritta Saraa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

.

NET & C#
Sandra CHAVES
Sylvain CUAZ
DESS GI SRR 2002-2003
IMA - Université Grenoble 1
Plan

I. Origine de .NET
II. .NET
III. Le langage C#
IV. Les alternatives
V. Conclusion

.NET & C#
Origine de .NET
 1995 : Microsoft se tourne vers le net

 gros compromis pour vite produire des


outils et technologies basés sur l’Internet

 tentative de ramener un peu d’ordre avec


le concept DNA

.NET & C#
DNA
 3 niveaux
 Active Server Pages pour la présentation,
 Objets métiers en COM au milieu,
 Une base de donnée pour le bas.
 Concept sain, mais difficile à mettre en oeuvre
 D’autres plateformes offrait de bien meilleures
solutions (Unix, J2EE)
 essentiel pour Microsoft de résoudre les
limitations de DNA
.NET & C#
Le remplaçant

 1998 : début de Next Generation Windows


Services (NGWS).
 Développement confidentiel
 NGWS rebaptisé .NET le 22 Juin 2000

.NET & C#
.NET : une plateforme
logicielle

 Description
 Le framework

.NET & C#
Description
 Plateforme logicielle : programmes ne
cible pas une combinaison matériel/OS
mais .NET
 => marcheront partout où est
implémenté .NET
 environnement indépendant d'un langage
 But : écrire des programmes qui
interopère facilement et de façon sécurisé.
.NET & C#
Description
 .NET nom collectif pour des logiciels variés
qui sont construit sur la plateforme .NET
 produits : Visual [Link], [Link]
Server, …
 services : Passport, HailStorm, …
 Les composants qui constituent .NET-la-
platforme sont appelés le Framework .NET.

.NET & C#
.NET Framework
 2 parties principales:
 1. La CLR (Common Language Runtime)
 2. Un ensemble hièrarchique de bibliothéques de
classes

.NET & C#
La CLR
 Le “moteur d’exécution” de .NET
 Les caractéristiques :
 Conversion IL -> code natif
 Gestion Mémoire (garbage collection)
 Vérifie et applique la sécurité
 Charge et exécute les programmes

.NET & C#
Intermediate Language
compilation
Exécution par
Code source IL la CLR

 Indépendant du CPU
 Indépendant du langage
 => chaque langage choisi un sous-ensemble
 Code accessible depuis d’autres langages
 => respect de la Common Language
Specification (CLS) .NET & C#
Managed Code

 code qui cible .NET


 contient des informations supplémentaires
(metadonnées) pour se décrire
 => CLR peut garantir la sécurité,
l’interopérabilité…

.NET & C#
Common Type System

 sert à décrire les types indépendamment


du langage =>
 type-fidelity : permet à des types d'un langage
d'interagir avec des types d'un autre langage
 type-safety : garanti que le code n'accède pas
à des zone mémoires interdites

.NET & C#
Unmanaged Code
 .NET peut utiliser du code sans métadonnées :

1. non « géré »
• peut utiliser la bibliothéque de .NET
• peut compiler en IL
• ne peut bénéficier du GC
2. natif
• pour de meilleures performances
• par exemple WinForms

.NET & C#
Assemblies
 Briques des programmes .NET
 unité fonctionnelle atomique
 Collection de code et de métadonnées
 Contient un Manifest, qui décrit
 son nom
 sa version
 la liste des fichiers
 les dépendances
 les fonctions fournies…
.NET & C#
Module
 Code compilé sans Manifest
 Sert à modularisé le développement

.NET & C#
JIT
 La CLR utilise la compilation Just-In-Time
 Chaque méthode appelée est compilée en code
natif
 appels suivants n’ont pas à être recompilés
 Qq problèmes : exige des resources
 mémoire
 processeur

.NET & C#
JIT
 2 compileurs JIT:
 un normal : optimise pas mal, mais intensif au niveau de la
mémoire et du processeur
 un "EconoJIT” : optimise pas aussi bien, mais requiert
moins de ressources
 Promesse d’un 3eme : un compileur pre-JIT
 = un compileur normal !
 Le seul plus : compile à l’installation => pas
besoin de distribuer du code spécifique pour
chaque plateforme

.NET & C#
Attributes
 Façon flexible et extensible de modifier
l’environnement à la compilation ou à
l’exécution
 Marquer une fonction comme étant
obsolète => warning à la compilation
 Attacher un auteur à chaque bout de code
=> on interroge ces attributs à l’exécution

.NET & C#
La bibliothéque de Classes
 Namespace : ensemble de classes
 La racine des namespaces est System
 Contient les types basiques comme Byte,
Double, Boolean, and String, Object…
 Tous les objets dérivent de [Link]
 value types ≠ objets
 Moyens efficace de convertir des value
types en objets
.NET & C#
Côté client
 L’ensemble des classes est assez complet :
 Collections
 File
 Screen
 network I/O
 Threading
 XML
 Connection aux bases de données…
 Windows Forms alternative au
développement traditionnel pour Windows
.NET & C#
Côté serveur
 Web Services :
composant sur un
serveur web utilisé
par :
 Une application
 Un autre Web Service

.NET & C#
Web Services
 SOAP (Simple Object Access Protocol)
 RPC qui utilise XML sur HTTP

 WSDL (Web Service Description Language)


 décrit la structure des messages

 UDDI (Universal Description, Discovery and


Integration)
 annuaire global des services web
.NET & C#
Web Services
Annuaire
UDDI

WSDL

Recherche serviceJe d’info


fournissur
desWallStreet
services d’info sur WallStreet
WSDL
WSDL

AppA
WebServiceA
WSDL SOAP
.NET & C#
Plan
 Présentation générale de C#
 Syntaxe du langage
 Les plus de C#

.NET & C#
I. Présentation générale
 Nouveau langage de Microsoft
 Langage orienté objet
 Ressemble à C++
 Utilise les classes définies dans .NET
 Pas une partie de .NET, langage comme
un autre
 Permet d’utiliser les concepts de .NET
proprement
.NET & C#
II. Syntaxe du langage
 Définition d’une classe
 Définition d’une méthode
 Principales instructions
 Types valeur et référence

.NET & C#
Définition d’une classe
namespace namespaceName {
using Namespace(s);
[access] [sealed | abstract] class NomClasse
[: Classe, Interface(s)] {
[définition de la classe]
}}
 Accessibilité à la classe
public private
protected internal
protected internal

.NET & C#
Définition d’une méthode
 Une méthode
[access] [new] [static] [abstract] [sealed] [extern]
[virtual | override] [TypeRetour | void] NomMethode
([TypeParam param]) [: base ([param])] {
[corps de la méthode]
}
 La méthode Main
public static [int | void] Main([String[] args]){
[corps de la méthode]
} .NET & C#
public class Parent{
public void DoStuff(string str) {
[Link]("In [Link]: "); }
}
 
public class Child: Parent {
public void DoStuff(string str) {
[Link]("In [Link]: "); }
}
 
public class VirtualTest {
public static void Main(string[] args) {
Child ch = new Child();
[Link]("Test");
((Parent) ch).DoStuff("Second Test");
} }
.NET & C#
 Méthode m(), liste arguments A, une
instance I dont type à la compilation est
C et le type àl’exécution est R (R = C ou
sous classe de C)
 lors de l’appel de méthode m() sur I
1. Recherche méthode dans C (peut être
héritée)
2. Si la méthode de C non virtuelle, on l’appelle
3. Si la méthode de C virtuelle, on recherche
méthode de même signature la plus dérivée
que R peut appeler
.NET & C#
Principales instructions
 if
 while
 do
 for
 switch
 Foreach
foreach (typeObj identifiant in collectionObj)
action;
.NET & C#
Types valeur et référence
 Type référence
 créé sur le « tas » (grâce à new)
 libéré par le ramasse miettes
 Type valeur
 créé sur la pile
 supprimé au retour d’un appel de méthode
 pas sous la responsabilité du ramasse miettes
 Déclaration : mot-clé struct (au lieu de classe)

.NET & C#
III. Les plus de C#
 Structures
 Le boxing/unboxing
 Les properties
 Les attributs
 Les indexeurs
 Les délégués
 Pointeur et code non protégé: unsafe code
 Le versionning
.NET & C#
Structs
 Mot-clé struct
 Objets de type valeur
 Déclaration des mêmes types de membres
qu’une classe possible
 Pas d’héritage possible
 Peut implémenter des interfaces
 La visibilité par défaut = protected

.NET & C#
Le boxing / unboxing
 Conversion type valeur <-> type référence
 Boxing (type valeur -> type référence) :
une instance de type objet allouée et la valeur copiée
dans cet objet
 Unboxing (type référence -> type valeur) :
. Vérifie que le type de la valeur de l’instance et le type
du type valeur voulu correspondent
. sort la valeur de l’instance
 ex : object box = 123;
int i = (int)box;

.NET & C#
Les properties
 extension des champs ([Link])
 Ne définit pas d’emplacement mémoire
 Définit des accesseurs décrivant instructions à exécuter
 propriétés en lecture, écriture ou lecture/écriture
 public class User {
private string name;
public string Name{
set { name = value; } // ecriture
}
}

.NET & C#
Les attributs
 un moyen d'insérer des annotations (i.e méta-
données)
 Ex:
[Serializable]: Similaire à l'implémentation de
l'interface [Link] de Java.
 Peut créer ses propres attributs en sous-classant
[Link]

.NET & C#
[AttributeUsage([Link])]
public class HelpAttribute: Attribute {
private string url;
public HelpAttribute(string url) { [Link] = url; } }

[Help("[Link]
public class Class1 {
public void F() {} }

class Test {
static void Main() {
Type type = typeof(Class1);
object[] arr =
[Link](typeof(HelpAttribute), false);
HelpAttribute ha = (HelpAttribute) arr[0];
[Link]("Url = {0}", [Link]);
} } .NET & C#
Les indexers
 Permet à un objet d’être indexé
 Exemple : peut accèder aux éléments d’une
pile sans dépiler les éléments
 déclaration similaire à la déclaration d’une
property
 différences :
. nom de la propriété est « this »
. Paramêtre représentant l’indexe
 ex : public object this[int index] {
get { … }
set { … } }
.NET & C#
Les délégués
 proche des pointeurs de fonction en C ou C++
 Encapsule 1 methode ou plus : «callable entity»
 Pour methode d’instance, callable entity = 1 instance et la
méthode à appliquer sur l’instance
 Pour methode statique, callable entity = la methode
 L’appel à la méthode = appel au délégué auquel on fournit
les bons paramêtres
 Déclaration, instanciation, appel:
 delegate [type | void] delegateName ([type param]*);
 delegateName d = new delegateName (nomFonction);
 D(param);

.NET & C#
Unsafe code
 déclare des pointeurs (noté type*)
 void* = pointeur vers un type inconnu
 Du code « unsafe » doit être marqué avec le
mot-clé « unsafe »
 Pointeurs ne sont pas gérés par le GC
 un pointeur peut être null
 opérateurs
 & adresse d’une variable
 * déréférencement
 [] indexe un pointeur
 ==, !=, <, >, <= et => pour
.NET & C#
comparer des pointeurs
Le versionning
 possibilité d'exécuter plusieurs versions différentes d'une
même classe
 les programmes C# référencent statiquement des
bibliothèques de classes à l'aide de leur nom mais aussi
de leur version
 Une nouvelle version est
 source compatible : si du code qui en dépend doit être recompilé
pour marcher
 binary compatible : si du code qui en dépend marche sans rien
avoir à faire

.NET & C#
Les alternatives
 J2EE (JOnAS, JBoss)
 Mono (Ximian)
 Compilateur C#
 CLR
 Bibliothéques
 Très actif
 DotGnu (FSF)
 Remplaçant complet de .NET
 Fonctionalités de HailStorm
 Pas très actif .NET & C#
Microsoft .NET vs. J2EE
 Offrent les mêmes fonctionnalités
 Seule ≠ de .NET : indépendant du langage
 + : paradis pour dévelopeur
 - : enfer pour chef de projet
 La barrière Java est vite franchie

.NET & C#
Conclusion
 Microsoft se vante de la portabilité et de
l’ouverture mais :
 Si app accède à des services natifs « pour
la performance » alors réduit à une app
Windows
 Exemple : WinForms
 Peut faires des extensions propriètaires
 cf J++, HTML, WMP plug-in, …
.NET & C#
Références
 [Link]
 [Link]
 [Link]
 [Link]
 [Link]
-[Link]

.NET & C#
Références
 [Link]
 [Link]
/index/category/87
 [Link]

 [Link]
 [Link]

.NET & C#

Vous aimerez peut-être aussi