Web服务与Web应用程序

Kam*_*mal 41 architecture web-services web-applications web

我知道这是一个老问题,必须已经回答了数百次,但我还没有找到满意的回答.

我正在创建一个应用程序,将由其他应用程序(移动/网络)用于获取数据.现在我有两个选择:

  1. 创建我的应用程序作为一个简单的Web应用
  2. 创建一个Web服务.

在任何客户端以指定格式(SOAP/REST)提供数据的情况下,Web服务看起来更复杂,我的应用程序将解析请求并返回客户端请求的数据.如何使用数据不是我的应用程序的问题.

我的问题是,一个简单的Web应用程序可以通过XML格式接受请求并使用XML响应进行响应.直觉是网络服务将是一种更好的方式来进行这种服务,我们不确定谁将使用它.但是,在简单的Web应用程序上使用Web服务有什么特别的优势吗?

Jee*_*wes 39

如果我们认为术语,我认为这是主要问题.

Web服务是指通过某种Web界面以任何格式(XML/JSON等)提供数据的软件.该接口可以称为API(应用程序编程接口).REST和SOAP是设计API的方法.

应用程序是使用Web服务提供的此API的软件.

换句话说,Web服务是"服务器",应用程序是"客户端".通常服务器服务于机器,客户端服务于用户.

因此,无论如何,您选择构建系统,我会将提供数据的部分称为"Web服务",将使用数据的部分称为"应用程序"(或"Web应用程序",如果这样).

在您的情况下,您正在构建一个Web服务,为多个应用程序提供XML格式的数据.所以我的答案是:构建你已经构建的东西并称之为web服务.


Buh*_*ica 18

在较低级别,Web应用程序和Web服务有点相同.它们都通过http(s)进行操作.SOAP只是一个定义良好的XML版本.REST有点像HTTP.如果您愿意,可以使Web应用程序看起来像Web服务,反之亦然.

主要区别在于基于您使用的平台的内部开发选项.例如,如果您使用的是Visual Studio,那么添加WCF服务应用程序将为您提供一个默认面向WCF的项目.但是,选择任何其他应用程序类型不会阻止您添加Web服务.

由于以下原因,使用SOAP通常比普通的旧xml更好:

  • 您的用户将会期待它,并且可能已经知道如何阅读它.

  • 您的用户的开发环境可能会了解所有关于SOAP的知识,并且能够开箱即用地解释它.(如果您提供WSDL文件,那么许多用户将能够在几秒钟内使用脚本生成您的类.)

  • 您的消息更有可能被明确定义.我正在研究一个项目,而另一方已定义了他们自己的随机XML结构,这是一个噩梦.我从来不知道会发生什么,并且它们的不同消息类型之间几乎没有一致性.至少如果他们同意遵守SOAP,那么我可能会更容易解释他们的消息.


Joh*_*ers 18

如果您的应用程序不需要用户界面,则将其设为Web服务.如果需要用户界面,则使用Web应用程序.

  • 你不需要它.您当然可以按照您的建议进行操作 - 我建议基于ASP.NET MVC应用程序执行此操作,如果它很简单的话.Web服务(WCF服务)使您可以灵活地使用相同的代码来向许多客户端公开服务,并且功能强大.除此之外,Java或.NET中的SOAP客户端不必操纵XML.就此而言,使用WCF,您的服务也不需要触摸XML - WCF将为您执行此操作. (5认同)

Usm*_*kil 6

我的问题是,一个简单的Web应用程序可以通过XML格式接受请求并使用XML响应进行响应.

这是一个Web服务.我认为这是一个术语问题.除了使用Web服务之外,您无法解决这个问题,无论是基于SOAP还是基于SOAP都取决于您,但是如果您要以XML格式向客户端传递数据,以响应XML请求,那就是Web服务.

我怀疑你要问的是你是否应该使用RESTful Web服务或基于SOAP的复杂方法.对我来说,答案取决于"服务"中需要多少功能.

肥皂

如果您的服务具有许多功能,而不是java和/或Visual Studio的用户更愿意导入您的WSDL文件并将您的服务用作为其完成所有XML解析的对象,那么SOAP就是答案.

休息

如果您只有一些函数,具有非常基本的输入参数和响应数据,那么SOAP可能过度.

MySite.com/Add/5/3
Run Code Online (Sandbox Code Playgroud)

要么

MySite.com/GetStockSymbol/Facebook
Run Code Online (Sandbox Code Playgroud)

要么

MySite.com/GetWeather/Paris/France
Run Code Online (Sandbox Code Playgroud)


小智 6

我认为这可以帮助您解决困惑

业界有两种主要的WEB用例

  1. 企业对消费者(B2C):每当有消费者直接与企业进行交互以满足其需求时,我们总是使用Web应用程序来提供双方之间的通信.
  2. 企业对企业(B2B):这意味着企业的一部分需要来自企业另一部分的一些输入/服务.始终使用Web服务来满足业务到业务需求.通常,消费者永远不会直接与Web服务交互,我们只与Web应用程序交互,Web应用程序与Web服务交互以进行信息/数据或处理.

摘自http://coder2design.com/java-interview-questions/


Kam*_*mal 5

我问了这个问题超过3年,此后桥下流了很多水。我已经处理了数十个Web应用程序,并创建了数百个Web服务。所以我想在这里回答我自己的问题很有意义。

当我问这个问题时,我面临的挑战是我对术语应用程序和服务感到困惑(请注意,Web是Web应用程序和Web服务中的常见元素)。顾名思义,应用程序本身就是应用程序,而服务则是为他人服务。除非有人要使用服务,否则服务可能没有任何意义。它可以服务一个或多个应用程序或服务。

现在,如果我看看我的问题

我正在创建一个应用程序,其他应用程序(移动/网络)将使用该应用程序来获取数据。现在,我有2个选项:1.将我的应用程序创建为简单的Web应用程序。2.创建Web服务。

我想告诉自己,“伙计!如果有一个实体接受请求并返回数据,那么您正在谈论服务。” 因为我不担心这些数据会发生什么?谁会使用它?如何显示?

我正在接受请求并返回数据。现在,我该怎么做是实现的一部分。我可能会使用SOAP或REST。我可能使用Jersey或Spring MVC / REST,或者可能是一个简单的servlet,它接受请求并以JSON或XML或String或任何其他所需格式返回数据。