92 votes

Différence entre la servlet et des services web

Quelle est la différence entre ces 2? J'ai trouvé quelques résultats sur google rien de concluant.

Ici est une question de suivi:

Dire que j'ai créer spring mvc web app annoter couple de classes avec @Contrôleur d'annotation et de créer quelque chose avec succès le transfert de certaines informations de front-end -> back-end et vice versa, et peut-être certains de la base de données pourraient être impliqués dans le dos du côté de l'extrémité.

Que feriez-vous appel? Reste un service web ou un servlet ou autre chose ?

93voto

lanoxx Points 1407

Un service web est un service qui fournit des méthodes de service pour les ordinateurs à l'aide soit de REPOS ou de SAVON que de son protocole. Il y a plusieurs façons d'implémenter un service web. Le moyen le plus simple d'écrire un web service serait d'écrire une classe et de les annoter avec l' @WebService et @WebMethod les annotations javax.jws, puis le lancer à partir d'un main-méthode avec:

Endpoint.publish("http://localhost:8089/myservice", new MyWebService());

Le résultat est que vous pouvez afficher le fichier WSDL, au siège de l'URL et si vous avez SoapUI ou tout autre client de SAVON vous pouvez également tester et d'utiliser votre service web.

Une servlet sur l'autre main est utilisée pour le transport HTTP demandes et resonses. Il peut être utilisé pour écrire une application web avec Jsp et HTML, ou servir XML et JSON réponses (comme dans un service RESTful) et bien sûr aussi de recevoir et renvoyer des messages SOAP. Vous pouvez la considérer comme une couche au-dessous de services web.

Une façon plus globale et approche pratique consiste à écrire un web service avec un cadre et de le publier sur un serveur d'applications ou de conteneur de servlet comme Tomcat ou JBoss. Dans ce cas, vous devrez utiliser une Servlet pour gérer le transport des requêtes HTTP qui permet de transmettre votre SAVON ou de REPOS des messages.

Pour écrire un web service avec la technologie servlet vous pouvez utiliser, par exemple, JAX-WS (par exemple, pour le SAVON). Dans le but de rédiger services RESTful, vous pouvez soit utiliser JAX-RS (avec l'implémentation de référence étant Jersey), ou alternativement, vous pouvez utiliser le Printemps WebMVC, mais autant que je sache, ce n'est pas le but principal de ce cadre et de Jersey est beaucoup plus facile à utiliser.

Concernant la seconde question: L' @Controller d'annotation est un stéréotype d'annotation qui dit printemps quelque chose à propos de ce que votre bean est censé faire. Qu'est-ce exactement ce contrôleur sera de retour dépend de la mise en œuvre effective de vos méthodes, vous pouvez configurer le printemps de retour en texte brut, HTML, JSON, XML ou ce que jamais vous le souhaitez.

Une remarque sur le côté, une classe est annotée avec l' @Controller n'est pas encore une servlet, il est tout simplement un haricot. La façon dont vous utilisez les servlets dépend principalement sur le Cadre que vous utilisez. Par exemple, lorsque vous utilisez le Printemps, la servlet travail est fait par des Ressorts DispatcherServlet qui à son tour transmet les requêtes vers le bon haricots. Si vous utilisez Tomcat, vous pouvez directement écrire votre propre servlets par simple dérivation de l' javax.servlet.http.HttpServlet de la classe et de l'écraser les méthodes nécessaires tels que l' doGet qui répond aux requêtes HTTP GET à partir de votre navigateur.

43voto

artbristol Points 17755

Ce que vous décrivez est une application web, où une personne utilise un navigateur pour interagir avec un système logiciel.

Un service web est un moyen pour les systèmes de logiciels de communiquer les uns avec les autres en utilisant HTTP et XML, sans les êtres humains impliqués.

Une servlet est une application spécifique de la manière d'écrire un logiciel qui répond à des requêtes HTTP. Spring MVC abstraction de beaucoup de la mise en œuvre de détails pour écrire des applications web plus facile, mais utilise des servlets sous les couvertures.

10voto

Alex Gitelman Points 15062

De mon point de vue serait que Service Web définit de plus haut niveau d'abstraction tel que certaines des fonctionnalités spécifiques. Alors que le Servlet est juste une mise en œuvre de logiciels composant responsable pour le transport de données.

Service Web de mise en œuvre s'appuient généralement sur la servlet pour la réception de données. Cependant, il peut aussi bien l'utiliser sur la coutume de la couche de traiter les données de protocole.

@Contrôleur est probablement plus liée au Service Web de servlet, qui est,encore, une façon de mettre en œuvre le transport.

2voto

dgm Points 502

Web services fonctionnent sur un niveau plus élevé que les servlets. Les Servlets sont des API qui est simple et fournit des capacités à écrire des composants côté serveur.

Par exemple Détente est un Service Web qui contient beaucoup d'autres de "fonctionnalité" avec servlet. À déployer, nous pouvons définir l'web.xml as -

<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>jersey.rest.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

qui n'est rien mais une servlet

2voto

Guillaume Points 1888

Une servlet est une requête HTTP au gestionnaire. Vous pouvez faire ce que vous voulez avec votre les requêtes entrantes. Une servlet exécution de la JVM.

Un service web est liée à une plus ou moins rigide, protocole: Une interface de programmation (API) est définie avec les méthodes disponibles et de leurs arguments et valeurs de retour pour le service.

Cette interface est accessible à l'aide du protocole de mécanismes. Ces protocoles sont agnostiques sur l'hôte qui va exécuter le service: vous pouvez définir le même service web en utilisant PHP, Java, C# ou dans votre propre langue. Vous avez seulement besoin d'avoir un morceau de code capable de comprendre des requêtes pour le protocole et la mesure de produire des réponses lisible par le client.

Par exemple, SOAP est un protocole de service web: Définition de Wikipedia:

SAVON, défini à l'origine comme un Simple Object Access Protocol, est un protocole de spécification pour l'échange de l'information structurée dans le la mise en œuvre de Services Web dans les réseaux informatiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X