70
Développement web avancé, Développement web avancé, .NET, J2EE .NET, J2EE & Interopérabilité & Interopérabilité

DotNet - J2EE

Embed Size (px)

Citation preview

Page 1: DotNet - J2EE

Développement web avancé,Développement web avancé,.NET, J2EE .NET, J2EE

& Interopérabilité& Interopérabilité

Page 2: DotNet - J2EE

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

Page 3: DotNet - J2EE

IntroductionIntroduction

•• La course aux langagesLa course aux langages

•• Centralisation et décentralisationCentralisation et décentralisation

•• «« RichRich ClientClient »»

Page 4: DotNet - J2EE

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

Page 5: DotNet - J2EE

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

Page 6: DotNet - J2EE

Client lourd Client web

Page 7: DotNet - J2EE

Le Client RicheLe Client Riche

Serveur

Poste client

HTTP (XML) SOAP (Web services)

Server

Page 8: DotNet - J2EE

La course au WEB…Aperçu des langagesLa course au WEB…Aperçu des langages

Exemple XUL

Page 9: DotNet - J2EE
Page 10: DotNet - J2EE

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

Page 11: DotNet - J2EE

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

Page 12: DotNet - J2EE

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

Page 13: DotNet - J2EE

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

Page 14: DotNet - J2EE

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

Page 15: DotNet - J2EE
Page 16: DotNet - J2EE

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

Page 17: DotNet - J2EE
Page 18: DotNet - J2EE

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

Page 19: DotNet - J2EE
Page 20: DotNet - J2EE
Page 21: DotNet - J2EE
Page 22: DotNet - J2EE

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

Page 23: DotNet - J2EE

C# et VB.NET : découverte par l’exempleC# et VB.NET : découverte par l’exemple

Page 24: DotNet - J2EE

C# et VB.NET : exemple de classeC# et VB.NET : exemple de classe

Page 25: DotNet - J2EE

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

Page 26: DotNet - J2EE

..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…

Page 27: DotNet - J2EE

ASP.net : Web componentsASP.net : Web components

vers une conception unifiéevers une conception unifiée

Page 28: DotNet - J2EE

Développement traditionnel « client lourd »

Page 29: DotNet - J2EE

//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 30: DotNet - J2EE

<%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é

Page 31: DotNet - J2EE

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

Page 32: DotNet - J2EE

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

Page 33: DotNet - J2EE
Page 34: DotNet - J2EE
Page 35: DotNet - J2EE
Page 36: DotNet - J2EE
Page 37: DotNet - J2EE
Page 38: DotNet - J2EE

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

Page 39: DotNet - J2EE

.Net : Accès aux données.Net : Accès aux données

Page 40: DotNet - J2EE

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

Page 41: DotNet - J2EE

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

Page 42: DotNet - J2EE

DataReader

2 approches d’accès aux données2 approches d’accès aux données

Page 43: DotNet - J2EE
Page 44: DotNet - J2EE

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))

Page 45: DotNet - J2EE

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

Page 46: DotNet - J2EE

ASP.NETASP.NET V3V3

•• ListviewListview

•• DatapagerDatapager

•• IntegrationIntegration AJAXAJAX

•• Moteur de Moteur de workflowworkflow

•• Gestion SOA Gestion SOA –– web services (WCF)web services (WCF)

Page 47: DotNet - J2EE

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 »»

Page 48: DotNet - J2EE
Page 49: DotNet - J2EE
Page 50: DotNet - J2EE
Page 51: DotNet - J2EE
Page 52: DotNet - J2EE
Page 53: DotNet - J2EE
Page 54: DotNet - J2EE

Processus du serveur Processus du serveur d’applications / exempled’applications / exemple

Page 55: DotNet - J2EE
Page 56: DotNet - J2EE

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

Page 57: DotNet - J2EE

Processus du serveur Processus du serveur d’applications JAVAd’applications JAVA

Page 58: DotNet - J2EE
Page 59: DotNet - J2EE
Page 60: DotNet - J2EE
Page 61: DotNet - J2EE

Processus du serveur Processus du serveur d’applications .NETd’applications .NET

Page 62: DotNet - J2EE
Page 63: DotNet - J2EE
Page 64: DotNet - J2EE
Page 65: DotNet - J2EE

500 € / user . 20 à 30000€ /proc Gratuit avec l’O.S.

L’illusion de la gratuité du serveur d’applications : évolutions en 3 ans

Page 66: DotNet - J2EE

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)

Page 67: DotNet - J2EE

.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

Page 68: DotNet - J2EE

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)

Page 69: DotNet - J2EE
Page 70: DotNet - J2EE

Liens utilesLiens utiles

•• http://www.asp.net/downloads/essential/http://www.asp.net/downloads/essential/