Microsoft .NET
- Ce cours :
\\santiago\Cours et TPs 2005-2006\Cedrik Poirey\MS.NET
Historique 2000
XML
Web Services
1995
1990 Internet
GUI
1981
PC Visual
IE, IIS Studio
Visual Studio
Windows .NET
Visual BASIC
MS-DOS
BASIC
.NET ???
Expérience
.NET Services Utilisateur
.NET Devices,
.NET ???
VisualStudio.NET
.NET Framework
Experiences
utilisateur
Server 2000
2001 Server
Center 2000
Server 2000
Server 2000
SQL Server
Information
ISA Server
Application
Commerce
Integration
Exchange
BizTalk
Mobile
2000
2000
2000
Host
Serveurs
Enterprise Servers
Windows 2000 Server
.NET ???
.NET Clients
Windows-powered
Supporte XML et les services Web
Fonctionne en autonome ou en
mode connecté
Sommaire
Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
FRAMEWORK
Vue d’ensemble
Web Rich
Services Clients
XML Any
Database
Relational Access
FRAMEWORK
Objectifs
Intégration de l’existant
Multiples langages de programmation (vingtaine)
Interopérabilité COM
Compatibilité « side by side » (2 versions d’un même composant)
Développement d’applications simplifié
Modèle de programmation unifié
Elever le niveau d’abstraction (=>modèle objet)
classe, interface, héritage, propriété, event, constructor, exception…
Elimination complète de la plomberie COM
Bibliothèque de classe riche et extensible
Intégration native des standards Web
Environnement d’exécution robuste et sécurisé
Code managé: (GC, Type Safe, Self-configuring, dynamically
tuning)
Runtime Security (unification du mode de traitement des erreurs)
Déploiement et administration simplifiés
Assemblies (versioning, securité, evolution des DLLs)
Installation Zero-Impact (Xcopy, pas d’enregistrement)
FRAMEWORK
.NET Framework
RAD, Héritage, Stateless,
Composition, Contrôle, Mixe de code dans
Delegation performance Des pages HTML
Windows API
FRAMEWORK
ASP.NET Windows
Web Forms Web Services Forms
Common Language:
Ouvert à différentes syntaxes (CLS)
FrameWork Objet pour le développeur
Runtime
Une exécution managée et contrôlée
Managed Code, Managed Memory
Services ( XML, DATA, WEB …)
Basé sur :
Win32, XML, SOAP
Inter opère avec DCOM/COM, COM+1.0
FRAMEWORK
.NET Syntaxes
VB C++ C# J# …
System.Data System.Xml
ADO SQL XSLT Serialization
Design SQLTypes XPath
System
VB C++ C# J# …
Visual Studio.NET
ASP.NET
Web Forms & Windows Forms
Web Services
ADO.NET
Soumis
(Données &àXML)
L’ECMA
Base Class Library
Métadonnées : création et
utilisation
Sérialisation Code Réflexion
source
Exportateur TLB Concepteurs
Compilateur
Compilateurs Débogueur
Chargeur
Assembly
de classes
Première
référence
Compilateur du code
au type
IL en code natif
Support
d'exécution
Premier
Code appel de
Gestionnaires natif méthode
de code managé
Système
de sécurité Processeur
C# & IL
Utilisation du désassembleur ILDASM pour retrouver le
code IL d’un assembly (exe ou dll).
Garbage Collector
Managed Heap (tas managé)
Créer au démarrage du process
( + heap dédié aux larges object, > 20000 bytes)
Réservation d’une zone contiguë
Gestion d’un pointeur sur le prochain : « NextObjPtr »
Managed
Heap
~Aussi rapide qu’une allocation « Stack »
NextObjPtr • Incrémenter le pointeur de heap
• Copie du buffer et appel constructeur
Objet C
Objet B
Objet A En fin de heap :
• Allocation/réservation (win32)
Le managed heap connaît a tout • Garbage Collection
moment le type d’un objet • Travail par génération pour limiter le travail
CLR/GC
Garbage Collector
Optimisation par Gestion de Générations
Postulats :
Plus les objets sont récents, plus courte est leur vie.
Plus un objet est vieux, plus sa vie est longue.
Les objets les plus récents tendent a avoir plus d’échanges et sont
sollicités plus fréquemment, « en même » temps.
Compacter une portion de heap est plus rapide que de tout
compacter
Rechercher a « regrouper » les objets
Bénéficier le plus possible du cache processeur
Limiter les accès « lointains »
Test sur P 200 Mhz : 1 milliseconde pour un GC de génération 0
(full GC)
Objectif, « No more time than an ordinary page fault »
CLR/GC
Garbage Collector
Generation 1 Generation 0
Allocation d’objets
Déréférencement
Mark
Compact
C# et VB.NET
VB .NET – Les nouveautés
C# .NET – Bref aperçu
Langages/Nouveautés VB
Le langage VB .NET
Gestion d’erreur
Gestion par exception
On oublie les «On error GOTO»
Mot-clés : Try ; catch ; throw
Langages/Sommaire
C# et VB.NET
VB .NET – Les nouveautés
C# .NET – Bref aperçu
Langages/C#
C# - La syntaxe
Le meilleur du C++ et de VB
Soumis à l’ECMA
Langages/C#
C# et le framework
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
Langages/C#
C#.NET – La base en C#
Langages/C#
Sommaire
Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
VS .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Introduction
Objectifs (1)
Amélioration des performances
code compilé, services de mises en cache
Puissance et souplesse
basé sur la «plateforme» CLR, multi langage
Simplicité
séparation interface/logique ; services du CLR (GC, ref.)
Gestion aisée
configuration hiérarchique basé sur du texte
déploiement par simple copie, pas de redémarrage du serveur
ASP .NET/Introduction
Objectifs (2)
Évolutivité et disponibilité
processus supervisés et managés par le runtime de ASP.NET
(remplacement automatique si pb)
Personnalisation et extensibilité
possibilité d'étendre ou de remplacer n'importe quel sous-
composant du runtime de ASP.NET
Sécurité
l'authentification Windows intégrée
configuration par application
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Web Forms
Améliorations :
possibilité de créer et d'employer des contrôles d'interface
utilisateur (réutilisation, reduction de la quantité de code)
organisation claire de la logique des pages pour éviter le code
«spaghetti»)
une prise en charge forte du design WYSIWYG des pages.
ASP .NET/Web Forms
Démo (demo1.aspx)
ASP .NET/Web Forms
Démo (demo2.aspx)
ASP .NET/Web Forms
Démo (control.aspx)
ASP .NET/Web Forms
Démo… (evenement.aspx)
ASP .NET/Web Forms
Validation de formulaires
Moyen convivial, mais puissant, de détecter les erreurs
dans les formulaires d'entrée
Affichage de messages
Adaptation au client
Client supérieur : JavaScript et DHTML
Client inférieur : aller-retour sur le serveur
Démo (validator.aspx)
ASP .NET/Web Forms
Méthode code-behind
Démo (intro13.aspx)
ASP .NET/Web Forms
Démo VS.NET
Résumé
Web Forms ASP.NET fournit un moyen aisé, mais puissant, de
générer une interface utilisateur Web dynamique.
Les pages Web Forms ASP.NET peuvent cibler n'importe quel
navigateur client (aucun cookie ou bibliothèque de scripts n'est
requis).
Les pages Web Forms ASP.NET assurent la compatibilité de la
syntaxe avec les pages ASP existantes.
Les contrôles serveur ASP.NET permettent d'encapsuler aisément
des fonctionnalités courantes.
ASP.NET est fourni avec 45 contrôles serveur intégrés. Les
développeurs peuvent également utiliser des contrôles créés par
des tiers.
Les contrôles serveur ASP.NET peuvent projeter automatiquement
du code HTML de niveau supérieur et de niveau inférieur.
Les modèles ASP.NET permettent de personnaliser aisément
l'apparence des contrôles serveur de liste.
Les contrôles de validation ASP.NET permettent d'effectuer
aisément une validation des données déclarative sur le client ou le
serveur.
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Services Web
Démo…
TP
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Applications Web
Définition
Création
Démo
ASP .NET/Applications Web
Exemple dangereux :
<%
Application("counter") = CType(Application("counter") + 1, Int32)
%>
Code thread-safe :
<%
Application.Lock()
Application("counter") = CType(Application("counter") + 1, Int32)
Application.UnLock()
%>
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Cache
Services de cache
Exemple :
Exemple :
<%@ Register TagPrefix="Acme" TagName="Menu" Src="Menu.ascx" %>
<html> <body>
<Acme:Menu Category="LeftMenu" runat=server/>
Hi, the time is now: <%=Now%>
<Acme:Menu Category="RightMenu" runat=server/>
</body> </html>
Exemple :
‘mise en cache
Cache("mykey") = myValue
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/configuration
Vue d’ensemble
Fichiers de texte brut qui peuvent être lus et écrits par les
utilisateurs du serveur (protégés par IIS).
Exemple :
<configuration>
<appSettings>
<add key="WSURL" value="http://localhost/WSTP/Service1.asmx"/>
</appSettings>
<!-- etc… -->
</configuration>
Extraction :
String wsurl = ConfigurationSettings.AppSettings("WSURL") ;
Démo
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Déploiement
Arborescence
Chargement de classe :
Lors de la résolution de classe, ne charge jamais la DLL physique,
mais une copie de la DLL d’assembly.
Possibilité de supprimer, remplacer, renommer à tout moment un
assembly.
Detection automatique par le CLR des modifications prises en
compte sans redémarrer le serveur
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Securité
Authentification et autorisation
Authentification
l'action de déterminer l'identité de l'entité à l'origine de la requête
généralement une paire nom/mot de passe
Autorisation
processus consistant à déterminer si une entité authentifiée peut
accéder à une ressource donnée.
Configuration
Specification dans web.config du type d’authentification à
mettre en place
possibilité : None, Windows, Passport, Forms
exemple : <authentication mode="Forms"/>
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Localisation
Vue d’ensemble
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Traçage
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/ Déboguage
Déboguage
Démo
ASP .NET/Sommaire
ASP .NET
Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/ Performance
Conseils (1)
Conseils (2)
Outil proposé
HTTP Request
IIS
ASP.NET
Win2k Server
Sommaire
Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
Les objets COM+
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
ADO .NET/Sommaire
ADO .NET
Présentation
Objets
Resumé
ADO .NET/Présentation
Définition
System.Data
Mode déconnecté
Mode Connecté Dataset qui cache les données
Managed Provider sans maintien de la connexion
Accès physique à la base
ADO .NET/Présentation
Mode déconnecté
Exemple d’architecture
ADO .NET/Sommaire
ADO .NET
Présentation
Objets
Resumé
ADO .NET/Objets
Connexions
Objets utilisés pour se connecter à une base de donnée
2 possibilités :
Fournisseur de donnée spécifique
SQL Server (System.Data.SqlClient)
Oracle Server (System.Data.OracleClient)
Fournisseur de donnée OLE DB .NET (System.Data.OleDb)
Pour tout type de connexion
Exemple :
public sub Run()
Dim mySqlConnection as SqlConnection
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
try
mySqlConnection.Open()
Console.WriteLine("Connexion {0} ouverte", mySqlConnection.ConnectionString)
' Close the connection explicitly
mySqlConnection.Close()
Console.WriteLine("Connexion ferme. Il est important de fermer les connexions explicitement.")
catch
Console.WriteLine("Impossible d'ouvrir la connexion {0}", mySqlConnection.ConnectionString)
end try
end sub
ADO .NET/Objets
Command
Information envoyée à une base de donnée
Objet présenté par les classes spécifiques d’un fournisseur (ex:
SqlCommand)
Type : INSERT, SELECT, UPDATE, DELETE, Appel de
procédures stockées,…
Exemple :
public sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlCommand as SqlCommand
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values (‘poil’)”, myConnection)
try
myConnection.Open()
mySqlCommand.ExecuteNonQuery()
Message = "Nouvel enregistrement dans la table Customers de Bank.«
myConnection.Close()
catch myException as Exception
Message= "Impossible d'inserer l'enregistrement: " + myException.ToString()
end try
Console.Write(Message)
end sub
ADO .NET/Objets
DataReader
Objet similaire à un curseur de données
en lecture seule/avance seule
prend en charge les données à deux dimensions (flat) ainsi que les
données hiérarchiques
Exemple :
public sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlCommand as SqlCommand
Dim myReader as SqlDataReader
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlCommand = new SqlCommand(“select * from CUSTOMERS”, myConnection)
try
myConnection.Open()
myReader = mySqlCommand.ExecuteReader()
do while (myReader.Read())
Console.Write(myReader("CustomerID").ToString())
loop
myConnection.Close()
catch myException as Exception
…
end try
end sub
ADO .NET/Objets
DataSet :
similaire à ADO Recordset (mais + puissant et toujours en mode
déconnecté)
cache de donnée avec structure similaire à une BD
Pas d’interaction directe avec la source de données
Nombreuses caractéristiques XML
DataAdapter :
«pont» entre le DataSet et la source de données
mise à jour de la BD à partir du DataSet (méthode update)
Définition explicite des commandes d’INSERT, DELETE et UPDATE
pour répercuter sur la BD les modifications du DataSet (ou
methode SqlCommandBuilder() plus coûteuse)
ADO .NET/Objets
mySqlDataAdapter.Fill(myDataSet, "Region")
‘insert
Dim myDataRow2 as DataRow
myDataRow2 = myDataSet.Tables(“CUSTOMERS").NewRow()
myDataRow2(“NAME“) = “poil”
myDataSet.Tables("Region").Rows.Add(myDataRow2)
try
mySqlDataAdapter.Update(myDataSet, "Region")
Console.Write("Mise jour réussie du DataSet !")
catch e as Exception
Console.Write(e.ToString())
end try
end sub
ADO .NET/Sommaire
ADO .NET
Présentation
Objets
Resumé
ADO .NET/Résumé
Résumé
ADO.NET est la nouvelle évolution de ADO pour le .Net Framework.
ADO.NET a été créé en mettant l'accent sur les caractéristiques
multicouches, sans état et XML au premier plan. Deux nouveaux
objets, les DataSet et DataAdapter, ont été introduits pour ces
scénarios.
ADO.NET peut être utilisé pour obtenir des données à partir d'un flux,
ou d'enregistrer des données dans un cache pour effectuer des
modifications.
La documentation contient de nombreuses autres informations sur
ADO.NET.
N'oubliez pas que vous pouvez exécuter une commande directement
sur la base de données pour effectuer des insertions, des mises à jour
et des suppressions. Il n'est pas nécessaire de placer les données dans
un DataSet avant de pouvoir insérer, mettre à jour ou supprimer
celles-ci.
De plus, un DataSet peut être utilisé pour se lier aux données, se
déplacer dans les données, et naviguer dans les relations de données.
Annexe : liens utiles
Programmation PocketPC :
http://www.codeppc.com/ (eVB & eVC)
http://www.codeppc.net/ (SDE)