Web服务和基于文本的Servlet之间的区别

5

好的,这可能是个非常基础和简单的问题,但由于我从未有机会在Web服务上工作,它一直困扰着我。

我们可以通过非常基本/简单的实现(比如servlet)从我们的服务器获得相同的“文本内容”响应(XML、JSON等),那么为什么有人必须开发Web服务呢?

相比简单的HTTP响应,Web服务提供了什么例外情况呢?


很棒的问题!今天在网络术语方面确实有些混乱。 - Andrey
+1 鼓励大家提出常见的混淆问题 - Nishant
2个回答

5

基本上,从低级别的角度来看,您是正确的,它只是套接字上的文本(XML)。

对于简单的Web服务,Servlet是足够的(我正在编写其中之一)。

然而,当谈到SOAP和WSS-* Web服务等内容时,有很多模板处理和特性可以从Web服务工具包公开为更高级别的事务。

一个简单的例子是数据编组。 如果您将其纯粹视为XML,则您的服务基本上必须手动处理XML —— 解析它,评估它,填充内部模型等。

与此相反,这是Java EE中的某些内容:

@WebService
public Person getPerson(String personId) {
    Person p;
    ...
    return p;
}

Web服务堆栈将把您的Person对象转换为符合SOAP标准的XML块。它还会生成一个WSDL,您可以使用它来创建客户端代码(在许多平台上:.NET,PHP等),以执行Web服务代码。
最终,客户端和服务器只有几行代码,而框架会处理所有繁琐的解析、编组和发布工作。
因此,WS堆栈的价值在于它处理了编写符合WSS标准的Web服务的大部分繁文缛节。
虽然它不是万能药,但对于许多现代实现,SOAP <-> SOAP远程处理可能是跨平台的拖放操作。

0

这要看情况。如果您的 Web 服务需要回答一个简单的是/否问题,比如“这个用户名存在吗?”,那么返回 yes、no、0、1 等可能就足够了。如果您的服务需要返回所有的属性,那么由于其结构化特性,XML 或 JSON 可能更合适。相对于尝试解析纯文本,它们更不容易出现解析错误。


1
可以,听起来合理。但是鉴于API,我们可以解析响应中收到的XML。Java的SAX / DOM API非常好,并且还有许多其他API。同样,如果您查看所有最新的JavaScript API(Google可视化,YUI等),它们都在响应中使用JSON并且使用大量数据的响应。问题再次是相同的。在Web服务上,您正在花费“额外”的工作来开发和处理它,然而,如果使用基本servlet和文本响应,您可以以更少的努力获得相同的结果。 - x.509
如果只需要文本,那就用文本吧。否则,Will的回答非常准确。 - Satya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接