Composants basés sur Java Component vs basés sur la demande

On m’a récemment demandé dans une interview – En java, comment comparez-vous les frameworks basés sur les composants pour demander des frameworks basés? J’ai expliqué EJB comme un exemple de framework basé sur Component et Struts comme un cadre basé sur les requêtes mais je n’étais pas convaincu si je faisais justice à la question.

Des idées sur ce que l’enquêteur voulait dire et ce qui aurait dû être comparé?

salutations, avajurug

Ils recherchaient très probablement des exemples de frameworks Web . Par exemple, JSF est un framework basé sur des composants et Struts est un framework basé sur des requêtes.

Les frameworks basés sur les requêtes indiquent généralement, par le biais de leurs API, qu’ils parsingnt une requête HTML / génèrent une réponse HTML, tandis que les frameworks basés sur les composants tentent d’abstraire cette opération et traitent l’application comme des ensembles de composants avec des rendus et des actions. faire des choses.

À mon avis, les frameworks Web basés sur des composants posent plus de problèmes qu’ils ne le méritent – leur objective principal est généralement de rendre le développement d’une application Web “plus facile” pour les développeurs peu Cependant, dans la pratique, lorsque quelque chose ne va pas, vous devez développer des composants personnalisés, vous devez personnaliser le framework pour des fonctionnalités qui ne sont pas “prêtes à l’emploi”, etc. et comment le framework basé sur les composants l’abstrait – et si vous êtes un développeur Web expérimenté et que vous avez des solutions, des utilitaires, des bibliothèques ou des extraits existants qui ont fonctionné dans le développement Web “traditionnel”, vous perdrez du temps à les implémenter le cadre basé sur les composants.

Le framework basé sur les requêtes est un framework Web qui reçoit la demande de l’utilisateur, puis détermine ce que le système doit faire et renvoie la réponse à l’utilisateur. Le stream est donc plutôt linéaire. Vous pensez en actions: qu’est-ce que l’utilisateur veut (demande) -> quel utilisateur sera de retour (réponse). Un exemple de cadre basé sur la demande est Struts . Le Grails moderne est à peu près aussi un cadre basé sur les requêtes.

Le framework basé sur les composants n’est pas comme ça. Il n’y a en fait aucune idée claire du stream de l’avant vers l’arrière. Un exemple de cela n’est pas JSF, car en quelque sorte JSF est à peu près la même chose avec Struts (puisque le créateur de Struts et JSF est le même). Un bon exemple de cadre basé sur Composant Tapestry and Wicket . Le paradigme dans ces deux frameworks est différent. Vous ne pensez pas aux actions ou à la demande-réponse, mais aux composants et aux composants. Vous définissez un composant dans votre application et vous dites ce que fait le composant. Mais il n’est pas nécessaire que le stream soit linéaire comme dans le cadre basé sur la demande.

JSF est une API Java basée sur des composants, étant donné que Nate, Struts est un framework basé sur l’action, les requêtes HTTP sont analysées. Alors que dans JSF, devenu un standard pour les frameworks Web à base de composants, il n’est en fait pas nécessaire de traiter les requêtes et les réponses, il suffit d’écrire des pages JSP ou XHTML, de lier les composants utilisés vers les propriétés dans les beans de sauvegarde ou les beans gérés et le FacesServlet (contrôleur) fait tout le travail pour parsingr les requêtes et les redirect vers le JSP qui rendra la réponse en fonction des règles de navigation spécifiées dans faces-config.xml. Comme vous pouvez le constater, il existe une grande différence entre Struts et JSF, car JSF propose une approche basée sur des événements de composants, tandis que Struts est plus proche du modèle JSP / Servlet classique. Une autre chose que jpartogi a dit, le créateur de JSF et de Struts est le même, je veux juste mentionner que Struts est un cadre appartenant à la communauté Apache alors que JSF est une API spécifiée par JCP dans la JSR-127 pour la version 1.1 et JSR-252 pour la version 1.2 et a différentes implémentations (SUN-RI, Apache MyFaces …)

Simplement, si le framework a des objects du côté java pour chaque élément Web afin que vous puissiez en changer les atsortingbuts ou append des fonctionnalités, c’est le framework basé sur les composants mais If framework ne fournit pas d’objects et vous devez mettre la valeur de réponse de l’élément web ses balises sont un cadre basé sur la demande.