Vous êtes sur la page 1sur 5

Concept principaux :

Cette figure illustre le cycle dune demande dun client : 1. Le request envoyer par le client est une une demande dun composant (avec un type de composant et un id) est reu par le module de noyau client (dans le KernelServlet : contenant le cache client). 2. base sur le type de composant le module du noyau trouve le module charg de traiter le composant demand, ce module est alors appel afin de crer le composant en utilisant l'identifiant du composant. 3. le module lit la dfinition du composant partir de tables ou d'autres sources et instancie l'occurrence du composant. 4. le composant est appel gnrer sa reprsentation ct client. 5. s'il est bas sur un modle d'un composant (c'est dire un modle spcifique) le composant appelle un processeur de modle pour le modle. 6. la vue est gnre l'aide du modle ou en excutant java code qui gnre une chane (JavaScript). 7. le rsultat (souvent une chane JavaScript) est retourn vers le module noyau client. 8. le module noyau client traite le rsultat: 1) vrifie la syntaxe du rsultat en utilisant JSLint 2) comprime l'aide JSMin.

Injection de dpendance :
L'objectif principal du modle de l'injection de dpendance est de permettre la slection entre plusieurs implmentations d'une interface de dpendance donne lors de l'excution, ou via des fichiers de configuration, lors de la compilation. Sans l'injection de dpendance, une composante du consommateur qui a besoin d'un service particulier dans le but d'accomplir une tche doit crer une instance d'une classe qui implmente l'interface concrtement la dpendance. Lorsque vous utilisez l'injection de dpendance, un composant consommateur spcifie le contrat de service par l'interface, et la composante injectrice slectionne une mise en uvre au nom de la composante dpendante. Linjection de dpendance repose sur Weld qui met en uvre la JSR-299.

Avantages et inconvnients :
Weld / CDI

Normalisation: Si quelque chose est standardis et il y a une bonne mise en uvre, beaucoup de gens vont l'utiliser. Exemple: Built-in scope dans linjection permet de fournir un peu plus de scope que Guice ou de Spring . Tous ces lments peuvent tre tendus, mais des Framework d'application sappuieront plutt sur des scopes standards s'ils sont utiliss par une large communaut. Support de conteneur : ce qui est similaire l'lment prcdent, mais un argument majeur pour adoption des principaux serveurs dapplication libre, tels que Glassfish et JBoss 6 qui fournissent un soutien CDI.

CDI (JSR-299) est l'acronyme de Java Contexts and DependencyInjection for the Java EE platform. Weld est l'implmentation de rfrence JBoss. CDI dfinit un ensemble de services permettant d'amliorer notablement la structure du code applicatif. Il permet d'arriver avoir du couplage faible tout en ayant un typage fort.

Conteneur de servlet (comme Tomcat) :


JSR-299 ne ncessite pas de support pour les environnements de servlet, Weld peut tre utilis dans n'importe quel conteneur de servlets, comme Tomcat ou Jetty 6.0 6.1. Weld ne prend pas en charge le dploiement des sessions beans, l'injection l'aide @EJB ou @PersistenceContext, ou en utilisant des vnements transactionnels dans les conteneurs de servlets. Pour les fonctionnalits d'entreprise comme celles-ci, vous devriez vraiment tre la recherche un serveur d'applications Java EE. Placer weld-servlet.jar dans WEB-INF/lib dans la racine web. weld-servlet.jar est un "uber-jar", ce qui signifie qu'il faisceaux tous les bits de la soudure et CDI requis pour l'excution dans un conteneur de servlet, fournie pour votre commodit. Alternativement, vous pouvez utiliser ses pots de composants: o jsr299-api.jar o weld-api.jar o weld-spi.jar o weld-core.jar o weld-logging.jar o weld-servlet-int.jar o javassist.jar o dom4j.jar (pour analyser le classpath) o google-collections.jar

Etags et la mise en cache :


Pour amliorer l'exprience utilisateur et la performance, il est important de faire usage de la mise en cache des fonctionnalits dans le navigateur ainsi que sur le serveur. Pour mettre en cache une distinction peut tre faite entre les composants et les fichiers js statiques. Js statiques dfinir les widgets JavaScript qui sont rutiliss par les composants.

La mise en cache et rafrachissant de fichiers js statiques


Js statiques sont normalement mis en cache dans le navigateur. Js statiques peuvent toutefois changer au cours de mises niveau du module ou de dveloppement. Js statiques sont fournis par les modules. Un module publie ses ressources statiques travers un ComponentProvider. L'API d'un ComponentProvider contient une mthode getGlobalResources concatne toutes les ressources statiques dans un fichier js. L'ordre de concatnation est bas sur les relations de dpendance entre les modules. Le nom du fichier js est bas sur un GUID (par exemple: 088afd247a8fe06c91a654891a1358a2.js). Ce GUID est nouveau bas sur le contenu du fichier, si le contenu JavaScript le GUID change aussi. Le fichier js est gnr dans le dossier web / js / gen et servi partir de l pour le client. Remarque: le fichier concatn JavaScript ne sera pas compress si les modules du noyau, et client.kernel client.application sont en dveloppement. Cela facilite le dbogage ct client.

