Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

swing et tomcat

6 réponses
Avatar
olivier
bonjour =E0 tous,

je travaille dans une bo=EEte ou les d=E9veloppeurs utilisent assez
r=E9guli=E8rement swing pour d=E9velopper des applications clients riches et
j'ai d=E9couvert derni=E8rement qu'ils utilisaient en parall=E8le avec swing
tomcat comme serveur d'application.

l'architecture est donc la suivante :

swing (interface client) -> requ=EAte http vers tomcat -> objets m=E9tiers
-> bdd

je m'interroge sur l'int=E9r=EAt de cette architecture par rapport =E0 un
client riche contenant d=E9j=E0 les objets m=E9tiers et faisant des appels
directs =E0 la bdd, du style :

swing (interface client + objet m=E9tiers) -> bdd

en fait, quel int=E9r=EAt d'un archi 3tiers par rapport =E0 une archi
2tiers. je pr=E9cise que personne chez nous n'utilise d'ejb. ce sont des
objets java "classiques".

je trouve qu'on se complique inutilement la vie, non ?

6 réponses

Avatar
remy
bonjour

en gros et pour faire simple
cote serveur

objets_métiers_jdbc1
objets_métiers_jdbc2
obj client


Client client = new Client(new ApiJdbcImpl());
ou
Client client = new Client(new ApiJdbc2Impl());

client.getApi().fct();


***************************
public class Client {
ApiJdbc api;
public Client( ApiJdbc api) {
this.api = api;
}
public ApiJdbc getApi(){
return api;
}
****************************
public interface ApiJdbc {
public boolean fct();
}
************************
public class ApiJdbcImpl implement ApiJdbc
{
....
public boolean fct()
{
}
}
************
public class ApiJdbc2Impl implement ApiJdbc
{
....
public boolean fct()
{
}
}
**************

le client swing (cote utilisateur) il ne voie que la class client cote
serveur

a+ remy
--
http://remyaumeunier.chez-alice.fr/
Avatar
olivier
oui, je comprend l'idée, par contre, comme tu communique avec le
serveur tomcat par http, tu vas devoir serialiser-deserialiser la
communication entre tes objets clients et serveur.

quel intérêt ?

rien ne t'empêche au niveau client d'avoir un objet metier et et un
objet jdbc (le metier appelle le jdbc), le jdbc exécute ensuite une
requete jdbc au serveur de base de données.

non ?
Avatar
remy
oui, je comprend l'idée, par contre, comme tu communique avec le
serveur tomcat par http, tu vas devoir serialiser-deserialiser la
communication entre tes objets clients et serveur.


non parce que tu fait devrais faire du soap a mon avis



quel intérêt ?

rien ne t'empêche au niveau client d'avoir un objet metier et et un
objet jdbc (le metier appelle le jdbc), le jdbc exécute ensuite une
requete jdbc au serveur de base de données.

non ?


comment tu geres les differentes evolutions ou specifications
tu mets tout dedans ?

a+ remy




Avatar
cfranco
olivier wrote:

je travaille dans une boîte ou les développeurs utilisent assez
régulièrement swing pour développer des applications clients riches et
j'ai découvert dernièrement qu'ils utilisaient en parallèle avec swing
tomcat comme serveur d'application.

l'architecture est donc la suivante :

swing (interface client) -> requête http vers tomcat -> objets métiers
-> bdd

je m'interroge sur l'intérêt de cette architecture par rapport à un
client riche contenant déjà les objets métiers et faisant des appels
directs à la bdd, du style :

swing (interface client + objet métiers) -> bdd

en fait, quel intérêt d'un archi 3tiers par rapport à une archi
2tiers. je précise que personne chez nous n'utilise d'ejb. ce sont des
objets java "classiques".

je trouve qu'on se complique inutilement la vie, non ?


Un des intérêts classiques est de permettre l'utilisation chez des
clients où les réseaux n'autorisent que le passage de flux HTTP (voir
HTTPS). Particulièrement intéressant quand tu as des utilisateurs
distants, cela peut éviter d'avoir à mettre en place des VPN et
autres...

En outre, cela permet de limiter énormément le nombre de connexions
simultanées à la base de données. Si tu as une application avec
plusieurs centaines d'utilisateurs, le serveur de base de données peut
apprécier.

Enfin, dans certains cas ça peut aussi permettre de libérer les postes
clients d'une partie du volume de travail, en le confiant à un ou
plusieurs serveurs qui n'ont que cela à faire. Même si de nos jours, la
tendance est plutôt à "charger" autant que possible les postes clients
qui ont de la puissance à ne plus savoir qu'en faire, et à pouvoir du
coup prendre de petits serveurs beaucoup moins couteux.


