SlidesDotNetJussieu - Hugues Moore`s Blog

Download Report

Transcript SlidesDotNetJussieu - Hugues Moore`s Blog

Présentation et démos disponibles :
http://www.msfrancedev.net/Prez/20100916-JUSSIEU.zip
La plateforme .NET
vue par le développeur
Université Jussieu
11 octobre 2011
Hugues Moore
AZEO – http://www.azeo.com
http://huguesmoore.wordpress.com
La Présentation est
basée sur
Université Jussieu
16 septembre 2010
Pascal Belaud
Microsoft France
http://blogs.msdn.com/Pascal
http://www.saga-fr.net
La vision .NET
Historique .NET pour les
développeurs
Première ligne de code écrite (ASP
.NET) en Novembre 1997
Sortie de Visual Studio .NET 2002 et du
Framework .NET 1.0 en Janvier 2002
Sortie de Visual Studio .NET 2003 et du
Framework .NET 1.1 en Avril 2003
Historique .NET pour les
développeurs
Sortie de Visual Studio 2005, du Framework .
NET 2.0 et de SQL Server 2005 en Novembre
2005
Sortie du Framework .NET 3.0 en Novembre
2006
Framework .NET 2.0
+
Windows Presentation Foundation (WPF)
Windows Communication Foundation (WCF)
Windows Workflow Foundation (WF)
Historique .NET pour les
développeurs
Sortie de Visual Studio 2008, du Framework .
NET 3.5 en Novembre 2007
Framework .NET 3.0
+
LINQ
Historique .NET pour les
développeurs
Sortie de Visual Studio 2010, du Framework .
NET 4.0 en Avril 2010
CLR 4.0
Framework .NET 3.5
+
Parallel Extensions
.NET pour les développeurs
Visual Studio 2010
Des versions Express à la version
Ultimate
Les versions Express sont
TOTALEMENT gratuites pour tout le
monde
Les versions Express = Gratuites
http://www.microsoft.com/express
Gratuit pour les étudiants
Si votre établissement est abonné au
programme MSDNAA, demandez à vos
professeurs l’accès gratuit aux médias
Sinon, il suffit d’aller ici :
http://www.microsoft.com/france/msdn/
abonnements/academic/etudiants/
telechargementdirect.mspx
Voir
Machine de démonstrations
Windows 7
COM/Win32
.NET 1.1
.NET Framework 1.1
.NET 2.0
.NET Framework 2.0
.NET 3.0
.NET 3.5
.NET Framework 3.5
Visual Studio 2008
.NET 4.0
.NET Framework 4.0
Visual Studio 2010
SQL Server
SQL Server 2008 Express
SQL Server 2008
Saga .NET
Retrouver une grosse partie des
démonstrations sous forme de
WebCasts : http://www.saga-fr.net
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
Les langages sur .Net
VB
C++
C#
J#
JScript
Cobol
…
Comment installer .NET ?
1- Visual Studio 2008
La plateforme .NET
Le Software Development Kit (SDK)
Visual Studio en tant qu’IDE
Comment installer .NET ?
2- Software Development Kit (SDK)
La plateforme .NET
Le Software Development Kit (SDK)
http://www.microsoft.com/downloads/details.aspx?FamilyID=
e6e1c3df-a74f-4207-8586-711ebe331cdc&DisplayLang=en
Comment installer .NET ?
3- .NET Redistribuable
La plateforme .NET
http://www.microsoft.com/downloads/details.aspx?familyid=3
33325FD-AE52-4E35-B531-508D977D32A6&displaylang=en
Les langages sur .Net
*.vb
*.cpp
*.cs
*.jsl
*.js
*.cob
*.?
VB
C++
C#
J#
JScript
Cobol
…
Respectent la Common Language Specification (CLS)
Microsoft Intermediate Language (MSIL)
Indépendant de la plate-forme hardware
Les langages sur .Net
*.vb
*.cpp
*.cs
*.jsl
*.js
*.cob
*.?
Langage C#
VB
C++
C#
Common Language Specification (CLS)
J#
JScript Cobol
…
Soumis et validé
comme un standard
Microsoft
Language (MSIL)
par ECMAIntermediate
et ISO
Les langages disponibles
•
•
•
•
•
Perl
Python
Cobol
Haskell
ML
• JScript
•
•
•
•
•
•
Ada
APL
Eiffel
Pascal
Fortran
PHP
•
•
•
•
Managed C++
Visual Basic
C#
J#
• SmallTalk
•
•
•
•
•
•
•
•
Oberon
Scheme
Mercury
Oz
Objective Caml
Delphi
WinDev
…
démo
Multi Langages
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
La plateforme .Net
Microsoft Intermediate Language (MSIL)
Soumis et validé
à l’ISO et ECMA
Common Language Runtime (CLR)
Vista
Windows XP
Windows 2000
NT 4.0*
Windows 98, Me
Implémentée par MS
PocketPC*
…
Petit lexique avant d’aller plus loin
Le monde .NET est dit « Managé »
Le monde Win32/COM est dit « Non
managé »
Toute DLL ou EXE .NET est appelé une
Assembly
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
Common Language Runtime
Beaucoup de concepts ont été ramenés au
niveau de la CLR, donc accessibles par tout
langage
Debug
Types unifiés
Modèle d’exception pour tout le monde
Garbage Collector
…
Common Language Runtime
Common Types System
démo
Common Type System
Garbage Collector
IDisposable
Value / Reference types
Il y’a une nette différence de
comportement en mémoire entre une
value Type et une Reference
La mémoire est scindée en 2 parties :
Stack : pile
Heap : tas (cible unique du GC)
Value / Reference types
Les Value types (System.ValueType)
sont directement stockées dans la Stack
Les Reference types (System.Object)
sont stockées à la fois dans la Stack et
dans la Heap :
Pointeur dans la Stack
L’objet lui-même dans la Heap
Value types
bool
byte
char
decimal
double
enum
float
int
long
sbyte
short
struct
uint
ulong
ushort
int valeur = 2;
valeur (=2)
public class MaClasse
{
public property int Valeur
{
get; set;
}
}
MaClasse maClasse = new MaClasse();
maClasse.Valeur = 3;
maClasse
.Valeur (=3)
Stack
Heap
valeur = 2
Index = 3
int valeur = 2;
MaMéthode1(valeur);
Console.WriteLine(valeur);
Stack
public void MaMéthode1(int index)
{
index = 3;
}
Heap
valeur = 2
Valeur =
valeur = 2
Index = 4
int valeur = 2;
MaMéthode2(ref valeur);
Console.WriteLine(valeur);
Stack
public void MaMéthode2(ref int index)
{
index = 4;
}
Heap
valeur = 4
public class MaClasse
{
public int Valeur
{
get; set;
}
}
maClasse
.Valeur = 2
maRef
MaClasse maClasse = new MaClasse();
maClasse.Valeur = 2;
MaMéthode1(maClasse);
Console.WriteLine(maClasse.Valeur);
public void MaMéthode1(MaClasse maRef)
{
maRef = null;
}
Stack
Heap
maClasse.Valeur = 2
public class MaClasse
{
public int Valeur
{
get; set;
}
}
maClasse =
maClasse
maRef
.Valeur = 2
Stack
Heap
MaClasse maClasse = new MaClasse();
maClasse.Valeur = 2;
MaMéthode2(ref maClasse);
Console.WriteLine(maClasse.Valeur);
public void MaMéthode2(ref MaClasse maRef)
{
maRef = null;
}
Attention DANGER
int nombreA = 3;
object monEntier = nombreA;
Console.WriteLine(monEntier);
monEntier = 3
monEntier = 4;
Console.WriteLine(nombreA);
nombreA = 3
int nombreB = (int)monEntier;
Console.WriteLine(nombreB);
nombreB = 4
nombreB = 5;
Console.WriteLine(nombreA);
nombreA = 3
Boxing/Unboxing
Le Boxing et
Unboxing est très
coûteux en
mémoire et en
temps !
nombreA
=3
monEntier
nombre
= 3 puis 4
nombreB
= 4 puis 5
Stack
A utiliser avec modération…
Heap
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
Le .Net Framework
Microsoft Intermediate Language (MSIL)
Framework Class Library
Accessible depuis tous les langages
Common Language Runtime (CLR)
Le .Net Framework
System.Windows.Forms
System.Web
Services
Description
Discovery
Protocols
UI
HtmlControls
WebControls
Caching
Configuration
Security
SessionState
Design
ComponentModel
System.Drawing
Drawing2D
Imaging
System.Data
Printing
Text
System.Xml
OleDb
SqlClient
OracleClient
XSLT
Design
SqlTypes
OracleTypes
XPath
Serialization
System
Collections
Configuration
Diagnostics
Globalization
IO
Net
Reflection
Resources
Security
ServiceProcess
Text
Threading
Runtime
InteropServices
Remoting
Serialization
démo
Threading
Generics
LINQ
LINQ et les nouveautés
syntaxiques par l’exemple
AutoImplemented
Properties
Object
Initializers
Anonymous
Delegate
Lambda
Expression
Type
Inference
Extension
Method
Iterator
Lambda
Expression
Query
Operators
Query
Expression
Implicitly
Typed Local
Variable
Anonymous
Type
Les variantes de LINQ
Programming languages
C#
…
VB.NET
LINQ building blocks
others
Standard Query Operators
Query expressions
Expression trees
LINQ providers
LINQ to Objects
LINQ to XML
LINQ to SQL
LINQ to DataSet
LINQ to Entities
…
Data sources
<customer>
<name />
<city />
</customer>
objects
XML
?
RDBMS
DataSet
ADO.NET
Entity Framework
others
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
L’enfer des DLLs (DLL Hell)
Application A
Application B
Application C
Composant v3.0
v1.0
v2.0
Application D
Déploiement simplifié
Registry non utilisée
Déploiement par XCOPY
Redirection d’assemblies par version
Redirection d’assemblies par version de la
plateforme
Scénario de démonstration n°1
Client.exe (v1.0)
GetVersion
MaClasse.dll (v1.0)
Client.exe (v2.0)
GetVersion
MaClasse.dll (v2.0)
démo
Déploiement
Global Assemblies Cache
Redirection de versions
Scénario de démonstration n°2
Compta.dll
MaClasse.dll (v1.0)
Client.exe
MaClasse.dll (v2.0)
RH.dll
Agenda de la présentation
Multi Langages
Multi Plateformes
Common Language Runtime (CLR)
Framework Class Library (FCL)
Déploiement
Sécurité
Sécurité
Signature d’une assembly
Clé publique / clé privée (sn.exe)
Protection de la propriété intellectuelle
Gestion des permissions
démo
Signature
Obfuscation
Permissions
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Visual Studio 2008
Beaucoup de nouveautés pour accélérer les
développements
IDE unifié pour tout type de développement
Refactoring
Class Diagram
Tests Unitaires
démo
Nouveautés VS 2008
- Debug NETFX
-Performance Session
- IDE
- Class Diagram
- Settings
- Team Foundation Server
- Refactoring
- Debugger Visualizer
-Tests Unitaires
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Patron : dis-moi garçon, tu as 1 heure pour
me développer une application Windows
avec laquelle je peux, en donnant le
symbole d’une société quotée en bourse,
avoir en retour le cours en temps réel de
son action.
Vous : …?
Patron : t’es encore là ?
Un Service Web, c’est quoi ?
Un service Web est une « unité logique
applicative » accessible en utilisant les
protocoles standard d’Internet
Caractéristiques:
Réutilisable
Indépendamment de
la plate-forme (UNIX, Windows, …)
l’implémentation (VB, C#, Java, …)
l’architecture sous-jacente (.NET, J2EE, …)
Les Services Web, c’est quoi ?
Ce sont des «librairies» fournissant des
données et des services à d’autres
applications
Combinent les meilleurs aspects du
développement à base de composant et du
Web
La base de la «vision» .NET
Je recherche
un service WEB
Annuaire
UDDI
J’ai trouvé! Voici le serveur
hébergeant ce service web
Quel est le format d’appel du
service que tu proposes ?
Contrat
SOAP
Voici mon contrat (WSDL)
XML
Client
Serveur
XML
J’ai compris comment invoquer
ton service et je t’envoie un document
XML représentant ma requête
XML
J’ai exécuté ta requête et je te retourne le résultat
WS (.Net 2) ===> WCF (.Net 3.5)
Client
Service
WCF: Endpoint
Client
Service
Endpoint
Endpoint
Endpoint
Endpoint
WCF: Address, Binding, Contract
Client
Service
C
B
A
A
B
C
A
B
C
A
B
C
Address
Binding
Contract
Where?
How?
What?
Endpoint
démo
Premiers Services
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Historique de l’accès aux données
L’accès aux données est une longue
histoire chez Microsoft
L’approche permettant d’apprendre un
modèle de programmation et de
pouvoir attaquer n’importe quelle
source de données
Historique de l’accès aux données
L’époque DOS (1980s)
Application
Escape Code Sequences
pour XX
Escape Code Sequences
pour YY
Imprimante
YY
XX
Historique de l’accès aux données
L’époque Windows (1990s)
Gestionnaire
d’impression
Application
Driver XX
Escape Code
Sequence pour XX
Imprimante
YY
XX
Driver YY
Escape Code
Sequence pour YY
Historique de l’accès aux données
Accès universel aux SGBD : ODBC
Gestionnaire
ODBC
Application
Driver
ODBC XX
Syntaxe SQL XX
SGBD YY
XX
Driver
ODBC YY
Syntaxe SQL YY
Historique de l’accès aux données
Accès universel aux données : OLEDB
Gestionnaire
OLEDB
Application
Provider
OLEDB XX
Syntaxe SQL Like XX
Source YY
XX
Provider
OLEDB YY
Syntaxe SQL Like YY
OLEDB et création d’ADO
Inconvénient majeur
Ecrite en C
Interdite aux langages « COM » et
de scripting
Création d’ADO
ActiveX Data Objects
Accès aux données
ADO .NET est la version managée de ADO
Accès OLEDB: System.Data.OleDb
Accès SQL Server : System.Data.SqlClient
Accès Oracle : System.Data.OracleClient
Accès ODBC : System.Data.Odbc
Scénarios supportés par ADO.NET
Scénario connecté via un curseur
Scénario déconnecté via une base de
données en mémoire
ADO .NET
Supporte le scénario connecté:
.NET Data Provider
IDataReader
IDbConnection
IDbTransaction
BD
IDbCommand
IDataParameter
IDataReader
Autre managed provider : DB2
Autre Managed Provider : MySQL
démo
Création d’un SqlDataReader
ADO .NET
Supporte le scénario déconnecté:
IDataAdapter & DataSet DataSet
DataTableCollection
BD
DataTable
DataRow
DataColumn
Constraint
.NET Data Provider
IDbConnection
IDbTransaction
IDataAdapter
SelectCommand
InsertCommand
IDbCommand
IDataParameter
UpdateCommand
DeleteCommand
DataRelationCollection
démo
Création d’un DataSet
Sécurité dans les bases de données
Ne donner que les droits nécessaires
Crypter les données sensibles
Utiliser des procédures stockées
Attention aux attaques de type
SQL INJECTION
démo
Attaque par SQL INJECTION
SQL Server 2008
L’une des bases de données la moins chère et
l’une des plus puissantes du marché
Existe en de nombreuses versions:
Serveur
Express (station cliente) : gratuite*
PDA : gratuite*
* Ne tient pas compte de la CAL cliente si
connexion à un serveur SQL Server 2005
central
Etat de l’art à ce jour en performance
Nombre de transactions bancaires en Europe
23 milliards par an, soit 44 000 par minutes
X 27
SQL Server 2008
Une plateforme complète et intégrée
La CLR 2.0 est hébergée
SQL Engine
CLR 2.0
SQL OS
CLR 2.0
Windows
SQL Server et .NET Framework 2.0
Environnement de programmation pour
Functions
Stored Procedures
Triggers
User Defined Types
Sécurité
Intégration de la sécurité SQL Server et CLR
Trois niveaux de sécurité
Safe, External-Access (verifiable), Unsafe
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
ClickOnce
Permet d’automatiser déployer des
applications « SmartClient »
Utilisation de HTTP et XML
démo
Déploiement par ClickOnce
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Web Forms ASP.NET
Nouveau modèle d’exécution événementiel
basé sur des contrôles pour l’interface
utilisateur Web
« Visual Basic appliqué au Web »
Nettement moins de code nécessaire qu’en
ASP
Fonctionnalité encapsulée proprement
Web Forms ASP.NET
Exécuté via CLR en tant que code natif
Visual Basic, C#, JScript, NetCOBOL
Les pages ASP.NET comportent l’extension
« .ASPX »
Exécution sur le serveur IIS parallèlement
aux applications ASP existantes
Web Forms
MVC - Model View Controller
Controllers
gèrent les
entrées de
l’utilisateur
Controller
View
Views
présentent
l’information à
l’utilisateur
Model
Models implémentent les fonctionnalités de l’application
démo
Première application ASP.NET
ASP.NET et l’accès aux données
Agenda de la présentation
Microsoft .NET : les points essentiels
Visual Studio 2008
Les XML Web Services
Accès aux données et ADO.NET
Déploiement par ClickOnce
Les applications Web et ASP.NET
Le développement sur terminaux mobiles
Agenda de la session
Pocket PC (Compact Framework)
TabletPC (Compact Framework)
Windows Phone (Silverlight / XNA)
La vision .NET
Outils et runtime pour les applications
clientes
Visual Studio .NET
.NET Framework
Pages Web
Navigateur
code
.NET Compact
Framework
Objectifs
Compatibilité
Stricte compatibilité
avec le .NET Framework
Sous-ensemble
Périphérique générique
Cible connue pour
le développeur
Compétence
multi périphérique
Ratio Taille/Fonctionnalités
idéal
.NET Framework
.NET Compact
Framework
.NET Compact Framework
Version légère du .NET Framework
Conçu pour les périphériques à ressources limitées
Exécute vos applications de manière sécurisée :
JIT compilateur haute performance
Sécurité, robustesse
Consommation des Services Web aisée
Le matériel
High resolution input
~130 points per second vs. ~25 for a mouse
Windows XP Tablet PC Edition
Windows XP Professional plus:
.NET Framework
API spécifiques
Tablet bits
Pro bits
Home bits
Home
Pro
Windows XP
Tablet
Ink
Reconnaissance caractère
Reconnaissance vocale
Gestures
Pen control
Controls and objects
Utilitaires
MS Journal
Text Input Panel
Les SDK TabletPC
Le SDK Tablet PC
Version actuelle : SDK 1.7
100% .NET
On peut installer ce SDK sur un ordinateur classique
Pour les tests, les reconnaissances ne fonctionneront pas
On peut travailler avec un digitaliseur externe
Ouvert aussi au monde non .NET
Win32 (VB 6.0, C++…)
ActiveX
L’utilisation du InkOverlay
Le premier objet nécessaire à la gestion de
l’encre numérique est un InkCollector
(Vecteur de point)
La classe InkOverlay va un peu plus loin et
permet une gestion plus avancée
Mode Suppression, Mode Sélection…
Namespace Microsoft.Ink
démo
InkEdit
InkOverlay
Web riche ou application mobiles ?
même combat !
Visual Studio .NET
.NET Framework
Pages Web
code
WPF/ Silverlight
Navigateur
Table Surface (WPF / Silverlight)
Conclusion
La plateforme .NET est la plateforme
Microsoft des dix prochaines années
Construite essentiellement autour des
standards et des XML Web Services
Enormes gains en productivité pour vos
développements de solutions personnalisées
Windows, Web et embarquées
Ressources
http://msdn.microsoft.com
http://forums.microsoft.com
http://msdn.microsoft.com/net
http://msdn.microsoft.com/vstudio
http://www.microsoft.com/france/msdn
http://support.microsoft.com
http://www.gotdotnet.com
http://www.windowsforms.net
http://www.asp.net
http://www.netfx3.com
Ressources communautaires
Questions ? 