Serveurs d`application

publicité
Serveurs d’application
1.
2.
3.
4.
Architecture
Le standard J2EE
Etude de cas: EDF GDF
.NET de Microsoft
1. Architecture avec SA
Présentation Application
Appareil
mobile
Serveur
WAP
Browser
Web
Serveur
Web
Client
Java
Parefeu
Client
VB/C++
Données
SGBD
Serveur
Web
Serveur
d’application
…
…
‹#›
Application
ERP
Application
mainframe
Serveur d’application
• Serveur d’entreprise avec
• support des composants
• standards CORBA, COM, EJB
• middleware objet
• support des transactions
• standards CORBA, Open Group (XA)
• environnement de développement intégré
• composants, transactions
• équilibrage de charge entre serveurs
• support de XML et des Web services
• interface avec moniteurs transactionnels et MOM
• NB: serveur d’application  serveur Web + servlet (ex.
Apache+Tomcat)
‹#›
Equilibrage de charge et disponibilité
En cas de panne de A,
basculement automatique
sur B
Cookie A,B
Serveur A
primaire
Réplication de l’état
des processus clients
Serveur B
Secondaire
Cluster
‹#›
Le problème d’accès aux données
Où mettre la logique applicative ?
Composants métiers
Procédures stockées
Serveur d’application
Serveur de données
• Compromis entre performances et flexibilité
difficile à obtenir
• performances : s’appuyer au maximum sur le serveur
BD => procédures stockées
• flexibilité : composants métiers encapsulant l’accès aux
données
‹#›
Accès BD en C/S 2 tiers
• Développement d’applications BD en 2 étapes
1 conception de la BD
• création des tables et des contraintes d’intégrité
2 programmation des procédures stockées
Très efficace
• procédures stockées et contraintes d’intégrité
exécutées sur le serveur BD
Evolution difficile
• la modification d’une définition de données implique
la recompilation des procédures stockées
‹#›
Composants avec accès BD
• Similaire au C/S
Gestionnaire de
commandes
Commande
+ efficace
- composants non
autonomes
Produit
Select C.a, P.b, …
From C, P
Where …
‹#›
Composants encapsulant leurs données
• Principe d’îlot de
données
Gestionnaire de
commandes
• ensemble de données
Commande
entièrement contenu
dans un composant
métier
Produit
• exige une forte localité
des données/composant
+ composants autonomes
- performances
‹#›
Comment améliorer les performances
• Faire des composants métiers à gros grain
• encapsulation des données fortement corrélées
• par ex. 5 à 10 définitions de tables relationnelles
• Exploiter les vues relationnelles
• pour les données partagées entre plusieurs
composants
• Mettre en œuvre un cache de données au
niveau du serveur d’application
• transformation objet/relationnel
‹#›
2. Le standard J2EE (Sun et al.)
• De nombreuses API
•
•
•
•
•
•
•
•
•
•
•
•
EJB: modèle de composants serveurs
JNDI: accès aux services d’annuaire DNS, LDAP
RMI: invocation de méthodes Java à distance
JIDL: Java IDL - interface Corba
JSP: Java Server Pages (Java ds pages HTML)
JMS: Java Messaging Service
JTS: Java Transaction Service (basé sur OTS)
JDBC: accès aux BD via SQL
JDO: Java Data Objects
JAX: Java XML
JCA: Java Connector Architecture
...
‹#›
JAX
• Pour intégrer XML et les services web
• JAX-RPC (Java API for XML RPC) pour effectuer des
appels de messages SOAP
• JAXM (Java API for XML Messaging) pour envoyer des
documents XML via SOAP
• JAXR (Java API for XML Registries) pour accéder des
annuaires de services de type UDDI
‹#›
Architecture d’un serveur J2EE
Logique métier
Logique de présentation
Container Web
Container EJB
Java Server
HTML/XML
Page
Java
Bean
Session
Bean
Entity
Bean
Servlet
Support Comm.
Services de base
TCP/IP, HTTP, RMI,
IIOP, SOAP, etc.
JDBC, JTS, JNDI,
JMS, JDO, JAX, etc.
‹#›
Principaux serveurs J2EE
Editeur
Produit
Points forts
Ordre de prix
BEA-Oracle WebLogic
Transactionnel, outils
10K€
IBM
Websphere
10K€
Oracle
AS
Transactionnel, intégration
avec DB2 UDB
Intégré dans l’offre Oracle
HP
Intégré avec les middlewares
HP
Basé sur Visibroker, outils
10K€
Borland
Total-eserver
AppServer
Sun
GlassFish
Logiciel libre (dernier né)
Gratuit
Redhat
Jboss
Logiciel libre
Gratuit
Apache
Jeronimo
Logiciel libre
Gratuit
Objectweb
Jonas
Logiciel libre
Gratuit
‹#›
10K€
10K€
WebSphere Application Server
• Support J2EE complet
• Support des transactions
• Interopérabilité avec le moniteur TXSeries
• Serveur HTTP basé sur Apache
• Support des clusters
• partitionnement des applications et équilibrage de charge
• Intégration avec
•
•
•
•
Studio Application Developer
DB2 pour la gestion de données et le stockage de XML
Tivoli pour la gestion de réseau
Versant enJin pour les objets persistants
‹#›
WebLogic (BEA-Oracle)
• Support J2EE complet
• Serveur HTTP intégré
• Plugins pour Apache, IIS, Iplanet
• Support des transactions
• interopérabilité avec le moniteur BEA Tuxedo
• Support des clusters
• disponibilité et équilibrage de charge
• Environnement de développement
• WebLogic Builder pour le développement Java
• WebLogic Workshop pour les Web services
• Intégration avec
• Nokia WAP server pour les mobiles
• TopLink (WebGain) pour le mapping objet-relationnel
• Versant enJin pour les objets persistants
‹#›
3. Etude de cas: EDF GDF
• Application de relation client (CRM) : Niveau1
• Utilisée par 25000 agents de clientèle répartis sur
1300 agences
• Gestion commerciale, gestion des contacts, outils marketing,
utilitaires (mailings, etc.)
• Architecture technique
• C/S (client lourd) avec 2 nouvelles versions par an
• SI sur mainframes IBM (un centre par département)
• Plusieurs BD et une partition CICS par centre
• Besoins
• Réactivité croissante aux demandes des agents
• Déploiement plus rapide des nouvelles versions
‹#›
Solution
• Architecture n-tiers
• Client léger
• WebLogic: serveur J2EE sur plusieurs serveurs
• Scort: Progiciel d’intégration avec les applications
mainframes avec des composants J2EE sur WebLogic
• Résultats obtenus
• Satisfaction des besoins
• Niveau1 offre 2 modes d’accès transparents aux
clients:
• Accès aux mainframes en récupérant une connexion pour
exécuter des transactions
• Smart publishing: navigation en mode publication à la volée
‹#›
Le problème de la persistance des objets
• L’état des objets modifiés par les entity beans
doit être sauvegardé durant l’exécution
• Approche classique: BD relationnelle avec mapping
objet-relationnel
• en général très inefficace avec des entity beans
CMP (cf étude de SQLi mars 2002)
• Solutions
• propriétaire de type TopLink
• mapping vers une BD objet, par ex. Versant enJin
• la plus productive et efficace selon SQLi
‹#›
Versant enJin
Serveur
d’application
Bean
Bean
Commande Produit
Serveur
d’application
Bean
Bean
Commande Produit
Cache partagé
transactions
transactions
SGBDO Versant
Mapping O/R automatique
Tiers backend
Bases de données
‹#›
Avantages de Versant enJin
• Persistance des objets Java transparente
• simple pour le développeur
• pas besoin de programmer en JDBC ou autre
• Cache d’objets partagés entre différents
serveurs
• performances et cohérence via le SGBDO Versant
• Mapping objet-relationnel automatique vers les
BD existantes
• définition de la fréquence de synchronisation
• online, batch, etc.
‹#›
4. Microsoft .NET
• Evolution majeure de la plateforme Windows
• les APIs Windows sont remplacées par des
bibliothèques de classes objet
• intégration de C#, Linq
• portabilité des applications .NET
• Microsoft Intermediate Language (MSIL) exécuté
par CLR
• sécurité renforcée avec vérification de code
• intégration avec COM et Microsoft Transaction Server
(MTS)
• support direct des services Web, de XML et de SOAP
avec Visual Studio .NET
‹#›
Architecture de MTS
Internet
Information
Server (IIS)
HTTP
MTS
Executive
• threads
• wrapper
• context
HTML
XML
ADO
SQLServer
Oracle
Active Server
Page (ASP)
• factory
• trans.
• cache
DCOM
Windows
‹#›
Autres
Modèle de composants MTS
• Composant
• pas d’état (équivalent à EJB session bean)
• Container
• executive : entre client et composant serveur
• context wrapper
• définition du comportement trans. du composant
par le développeur (par positionnement d’attributs
avec Explorer)
• context object
• appelé automatiquement par MTS pour coordonner
les transactions en 2 phases
• Serveur Windows
‹#›
Exemple de code applicatif MTS
Set ctxObject = GetObjectContext ()
// accès à l’objet contexte de MTS
{ code applicatif }
Set objExemple = ctxObject.CreateInstance ()
// création d’un objet MTS
{ code applicatif }
If (OK)
ctxObject.SetComplete () // validation de la transaction
Else
ctxObject.SetAbort () // annulation de la transaction
‹#›
Le framework .NET
VB, C++, C#, Jscript, Java,etc.
Outils
SOAP
et
XML
ASP.NET
Docs
HTML XML
BCL.NET
Base class
library
ADO.NET
Active Data
Objects
Common Language Runtime
(CLR)
Windows et COM/MTS
‹#›
Visual
Studio
.NET
Serveur J2EE versus .NET
• Serveur J2EE
• limité à Java
• transactions explicites
• généralité
• objets avec état: entity beans
• problème de performances des beans CMP
• portabilité
• .NET
• multi-langage
• transactions implicites
• simplicité
• objets sans état
• utiliser ADO pour l’accès aux données
• propriétaire, intégré dans le monde Windows
‹#›
Conclusion sur les serveurs d’application
• Un modèle d’architecture réellement distribué
• cache la complexité du middleware
• Critères de choix d ’un serveur d’application
• support des standards
• J2EE, Web services
• plate-formes supportées
• performances et débit transactionnel
• environnement de développement
‹#›
Téléchargement