On m'a récemment demandé dans une interview - En Java, comment comparez-vous les frameworks basés sur les composants aux frameworks basés sur les requêtes? J'ai expliqué EJB comme un exemple de cadre basé sur les composants et Struts comme un cadre basé sur la demande, mais je n'étais pas convaincu si je répondais à la question.
Des idées sur ce que l'intervieweur 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, via leurs API, qu'ils travaillent avec l'analyse d'une requête HTML/la génération d'une réponse HTML, tandis que les frameworks basés sur les composants tentent de résumer cela et de traiter l'application comme des collections de composants avec des rendus et des actions pour faire des choses.
À mon avis, les frameworks Web basés sur des composants sont plus problématiques qu'ils n'en valent la peine - leur objectif principal est généralement de rendre le développement d'une application Web "plus facile" pour les développeurs peu familiarisés avec le développement Web et plus proche du développement de bureau traditionnel. Cependant, dans la pratique, lorsque quelque chose ne va pas, vous devez développer des composants personnalisés, vous devez personnaliser le cadre pour quelque chose qui n'est pas une fonctionnalité "prête à l'emploi", etc. vous devez comprendre les deux développements Web "traditionnels" sous-jacents 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 de code existants qui fonctionnaient dans le développement web "traditionnel", vous perdrez du temps les réimplémenter pour travailler dans le cadre basé sur les composants.
Le framework basé sur les requêtes est un framework web qui reçoit la requête de l'utilisateur, puis détermine ce que le système doit faire et rend la réponse à l'utilisateur. Le flux est donc à peu près linéaire. Vous pensez en actions: que veut l'utilisateur (demande) -> quel utilisateur va récupérer (réponse). Un exemple de framework basé sur la demande est Struts . Le moderne Grails est aussi à peu près un framework basé sur les requêtes.
Le framework basé sur les composants n'est pas comme ça. Il n'y a en fait aucun sens clair du flux de l'avant vers l'arrière. Un exemple n'est pas JSF, car d'une certaine manière 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 framework basé sur les composants Tapestry et Wicket . Le paradigme de ces deux cadres est différent. Vous ne pensez pas aux actions ou à la demande-réponse, mais aux composants et composants. Vous définissez un composant dans votre application et vous dites ce que fait le composant. Mais le flux n'a pas à être linéaire comme dans le cadre basé sur la demande.
JSF est basé sur les composants Java API, comme dit Nate, Struts est un framework basé sur l'action, les requêtes Http sont analysées, tout en traitant les actions à la fin, le contrôleur Servlet transmet la demande à la JSP qui sera responsable de générer la réponse. Alors que dans JSF qui est devenu une norme pour les frameworks Web basés sur des composants, il n'est en fait pas nécessaire de traiter les demandes et les réponses car tout ce dont nous avons besoin est d'écrire des pages JSP ou XHTML, de lier les composants utilisés dans la page ou la valeur qu'ils doivent restituer aux propriétés dans les beans de sauvegarde ou les beans gérés et le FacesServlet (contrôleur) fait tout le travail pour se soucier de l'analyse des requêtes et de la redirection 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 voir, il y a une grande différence entre Struts et JSF car JSF apporte une approche basée sur les événements de composants tandis que Struts est plus proche du modèle JSP/Servlet classique. Une autre chose que jpartogi a dit du créateur de JSF et struts est le même, je veux juste mentionner que Struts est un cadre appartenant à la communauté Apache tandis que JSF est une API spécifiée par JCP dans le 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 objets dans Java pour chaque élément web afin que vous puissiez en changer les attributs ou ajouter des fonctionnalités, c'est un framework basé sur des composants mais si le framework ne fournit pas d'objets et que vous avez pour mettre la valeur de réponse de l'élément web entre ses balises, c'est un framework basé sur les requêtes.