Développement web avancé,
Développement web avancé,
.NET, J2EE
.NET, J2EE
& Interopérabilité
& Interopérabilité
Sommaire
Sommaire
Semaine 1
Semaine 1
INTRO
INTRO
•
•
Rappel, La Course aux langages / La place de J2EE et .NET
Rappel, La Course aux langages / La place de J2EE et .NET
•
•
Le cas PHP
Le cas PHP
.NET
.NET
•
•
Framework
Framework
•
•
développement WEB et nouveautés
développement WEB et nouveautés
•
•
accès aux données
accès aux données
•
•
performances...
performances...
J2EE VS .NET
J2EE VS .NET
•
•
Comparaison, avantages, inconvénients, points forts
Comparaison, avantages, inconvénients, points forts
•
•
Méthode «
Méthode «
Best Practice
Best Practice
»
»
•
Introduction
Introduction
•
•
La course aux langages
La course aux langages
•
•
Centralisation et décentralisation
Centralisation et décentralisation
•
La course des
La course des
languages
languages
… 10 ans de web
… 10 ans de web
.NET J2EE
PHP
Python
ASP3 ASPX ASP.NET Servlet
ASP2
JSP STRUTS / MVC JSF
PHP3 PHP4 PHP5
CGI ZOPE CMF/PLONE1 PLONE2 / CPS 3.2 CPS J2E 2010
Cold Fusion CFM
Outisiders : CGI en PERL / C, Delphi, Frameworks intégrés ex : IBM Lotus Domino / Oracle Forms
ASP.NET 2
CFM MX SERVER 7 / J2E 1998
Catégorie Langage Serveur + Client Léger
ASP.NET 3.5 JSF2
Ruby RUBY 1.9.1
EJB3
Vers le n
Vers le n
-
-
tier
tier
… l’ère des architectes
… l’ère des architectes
LDAP XML
SOAP Autres … DATA
MODEL Connexions Objets persistants Workflows Répartition présentation VUES CONTROLEUR ORCHESTRATION
Le Client Riche
Le Client Riche
Serveur Poste client HTTP (XML) SOAP (Web services) ServerLa course au WEB…Aperçu des langages
La course au WEB…Aperçu des langages
Le cas PHP
Le cas PHP
(5.3.1 en 2010)(5.3.1 en 2010)Des désavantages pour le «
Des désavantages pour le «
petit frère
petit frère
» du WEB ?
» du WEB ?
UN LANGAGE SIMPLE ET PUR WEB
UN LANGAGE SIMPLE ET PUR WEB
Faux > on peut créer des programmes non web (PHP
Faux > on peut créer des programmes non web (PHP gtkgtk)+ orientation )+ orientation objet en cours d’amélioration (V4 et 5
objet en cours d’amélioration (V4 et 5 –– namespacenamespace -- et 6 en 2009)et 6 en 2009) Un Langage 100% interprété
Un Langage 100% interprété
Faux > Il existe un préprocesseur : le ZEND
Faux > Il existe un préprocesseur : le ZEND EngineEngine ((aujauj en version 2.1.13)en version 2.1.13) Une compatibilité totale avec les Web Services
Une compatibilité totale avec les Web Services
Faux > Une implémentation pas toujours totale de la norme > le c
Faux > Une implémentation pas toujours totale de la norme > le cas as NuSoapNuSoap Pas de
Pas de FrameworksFrameworks avancésavancés Faux > PEAR (connexion aux
Faux > PEAR (connexion aux bddbdd) / HORDE (environnement de ) / HORDE (environnement de devdev)) Pas d’environnement IDE
Pas d’environnement IDE
Faux > Plugins pour Eclipse (ex : zend IDE for
Faux > Plugins pour Eclipse (ex : zend IDE for eclipseeclipse)+ nombreux outils )+ nombreux outils Open Source
Open Source
Parfaitement adapté au web, certains points le distinguent pourtant des grands
Frameworks : compilation, montée en charge, persistance des objets,
connecteurs vers les gros systèmes, interopérabilité, exceptions, runtime, SOA,
mobilité, garbage collector etc.. Mais il poursuit sa route !
Pas d’éditeur en
Pas d’éditeur en BackGroundBackGround / pas de serveur d’application/ pas de serveur d’application Faux > IBM soutient ZEND
Le cas PHP
Le cas PHP
(5.3.1 en 2010)(5.3.1 en 2010)Des désavantages pour le «
Des désavantages pour le «
petit frère
petit frère
» du WEB ?
» du WEB ?
UN LANGAGE SIMPLE ET PUR WEB
UN LANGAGE SIMPLE ET PUR WEB
Faux > on peut créer des programmes non web (PHP
Faux > on peut créer des programmes non web (PHP gtkgtk)+ orientation )+ orientation objet en cours d’amélioration (V4 et 5
objet en cours d’amélioration (V4 et 5 –– namespacenamespace -- et 6 en 2010 ?)et 6 en 2010 ?) Un Langage 100% interprété
Un Langage 100% interprété
Faux > Il existe un préprocesseur : le ZEND
Faux > Il existe un préprocesseur : le ZEND EngineEngine ((aujauj en version 5)en version 5) Une compatibilité totale avec les Web Services
Une compatibilité totale avec les Web Services
Faux > Une implémentation pas toujours totale de la norme > le c
Faux > Une implémentation pas toujours totale de la norme > le cas as NuSoapNuSoap Pas de
Pas de FrameworksFrameworks avancésavancés Faux > PEAR (connexion aux
Faux > PEAR (connexion aux bddbdd) / HORDE (environnement de ) / HORDE (environnement de devdev)) Pas d’environnement IDE
Pas d’environnement IDE
Faux > Plugins pour Eclipse (ex : zend IDE for
Faux > Plugins pour Eclipse (ex : zend IDE for eclipseeclipse)+ nombreux outils )+ nombreux outils Open Source
Open Source
Parfaitement adapté au web, certains points le distinguent pourtant des grands
Frameworks : compilation, montée en charge, persistance des objets,
connecteurs vers les gros systèmes, interopérabilité, exceptions, runtime, SOA,
mobilité, garbage collector etc.. Mais il poursuit sa route !
Pas d’éditeur en
Pas d’éditeur en BackGroundBackGround / pas de serveur d’application/ pas de serveur d’application Faux > IBM soutient ZEND
Partie 1 : .NET
Partie 1 : .NET
•
•
Framework
Framework
•
•
Développement WEB
Développement WEB
•
•
Le langage C#
Le langage C#
•
•
Accès aux données
Accès aux données
•
Qu’est
Qu’est
-
-
ce que .NET ?
ce que .NET ?
•
Le
Le
FrameWork
FrameWork
unifié de développement Microsoft
unifié de développement Microsoft
•
•
Distribuée en standard
Distribuée en standard
sour
sour
forme de dll sur les plateformes
forme de dll sur les plateformes
Windows (server,
Windows (server,
personal
personal
, CE)
, CE)
•
•
Une version plateforme et une version compact (mobile)
Une version plateforme et une version compact (mobile)
•
•
Contient toutes les classes, une machine virtuelle, un
Contient toutes les classes, une machine virtuelle, un
complilateur
complilateur
, un processeur J.I.T.
, un processeur J.I.T.
•
•
Une approche résolument différente du développement WEB
Une approche résolument différente du développement WEB
et de l’accès aux données
Que faut
Que faut
-
-
il pour démarrer ?
il pour démarrer ?
•
•
Visual studio ou autres IDE libres .NET
Visual studio ou autres IDE libres .NET
•
Plusieurs Langages…
Plusieurs Langages…
Un seul Framework, mais Plus de 16 langages « .NET » :
C#, VB.NET, Java.NET, C++.NET, Perl.NET, Python.NET, Pascal.NET,
Php.NET, JScript.NET, ADA.NET, …. Cobol.NET
Langage .NET = langage ANSI + orientation objet + implémentation
des classes du Framework .NET
Un compilateur par langage transformation en IL :
DLL
DLL compilateur JIT de la CLR exécution en mode « managed »
Code C# Compilateur cs Dll (IL) CLR
Autres dll dll du framework
CLR : exécution
Un travail collaboratif
Un travail collaboratif
Utilisation maximale des compétences de programmation
Utilisation maximale des avantages de chaque langage
Code C# : application WEB dll
dll du framework
dll
Code Cobol : interrogation Mainframe Code Java : lien avec appli bancaire
Code VB : macros du secrétariat
dll
dll
C#
C#
Langage principal de Microsoft 40% des
Langage principal de Microsoft 40% des
dév
dév
. Dans le monde
. Dans le monde
C
C
C++
C++
C#
C#
C#
C#
Managed
Managed
<
<
-
-
> C++
> C++
Unmanaged
Unmanaged
Fortement inspiré de Java…
Fortement inspiré de Java…
…Mais aussi de ADA, de Delphi (même concepteur)
…Mais aussi de ADA, de Delphi (même concepteur)
Unification des modes de développement
Unification des modes de développement
Optimisation des déploiements
C# et VB.NET : découverte par l’exemple
C# et VB.NET : exemple de classe
Page aspx <ASP:Fileupload id=btnUpload/> Codebehind void btnUpload_Click(objectsender,EventArgse) { if (file.HasFile) { file.PostedFile.SaveAs(@"c:\test\fichier.txt"); } }
Exemple de codes web simplificateurs
.
.
Net et
Net et
Versionning
Versionning
Indépendance vis
Indépendance vis
-
-
à
à
-
-
vis du registre
vis du registre
Deux dll de versions différentes peuvent cohabiter
Deux dll de versions différentes peuvent cohabiter
(déploiement en
(déploiement en
assemblies
assemblies
)
)
FrameWork
FrameWork
multiple toléré (fichier de config)
multiple toléré (fichier de config)
Utile pour les
Utile pour les
Frameworks
Frameworks
1.0,1.1,1.2,2 … 3, 3.5
1.0,1.1,1.2,2 … 3, 3.5
Couche d’abstraction présente dans les classes du
Couche d’abstraction présente dans les classes du
FrameWork
FrameWork
: adaptation au hard et aux interfaces
: adaptation au hard et aux interfaces
Téléphone, PDA, Tablet PC, Portable, PC, Serveur…
ASP.net : Web components
ASP.net : Web components
vers une conception unifiée
//convertisseur Euro button1_onclick (contexte) { // Action à effectuer Form1.resultat = (float)Form1.a.Text * 6,55 }
Développement traditionnel « client lourd » formulaire
+ Permet l’utilisation d’environnement RAD / IDE
+ Utilisation de composants graphiques « drag and drop »
- Nécessite une politique d’installation sur poste (installer) et de versionning
+ Gestion de l’interface déléguée au contexte
<%page langage=« …»%> //monscript convertisseur Euro if (QueryString(« valeur1 »)!=Null) {
Answer = QueryString(« valeur1 ») * 6,55; }
%>
<html>
<form action = « monscript » method=« post »> <input type=«text » name=« valeur1 »/>
<input type=«text » name=« valeur2 » Value=« <%=Answer%> »/>
<input type=« submit » value=« convertir »/> </form> </html> <html> <form action = « monscript » method=« post »> <input type=«text » name=« valeur1 »/> <input type=«text » name=« valeur2 »/> <input type=« submit » value=« convertir »/> </form>
</html>
+ Client léger, souplesse du code
- Maintenance, mélange du code et de la présentation
Développement web formulaire
En .NET : Développement Evènementiel généralisé
+ séparation claire de l’interface + pas de gestion de la distance, les contrôles client sont vus comme des objets locaux
1 page de présentation
En .NET : Développement Evènementiel généralisé
//Page monform.aspx : convertisseur <%Codebehind=« monform.aspx.cs »%> <html>
<form runat=« server » /> <ASP:TextBox
name=«valeur1 » runat=« server »/> <ASP:TextBox
name=«valeur2 » runat=« server »/> <ASP:Button
name=«button1 » runat=« server » onclick=« convert »/> </form> </html> //Page monform.aspx.cs Convert() {
// interaction directe avec l’affichage Valeur2.Text= (Float)Valeur1.text*6,55; //appel de classes et de fonctions serveur MyClass = New Class()
}
+ séparation claire de l’interface + pas de gestion de la distance, les contrôles client sont vus comme des objets locaux
1 page de présentation
Précompilation
Précompilation
et mémoire du serveur .NET
et mémoire du serveur .NET
(1) Appel de la page
Page web aspx
dll
CLR : Instance de la page
+ Etat de tous les objets de la page :
CONTEXTE ou viewstate (runat=« server »)
+ méthodes de traitement associées + identifiants liant l’objet à la session en cours
Page HTML + Identifiants du contexte
(2) Transmission de l’état de la page (contexte) + actions à réaliser
.Net : Accès aux données
L’accès aux données (1/2)
L’accès aux données (1/2)
application
OLEDB ODBC
Drivers Natifs
L’accès aux données (2/2)
L’accès aux données (2/2)
Datareader
DataAdapter
DataSet
DataView
DataReader
2 approches d’accès aux données
ASP.NET
ASP.NET
V2 (1/2)
V2 (1/2)
•
•
MasterPage
MasterPage
/ Objet header /
/ Objet header /
PlaceHolders
PlaceHolders
•
•
Contrôle Identification
Contrôle Identification
•
•
Controlstate
Controlstate
en plus du
en plus du
ViewState
ViewState
•
•
CrossSitePosting
CrossSitePosting
•
ASP.NET
ASP.NET
V2 (2/2)
V2 (2/2)
•
•
Thèmes graphiques via XML
Thèmes graphiques via XML
•
•
WebParts
WebParts
•
•
Précompilation
Précompilation
des pages
des pages
http://SERVER/APPLICATIONNAME/precompile.axd
http://SERVER/APPLICATIONNAME/precompile.axd
•
•
Statistiques intégrées
Statistiques intégrées
<
<
siteCountersenabled
siteCountersenabled
="
="
true
true
"
"
rowsPerDay
rowsPerDay
="1">
="1">
•
•
contrôles ASP.NET XHTML
contrôles ASP.NET XHTML
compliant
compliant
!! On peut
!! On peut
définir le schéma pour chaque page
définir le schéma pour chaque page
respect des
ASP.NET
ASP.NET
V3
V3
•
•
Listview
Listview
•
•
Datapager
Datapager
•
•
Integration
Integration
AJAX
AJAX
•
•
Moteur de
Moteur de
workflow
workflow
•
Partie 2 : J2EE VS .NET
Partie 2 : J2EE VS .NET
•
•
Comparaison, similitudes
Comparaison, similitudes
•
•
Points forts
Points forts
•
•
Avantages et Inconvénients
Avantages et Inconvénients
•
Processus du serveur
Processus du serveur
d’applications / exemple
Design Patterns & MVC
Design Patterns & MVC
JSP
Vue 1
JSP
Vue 2
ActionServlet
(Contrôleur)
Action 1 Action 3 Action 21.
2.
3.
4.
5.
Modèles ( Contexte d’objets persistants EJB) mappingProcessus du serveur
Processus du serveur
d’applications JAVA
Processus du serveur
Processus du serveur
d’applications .NET
500 € / user . 20 à 30000€ /proc Gratuit avec l’O.S.
Premier comparatif
Premier comparatif
Des avantages et inconvénients à nuancer.
Avantages pour .NET
•
Nombre de langages•
Réutilisation de l’existant•
Gestion des données•
Gestion des Interfaces•
Pas d’implémentations multiplesAvantages pour Java
•
nombre d’API•
Variété des Plateformes•
Nombre de Développeurs•
Gestion de la persistance EJB•
Bonnes habitudes dès le départ.NET et Open Source ?
.NET et Open Source ?
Les moins
Java n’est pas aussi libre qu’on ne le pense
.Net et politique globale de Microsoft (intégration dans les futurs produits)
Politique de mise en avant de l’IDE Visual Studio
Les plus
Des tentatives d’ouverture : Starter Kits .NET La création d’une communauté .NET
L’ouverture imposée des sources C# reconnu ECMA
> Des technologies pertinentes issues d’années d’expérience qui devraient rester dans le domaine du libre
Les
Les
Runtime
Runtime
.NET Libres
.NET Libres
Applications 15 langages C# Mono Framework CLR MONO Plateformes UNIX, Windows, MacOSX, Linux… Applications C#/VB.NET… .NET Framework CLR Plateformes Windows Applications JAVA Java SDK JRE Plateformes UNIX, Windows, MacOSX, Linux .NET
.NET MONO (2.6.1) MONO (2.6.1) novellnovell JAVA JAVA Applications C# .GNU Framework CLR .GNU Plateformes UNIX, Windows, MacOSX, Linux… .GNU (0.8) .GNU (0.8)