En dehors de ces avantages fonctionnels, cela permet aussi d'éviter les
tentations que pourraient avoir les développeurs de "bidouiller" dans le
code du client riche pour ajouter "vite fait mal fait" des
fonctionnalités de dernière minute. Ca décourage d'autant les décideurs
d'exiger de tels bidouillages...

--
Christophe Franco

Avatar
cfranco
Christophe Franco wrote:

olivier wrote:

je travaille dans une boîte ou les développeurs utilisent assez
régulièrement swing pour développer des applications clients riches et
j'ai découvert dernièrement qu'ils utilisaient en parallèle avec swing
tomcat comme serveur d'application.

l'architecture est donc la suivante :

swing (interface client) -> requête http vers tomcat -> objets métiers
-> bdd

je m'interroge sur l'intérêt de cette architecture par rapport à un
client riche contenant déjà les objets métiers et faisant des appels
directs à la bdd, du style :

swing (interface client + objet métiers) -> bdd

en fait, quel intérêt d'un archi 3tiers par rapport à une archi
2tiers. je précise que personne chez nous n'utilise d'ejb. ce sont des
objets java "classiques".

je trouve qu'on se complique inutilement la vie, non ?


Un des intérêts classiques est de permettre l'utilisation chez des
clients où les réseaux n'autorisent que le passage de flux HTTP (voir
HTTPS). Particulièrement intéressant quand tu as des utilisateurs
distants, cela peut éviter d'avoir à mettre en place des VPN et
autres...


A ce sujet d'ailleurs, cela permet aussi de limiter le volume de données
qui transite sur le réseau, lorsqu'il faut récupérer de gros volumes de
données depuis la base de données alors qu'au final il y a un traitement
de l'information qui fait que le client n'a besoin que d'une toute
petite partie de ces données, si c'est le serveur Tomcat qui fait ce
traitement on aura un volume de données transitant vers le client qui
sera limité au strict nécessaire.


--
Christophe Franco


Avatar
Jacques-Olivier Haenni
Bonjour,

Outre les avantages déjà mentionnés, cette architecture 3-tiers amène
également des avantages concernant la sécurité (par exemple, si le
client swing dialogue directement en jdbc avec la base de données,
qu'est-ce qui empêche un pirate de développer son propre client java qui
va se relier en jdbc sur la base ? Autre scénario: qu'est-ce qui
empêche ce pirate de développer un client qui stocke dans la base des
données invalides ? (en effet, certaines contraites métier ne peuvent
pas facilement être modélisées par des contraintes en base de
données)). Pour bénéficier d'une telle sécurité avec un client 2-tiers,
il faut développer des vues ou procédures stockées pour placer une
partie du traitement en base de données (et on se rapproche ainsi d'un
pseudo 3-tiers...).

Autre bénéfice potentiel: selon les cas, le tiers métier peut gérer un
cache pour les données, évitant ainsi des accès en base de données. De
même, il peut gérer des pools de ressources (par exemple un pool de
connexions JDBC).

Mais comme toujours, ces avantages ont un coût, comme cela a déjà été
relevé.

De plus, il n'existe pas d'architecture idéale convenant à toutes les
applications. Chaque problème a sa solution; chaque application a son
architecture propre. Si la solution miracle existait, ça se saurait...

Jacques-Olivier


Christophe Franco wrote:
Christophe Franco wrote:


olivier wrote:


je travaille dans une boîte ou les développeurs utilisent assez
régulièrement swing pour développer des applications clients riches et
j'ai découvert dernièrement qu'ils utilisaient en parallèle avec swing
tomcat comme serveur d'application.

l'architecture est donc la suivante :

swing (interface client) -> requête http vers tomcat -> objets métiers
-> bdd

je m'interroge sur l'intérêt de cette architecture par rapport à un
client riche contenant déjà les objets métiers et faisant des appels
directs à la bdd, du style :

swing (interface client + objet métiers) -> bdd

en fait, quel intérêt d'un archi 3tiers par rapport à une archi
2tiers. je précise que personne chez nous n'utilise d'ejb. ce sont des
objets java "classiques".

je trouve qu'on se complique inutilement la vie, non ?

Un des intérêts classiques est de permettre l'utilisation chez des

clients où les réseaux n'autorisent que le passage de flux HTTP (voir
HTTPS). Particulièrement intéressant quand tu as des utilisateurs
distants, cela peut éviter d'avoir à mettre en place des VPN et
autres...



A ce sujet d'ailleurs, cela permet aussi de limiter le volume de données
qui transite sur le réseau, lorsqu'il faut récupérer de gros volumes de
données depuis la base de données alors qu'au final il y a un traitement
de l'information qui fait que le client n'a besoin que d'une toute
petite partie de ces données, si c'est le serveur Tomcat qui fait ce
traitement on aura un volume de données transitant vers le client qui
sera limité au strict nécessaire.