La mise en cache et rafrachissant de composants :


Les composants sont considrs pour tre dynamique et contiennent des donnes lues partir de bases de donnes d'excution. Les composants sont gnrs sur demande et mis en cache sur le serveur. Le ct serveur peut valider si un composant a chang depuis la dernire demande. Cette validation n'est pas possible sur le client que les donnes sur le serveur peuvent avoir chang. Afin de soutenir le concept d'expiration du cache ct serveur du noyau client fait usage de lETag concept. Un ETag est comme un hashcode qui est utilis pour dterminer si le contenu a chang depuis la dernire fois que le navigateur fait la demande.

Compression et vrification de la syntaxe :


La vrification de compression / syntaxe est fait en fonction de l'tat de dveloppement d'un module : si un module est dans ltat de dveloppement, la production de ses composants est contrle syntaxiquement mais pas compress (pour amliorer la lisibilit pour un dveloppeur dans le navigateur) via JSLint. si un module n'est pas dans ltat de dveloppement, la sortie n'est pas vrifie mais elle est compresse (pour amliorer les performances pour l'utilisateur final) via JSMin.

JSMin : JSMin est un filtre qui supprime les commentaires inutiles et espaces de JavaScript fichiers. Il rduit gnralement la taille du fichier de moiti, ce qui entrane des tlchargements plus rapides. Il encourage galement un style de programmation plus expressif car il limine le cot de tlchargement de propre, lire et crire l'auto-documentation.

JSLint : Lint JavaScript est titulaire d'un avantage par rapport aux concurrents Lints parce qu'il est bas sur le moteur JavaScript pour le navigateur Firefox . Cela fournit un cadre robuste qui peut non seulement vrifier la syntaxe JavaScript, mais aussi d'examiner les techniques de codage utilises dans le script et mettre en garde contre des pratiques douteuses.

Fournisseur de composants :
Chaque module doit implmenter un fournisseur de composants. Un fournisseur de composants prend en charge les tches suivantes:

il cre les composants du module sur demande partir du noyau. il enregistre les ressources statiques du module dans le noyau.

La classe java ComponentProvider devrait avoir 2 annotations:


@ ApplicationScoped du signalement de ce composant comme tant un singleton @ ComponentProvider.Qualifier enregistre le nom de l'identification de cette composante.

Remarque : Tous les ComponentProvider peuvent tre trouv car Weld analysera le classpath et de recueillir toutes les classes qui ont une annotation @ComponentProvider.

Action de mise en uvre cot serveur appel depuis le client :


Actionhandler est une solution pratique pour excuter des actions sur le serveur partir du client. Evnement entit commerciale : Le cas entit commerciale vous permet de mettre en uvre la logique mtier qui ragit des vnements spcifiques qui sont dclenchs lorsque les entits sont mises jour, supprimes ou insres dans la base de donnes. vnements entit commerciale correspondent des lments dclencheurs dans la base de donnes. Le principal avantage de la mise en uvre utilisant la logique des vnements d'entit mtier au lieu de dclencheurs, c'est que vous pouvez coder votre logique en java en utilisant votre IDE. Cela permet de productivit et la qualit que vous pouvez coder, dboguer et tester dans un environnement intgr avec le reste de votre logique mtier.

ils sont dclenchs lorsque une instance d'entit est mise jour, supprim ou insrs et avant que l'opration proprement dite a t fait dans la base de donnes, de sorte que vous pouvez changer ou ajouter des informations qui sont conserves avec l'entit vnement. votre code de gestion d'vnements s'excute dans la mme transaction que l'vnement d'affaires, les modifications apportes la base de donnes sont conserves avec l'vnement entit commerciale en une seule transaction. vous pouvez faire usage des fonctionnalits de la couche d'accs aux donnes dans votre code de gestion des vnements, vous pouvez interroger, crer de nouveaux objets persistant

Smart client :

Un smart client est une application qui peut tre facilement dploye et gre tout en proposant une exprience interactive riche. La capacit d'adaptation et la rapidit pour la rponse sont assures par l'utilisation des ressources locales et des connexions tablies de manire intelligente avec des donnes rparties (sur un serveur, d'autres machines, etc.). Les smart clients se trouvent mi-chemin entre les applications fonctionnant sur un poste local et celles qui accdent des services Web. Un tel client est capable de travailler mme lorsqu'il n'a pas accs aux donnes sur le rseau, et ceci grce une copie locale des donnes. Une autre caractristique est la possibilit d'volution de l'interface grce une mise jour depuis un serveur.