IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres Discussion :

architecture 3 tier sans serveur web


Sujet :

Autres

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Bonjour à tous,
    moi je suis stagiaire dans une PME,le but de mon stage est de mettre en oeuvre une architecture 3 tiers mais sans passer par un serveur web,donc je voulais savoir si c'est possible?et veuillez me proposer quelques serveur (même comerciaux) qui peuvent me être utile.
    je détail un peu plus,dans l'architecture actuelle,on a que des clients lourds qui accèdent à la BD et celà crée beaucoup de conflits lors des MAJ,en plus le chargement de l'état de la base doit s'effectuer par chaque client se qui induit a de pertes considérabes lors des chargement.
    donc,moi j'ai penser à mettre en oeuvre un serveur intermédiaire qui doit charger l'etat de la base en cache et les clients doivent passer par le serveur pour modifier la BD.
    le problème,je ne sais pas encore qu'elle serveur doit je implémenter,comment ceci peut etre fait et est-ce que vous pensez que c'est une bonne solution.



    comment est-il possible d'acceder au serveur sans le protocole http?
    sachant que je doit garder le mécanisme des clients lourds pour acceder à la BD.
    moi j'ai pensé à prendre l'un des serveur suivant:
    I. Oracle WebLogic Server Enterprise Edition
    II. Oracle TUXEDO
    III. Oracle Application Server 10g version 2 (10.1.2)
    donc veuillez m'aider à faire mon choix et me dire si je suis sur la bonne voie sinon me proposer un autre bien meilleur si en existe!

    merci de me repondre au moins à quelques unes de mes questions et je reste à votre disposition pour plus d'eclairissements.
    Merci

  2. #2
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Tu dois bien imaginer que c'est dur de te répondre comme ça, sans savoir quelle est l'architecture actuelle et quels sont les problèmes rencontrés (et dans quelles proportions).

    Si vous gardez une architecture de clients riches, ce sera toujours un peu problématique de mettre à jour les postes clients, ou alors vous utilisez une technologie de déploiement mais pour pouvoir suggérer quelque chose il faut notamment savoir :

    1) Quelles sont les technologies utilisées actuellement (languages, serveurs)
    2) Ce que représente ce volume de données devant être chargé par les clients.
    3) A quelle fréquence les données sont modifiées et invalidées (ça détermine l'efficacité d'un cache bien souvent.)

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Bonjour, je vous remercie vivement pour votre reponse
    on faite je fait mon stage au sein d'une entreprise et ils ont un langage propre à eu donc ils m'ont juste fait connaitre leur problème rencontrés notament les temps des chargements des données en base qui prend énnormément du temps,en plus ya plusieurs users qui travaillent simultanément en mode déconnecté sur les memes données,donc ya des conflits de type(MAJ/MAJ,Suppression/MAJ,des chevauchements lors des affectations des taches différentes sur une meme personne....)
    donc,on pas demandé de developper un prototype de leur progiciel(mais j'ai l'embaras du choix),mais juste je doit implémenter un serveur intermédiaire entre les utilisateurs et la base de données pour eviter les conflits sous cités et pour gagner du temps du chargement des données en base(utiliser un cache par exemple au niveau du serveur).
    aussi, comme ils ont des contrats avec ORACLE,je voudrais utiliser un serveur d'application oracle compatible avec J2EE donc je voudrais connaitre votre avis et surtout savoir si je peux gagner en efficacité,performance et temps de chargement avec J2EE.

    efaite,l'archi actuelle est 2 tiers(clients lourds+SGBDR Oracle)

    je ne sais pas si je suis un peu plus clair mais je reste à votre disposition pour plus d'eclairsissements.

  4. #4
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ecoute, si tu ne sais pas avec quoi ils développent leur application, potentiellement tu ne sais pas si ils seront en mesure d'utiliser ton *serveur* ni quel sera leur effort à fournir pour y parvenir.

    Pour ce qui est des conflits de mise à jour, il faut se rendre compte du comment et du pourquoi ça arrive :

    Si un utilisateur travaille sur une donnée (par exemple un client dont il veut modifier l'adresse).

    1) Est-ce que le client est lu immédiatement de la base de donnée au moment ou l'utilisateur passe en édition (lecture fraîche)?
    2) Combien de temps dure l'édition?
    3) Fin de l'édition, à quel moment la donnée est écrite dans la base de données et est donc disponible dans sa version *à jour* pour les autres utilisateurs?

    Il existe une foule de solutions suivant les réponses que tu apportes à cette question, seulement aucune n'est parfaite.
    Mais tu vas devoir répondre à cette question en premier, laisse tomber cette histoire de serveur pour l'instant, faut juste se rendre compte de la durée de la transaction qui est dans cette exemple : "modifier un client".

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par _skip Voir le message
    Ecoute, si tu ne sais pas avec quoi ils développent leur application, potentiellement tu ne sais pas si ils seront en mesure d'utiliser ton *serveur* ni quel sera leur effort à fournir pour y parvenir.

    Pour ce qui est des conflits de mise à jour, il faut se rendre compte du comment et du pourquoi ça arrive :

    Si un utilisateur travaille sur une donnée (par exemple un client dont il veut modifier l'adresse).

    1) Est-ce que le client est lu immédiatement de la base de donnée au moment ou l'utilisateur passe en édition (lecture fraîche)?
    2) Combien de temps dure l'édition?
    3) Fin de l'édition, à quel moment la donnée est écrite dans la base de données et est donc disponible dans sa version *à jour* pour les autres utilisateurs?

    Il existe une foule de solutions suivant les réponses que tu apportes à cette question, seulement aucune n'est parfaite.
    Mais tu vas devoir répondre à cette question en premier, laisse tomber cette histoire de serveur pour l'instant, faut juste se rendre compte de la durée de la transaction qui est dans cette exemple : "modifier un client".
    salut,

    on général les planificateurs chargent leur plannings, le matin (et enregistre en fin de journée), selon les métiers sur lesquels ils sont responsables et donc les personnes qui travaillent sur ces métiers,les taches qui sont déjà affectées sur ces personnes et ils(les planificateurs) doivent leur affectés de nouvelles taches.
    exemple:
    Personne 1 travail sur Métier 1 et M2
    Personne 2 travail sur M2 et M3

    user 1 responsable du métier M2 donc charge les plannings des personnes P1 et P2
    USER 2 responsable du métier M3 donc charge le planning de la personne P2
    le probleme est que une personne peut maitriser plusieurs métiers donc forcément elle a été chargé par plusieurs plannificateurs et donc ces plannificateurs peuvent lui affecter de nouvelles taches pour une même durée(y a chevauchement de taches,modifient les même taches...)

    mon but est d'implementer un serveur(peut importe le langage) de telle sort à mettre en évidence les éventuels conflits qui apparraissent afin de permettre au plannificateur de connaitre ces taches perdues.

    pour l'instant je vais developper mon propre prototype pour juste montrer que mon implémentation est efficace ensuite je vais m'attaquer à leur progiciel en gardant ma logique.

    je sais que j'ai mal expliqué,mais si je détaille un peu plus,je risque d'encombrer encore les choses.

    j'espere que j'ai etait clair sinon je détail encore un peu plus.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    moi j'ai pensé a garder en memoire du serveur d'une manière permanente tout les métiers ainsi que les leurs personnes correspondantes pour gagner en temps du chargement des personnes par les utilisateurs.

    et seul le serveur aura accés à la BD pour reccuperer les taches correspondantes pour les personnes chargé par les utilisateurs connectés et ces taches seront sauvegardées en cache du serveur.
    pour chaque demande de MAJ de la base d'un plannificateur,le serveur vérifie seulement par rapport a son cache, si ça pause pas de conflit,il MAJ son cache et la BD sinon il informe le user du conflit généré.

    pensez vous que cette solution est bonne? et est que je peux utiliser J2EE sachant que je veux mettre en oeuvre du multithreading pour permettre les chargement simultannées des planning en base?
    je voudrai vous montrer l'architecture du fonctionnement de l'application que je veux implementer mais je ne sais pas comment joindre des images a ce forum!!!

    je vous en remercie pour ton aide

  7. #7
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ok alors déjà sans parler de serveur.

    Le problème ici est donc clairement le temps que mettent les modifications d'un utilisateur à être disponibles aux autres utilisateurs.

    En fait pour le moment elles mettent quelque 7-8 heures. Si tu pouvais les réduire à quelques minutes....
    Je m'explique, pour pouvoir gérer ce genre de situation il faudrait dans l'idéal que :

    1) Lorsqu'un utilisateur tente d'affecter une ressource, le programme vérifie instantanément dans la base de données que la ressource est disponible pour l'intervalle demandé. Si ce n'est pas le cas, annulation de l'affectation avec un message d'erreur.

    2) Quand l'utilisateur affecte la ressource, la réservation doit se faire directement dans la BD pour que le point 1 soit possible.

    3) Par confort, si un utilisateur consulte le planning d'une ressource, il faut lui afficher la version la plus à jour possible en requêtant la DB.

    En fait si je saisis bien, en évitant de tout charger en mémoire puis de bosser seulement dans sa bulle locale, il faut recharger les données à l'instant précis ou elles sont nécessaires, et écrire immédiatement les données dans la base.

    Ca te paraît jouable vu la gueule de l'application? De toutes façons ça me paraît impossible sans la modifier, elle devra arrêter de manipuler des "stale data".

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par _skip Voir le message
    Ok alors déjà sans parler de serveur.

    Le problème ici est donc clairement le temps que mettent les modifications d'un utilisateur à être disponibles aux autres utilisateurs.

    En fait pour le moment elles mettent quelque 7-8 heures. Si tu pouvais les réduire à quelques minutes....
    Je m'explique, pour pouvoir gérer ce genre de situation il faudrait dans l'idéal que :

    1) Lorsqu'un utilisateur tente d'affecter une ressource, le programme vérifie instantanément dans la base de données que la ressource est disponible pour l'intervalle demandé. Si ce n'est pas le cas, annulation de l'affectation avec un message d'erreur.

    2) Quand l'utilisateur affecte la ressource, la réservation doit se faire directement dans la BD pour que le point 1 soit possible.

    3) Par confort, si un utilisateur consulte le planning d'une ressource, il faut lui afficher la version la plus à jour possible en requêtant la DB.

    En fait si je saisis bien, en évitant de tout charger en mémoire puis de bosser seulement dans sa bulle locale, il faut recharger les données à l'instant précis ou elles sont nécessaires, et écrire immédiatement les données dans la base.

    Ca te paraît jouable vu la gueule de l'application? De toutes façons ça me paraît impossible sans la modifier, elle devra arrêter de manipuler des "stale data".
    d'occord,je vais reflichir d'avantage a cette solution,même si j'ai déjà proposé cette solution a mon encadreur mais il ma dit que cette solution est tres couteuse en terme de messages qui circulent sur le réseau, en plus la complexité de verification de présence des conflits est elevées et surtout c'est difficile de gérer les MAJ simultannées(même avec des verous,ca peux etre blocante!)
    revenant à mon problème initiale,j'ai pensais à utiliser les EJB pour garder la politique des clients lourds et surtout pour ne pas utiliser un serveur WEB.
    donc,je veux seulement que vous me disiez si je me trompe pas et si vous pouvez me proposer quelques liens utiles
    http://jmdoudoux.developpez.com/cours/developpons/java/
    merci pour toutes vos reponses

Discussions similaires

  1. Trnasfert d'informations en RS-485 avec une page HTML5 sans serveur web
    Par ToupetMan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 21/10/2011, 13h24
  2. Du WEB sans serveur WEB?
    Par Thorna dans le forum ASP.NET
    Réponses: 6
    Dernier message: 03/09/2008, 15h33
  3. SQL, Page web statique, MySQL en local, sans serveur WEB. possible ?
    Par berjaoui dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/05/2008, 14h40
  4. Réponses: 3
    Dernier message: 15/05/2008, 02h00
  5. architecture 3 tier sans serveur web
    Par dans le forum Architecture
    Réponses: 0
    Dernier message: 01/01/1970, 01h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo