Upload
chdalel
View
511
Download
2
Embed Size (px)
Citation preview
Développement web avancé,Développement web avancé,.NET, J2EE .NET, J2EE
& Interopérabilité& Interopérabilité
SommaireSommaireSemaine 1Semaine 1
INTROINTRO•• Rappel, La Course aux langages / La place de J2EE et .NETRappel, La Course aux langages / La place de J2EE et .NET•• Le cas PHPLe cas PHP
.NET.NET•• FrameworkFramework•• développement WEB et nouveautésdéveloppement WEB et nouveautés•• accès aux donnéesaccès aux données•• performances...performances...
J2EE VS .NETJ2EE VS .NET•• Comparaison, avantages, inconvénients, points fortsComparaison, avantages, inconvénients, points forts•• Méthode «Méthode « Best PracticeBest Practice »»•• Open Open SouceSouce et Outsiderset Outsiders
IntroductionIntroduction
•• La course aux langagesLa course aux langages
•• Centralisation et décentralisationCentralisation et décentralisation
•• «« RichRich ClientClient »»
La course des La course des languageslanguages … 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
PHP5.3
Vers le nVers le n--tiertier … l’ère des architectes… l’ère des architectes
LDAPXMLSOAP Autres … DATA
MODEL
Connexions
Objets persistants
Workflows
Répartition
présentation VUES
CONTROLEUR
ORCHESTRATION
Traitements métiers BUSINESS
Client lourd Client web
Le Client RicheLe Client Riche
Serveur
Poste client
HTTP (XML) SOAP (Web services)
Server
La course au WEB…Aperçu des langagesLa course au WEB…Aperçu des langages
Exemple XUL
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èrepetit frère » du WEB ?» du WEB ?
UN LANGAGE SIMPLE ET PUR WEBUN LANGAGE SIMPLE ET PUR WEBFaux > 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 ServicesUne compatibilité totale avec les Web ServicesFaux > Une implémentation pas toujours totale de la norme > le cFaux > Une implémentation pas toujours totale de la norme > le cas as NuSoapNuSoap
Pas de Pas de FrameworksFrameworks avancésavancésFaux > PEAR (connexion aux Faux > PEAR (connexion aux bddbdd) / HORDE (environnement de ) / HORDE (environnement de devdev))
Pas d’environnement IDEPas d’environnement IDEFaux > Plugins pour Eclipse (ex : zend IDE for Faux > Plugins pour Eclipse (ex : zend IDE for eclipseeclipse)+ nombreux outils )+ nombreux outils Open SourceOpen 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’applicationFaux > IBM soutient ZEND Faux > IBM soutient ZEND technologytechnology
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èrepetit frère » du WEB ?» du WEB ?
UN LANGAGE SIMPLE ET PUR WEBUN LANGAGE SIMPLE ET PUR WEBFaux > 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 ServicesUne compatibilité totale avec les Web ServicesFaux > Une implémentation pas toujours totale de la norme > le cFaux > Une implémentation pas toujours totale de la norme > le cas as NuSoapNuSoap
Pas de Pas de FrameworksFrameworks avancésavancésFaux > PEAR (connexion aux Faux > PEAR (connexion aux bddbdd) / HORDE (environnement de ) / HORDE (environnement de devdev))
Pas d’environnement IDEPas d’environnement IDEFaux > Plugins pour Eclipse (ex : zend IDE for Faux > Plugins pour Eclipse (ex : zend IDE for eclipseeclipse)+ nombreux outils )+ nombreux outils Open SourceOpen 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’applicationFaux > IBM soutient ZEND Faux > IBM soutient ZEND technologytechnology
Partie 1 : .NETPartie 1 : .NET
•• FrameworkFramework
•• Développement WEBDéveloppement WEB
•• Le langage C#Le langage C#
•• Accès aux donnéesAccès aux données
•• Autres ExemplesAutres Exemples
Qu’estQu’est--ce que .NET ?ce que .NET ?
• Le Le FrameWorkFrameWork unifié de développement Microsoft unifié de développement Microsoft
•• Distribuée en standard Distribuée en standard soursour forme de dll sur les plateformes forme de dll sur les plateformes Windows (server, Windows (server, personalpersonal, 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 complilateurcomplilateur, 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éeset de l’accès aux données
Que fautQue faut--il pour démarrer ?il pour démarrer ?
•• Visual studio ou autres IDE libres .NETVisual studio ou autres IDE libres .NET
•• Développement web avec outils gratuitsDéveloppement web avec outils gratuits
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
Exécution
CLR : exécution
Un travail collaboratifUn travail collaboratif
Utilisation maximale des compétences de programmation
Utilisation maximale des avantages de chaque langage
Code C# : application WEB dlldll du framework
dll
Code Cobol : interrogation Mainframe
Code Java : lien avec appli bancaire
Code VB : macros du secrétariat
dll
dll
Code PERL : formatage de fichiers dll
C#C#
Langage principal de Microsoft 40% des Langage principal de Microsoft 40% des dévdév. Dans le monde. Dans le monde
C C �� C++ C++ �� C#C#
C# C# ManagedManaged <<--> C++ > C++ UnmanagedUnmanaged
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éveloppementUnification des modes de développement
Optimisation des déploiementsOptimisation des déploiements
C# et VB.NET : découverte par l’exempleC# et VB.NET : découverte par l’exemple
C# et VB.NET : exemple de classeC# 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 simplificateursExemple de codes web simplificateurs
..Net et Net et VersionningVersionning
Indépendance visIndépendance vis--àà--vis du registrevis du registre
Deux dll de versions différentes peuvent cohabiter Deux dll de versions différentes peuvent cohabiter (déploiement en (déploiement en assembliesassemblies))
FrameWorkFrameWork multiple toléré (fichier de config) multiple toléré (fichier de config)
��Utile pour les Utile pour les FrameworksFrameworks 1.0,1.1,1.2,2 … 3, 3.51.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 FrameWorkFrameWork : adaptation au hard et aux interfaces: adaptation au hard et aux interfaces
Téléphone, PDA, Tablet PC, Portable, PC, Serveur…Téléphone, PDA, Tablet PC, Portable, PC, Serveur…
ASP.net : Web componentsASP.net : Web components
vers une conception unifiéevers une conception unifiée
Développement traditionnel « client lourd »
//convertisseur Euro
button1_onclick (contexte){// Action à effectuerForm1.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
Ecran Mode Graphique Code associé « onclick »
<%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
Html avant développement Html + code intégré
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 HTML + Web components 1 page de traitement des actions
En .NET : Développement Evènementiel généralisé
//Page monform.aspx : convertisseur
<%Codebehind=« monform.aspx.cs »%>
<html>
<form runat=« server » />
<ASP:TextBoxname=«valeur1 » runat=« server »/>
<ASP:TextBoxname=«valeur2 » runat=« server »/>
<ASP:Buttonname=«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 HTML + Web components 1 page de traitement des actions
PrécompilationPrécompilation et mémoire du serveur .NETet 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
Codebehind
.Net : Accès aux données.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
ADO.NET System.DATA
L’accès aux données (2/2)L’accès aux données (2/2)
Datareader
DataAdapter
DataSet
DataView
Sources et Bindings : ex du Datagrid
DataReader
2 approches d’accès aux données2 approches d’accès aux données
ASP.NETASP.NET V2 (1/2)V2 (1/2)
•• MasterPageMasterPage / Objet header / / Objet header / PlaceHoldersPlaceHolders
•• Contrôle IdentificationContrôle Identification
•• ControlstateControlstate en plus du en plus du ViewStateViewState
•• CrossSitePostingCrossSitePosting
•• URL URL MappingMapping ((redirectredirect))
ASP.NETASP.NET V2 (2/2)V2 (2/2)
•• Thèmes graphiques via XMLThèmes graphiques via XML
•• WebPartsWebParts
•• PrécompilationPrécompilation des pages des pages http://SERVER/APPLICATIONNAME/precompile.axdhttp://SERVER/APPLICATIONNAME/precompile.axd
•• Statistiques intégréesStatistiques intégrées<<siteCountersenabledsiteCountersenabled="="truetrue" " rowsPerDayrowsPerDay="1">="1">
•• contrôles ASP.NET XHTML contrôles ASP.NET XHTML compliantcompliant !! On peut !! On peut définir le schéma pour chaque page définir le schéma pour chaque page respect desrespect des normes ex : XHTML 1.1 Strictnormes ex : XHTML 1.1 Strict
ASP.NETASP.NET V3V3
•• ListviewListview
•• DatapagerDatapager
•• IntegrationIntegration AJAXAJAX
•• Moteur de Moteur de workflowworkflow
•• Gestion SOA Gestion SOA –– web services (WCF)web services (WCF)
Partie 2 : J2EE VS .NETPartie 2 : J2EE VS .NET
•• Comparaison, similitudesComparaison, similitudes
•• Points fortsPoints forts
•• Avantages et InconvénientsAvantages et Inconvénients
•• Méthode «Méthode « Best PracticeBest Practice »»
Processus du serveur Processus du serveur d’applications / exempled’applications / exemple
Design Patterns & MVCDesign Patterns & MVC
JSPVue 1
JSPVue 2
ActionServlet(Contrôleur)
Action 1
Action 3
Action 2
1.
2.
3.4.
5.Modèles
( Contexte d’objets persistants
EJB)
mapping
Processus du serveur Processus du serveur d’applications JAVAd’applications JAVA
Processus du serveur Processus du serveur d’applications .NETd’applications .NET
500 € / user . 20 à 30000€ /proc Gratuit avec l’O.S.
L’illusion de la gratuité du serveur d’applications : évolutions en 3 ans
Premier comparatifPremier 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 multiples
Avantages 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
• Pas de contrôle « fort » d’un éditeur (orientation libre)
.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 RuntimeRuntime .NET Libres.NET Libres
Applications15 langages C#
Mono Framework
CLR MONO
PlateformesUNIX, Windows, MacOSX, Linux…
ApplicationsC#/VB.NET…
.NET Framework
CLR
PlateformesWindows
ApplicationsJAVA
Java SDK
JRE
PlateformesUNIX, Windows, MacOSX, Linux
.NET.NET MONO (2.6.1) MONO (2.6.1) novellnovellJAVAJAVA
ApplicationsC#
.GNU Framework
CLR .GNU
PlateformesUNIX, Windows, MacOSX, Linux…
.GNU (0.8).GNU (0.8)
Liens utilesLiens utiles
•• http://www.asp.net/downloads/essential/http://www.asp.net/downloads/essential/