Web服务与Web应用程序

时间:2012-02-02 11:06:53

标签: web-services web web-applications architecture

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

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

  1. 将我的应用程序创建为一个简单的Web应用程序。
  2. 创建网络服务。
  3. Web服务看起来更复杂,任何客户端都将以指定格式(SOAP / REST)提供数据,我的应用程序将解析请求并返回客户端询问的数据。如何使用数据不是我的应用程序的问题。

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

11 个答案:

答案 0 :(得分:39)

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

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

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

换句话说,Web服务是“服务器”,应用程序是“客户端”。通常服务器服务于机器,客户端为用户服务。

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

在您的情况下,您正在构建一个Web服务,为多个应用程序提供XML格式的数据。所以我的答案是:构建你正在构建的东西并将其命名为 web service

答案 1 :(得分:17)

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

答案 2 :(得分:16)

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

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

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

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

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

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

答案 3 :(得分:6)

  

我的问题是,通过简单的网络应用接受即可实现同样的效果   XML格式的请求,并以XML响应进行响应。

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

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

<强> SOAP

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

<强> REST

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

MySite.com/Add/5/3

MySite.com/GetStockSymbol/Facebook

MySite.com/GetWeather/Paris/France

答案 4 :(得分:6)

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

业界有两个主要的WEB用例

  1. 企业对消费者(B2C):只要有消费者直接 为了满足需求,我们总是使用a Web-Application提供双方之间的沟通。
  2. 企业对企业(B2B):这意味着业务需求的一部分 来自业务其他部分的一些输入/服务。总是一个 Web服务用于满足企业对企业的需求。 通常,消费者永远不会直接与Web服务进行交互 仅与Web应用程序交互并与Web应用程序交互 使用Web服务进行信息/数据或处理。
  3. 取自http://coder2design.com/java-interview-questions/

答案 5 :(得分:4)

我问过这个问题已经超过3年了,从那时起大量的水流入了桥下。我已经研究了数十个Web应用程序并创建了数百个Web服务。所以我想在这里回答我自己的问题是有道理的。

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

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

  

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

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

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

答案 6 :(得分:2)

来自Leonard Richardson和Sam Ruby的 RESTful Web Services ,ISBN:978-0-596-52926-0:

  
    

Web服务确实与Web应用程序非常相似,但资源创建是它们不同的地方之一。这里的主要区别是HTML表单目前仅支持GET和POST。这意味着Web应用程序必须使用重载的POST来传达任何不安全的操作。

  

答案 7 :(得分:1)

Web服务并不总是有UI。它们通常是使用JSON的API,也可以是主要使用SOAP和XML的SOA类型,也可以是套接字,服务器和其他微Web服务等。

Web应用程序可以通过多种方式组合在一起。有多种方法可以通过编排多个Web服务来创建应用程序,还有一个单独的gui来控制它们与这些服务相关联。另一种不使用服务的方法是在程序上将代码嵌入到您的UI界面应用程序中,或者更好的是,创建一个面向对象的应用程序,该应用程序在稍后的模型中分离了自己的服务,控制器访问该应用程序,并且具有自己的视图访问后端服务的GUI,甚至是从某些GUI传递A2B,B2B,B2C服务的更复杂的应用程序。

服务并不总是有GUI,他们可以使用CRUD来维护数据,但是一旦开始拥有这些类型的功能,它就会成为一个应用程序。这些服务适用于比自己更重要的事物。此申请创建您的申请。它必须有一个目的。通常,完成您的应用程序需要多个盲人服务,并且有某种接口。

如果您只是盲目地向您的服务发送uri请求,并且盲目地发送回json,那就是服务。什么是盲目发送这个?如果您,那么不是申请。如果有某种问题,那么它就会变成一个应用程序,crud是一个用于访问服务的GUI,并且作为一个整体,它是一个数据管理应用程序系统。现在,如果您在前面放置一个图层以网站方式演示此数据,您现在可以使用产品来显示此数据,管理它的产品以及可以通过Web服务访问的真实产品数据,它现在是一个完整的应用程序。您创建此项目的努力将成为您的应用程序。

答案 8 :(得分:0)

我知道重播太晚了,但我仍然想要

如果

,Web服务方法很好

一个。仅与Web服务集成的企业集成,例如集成分布式模块/应用程序。

湾适合分布式应用程序

℃。不止一个消费者提供同样的服务    - 比如银行从信用报告机构消费数据

d。消费者需要不同格式的数据    - 就像一个消费者(客户)想要的XML格式,其他的将是JASON ..etc

答案 9 :(得分:0)

我猜想Web应用程序与Web服务的事实是部署因子比率各不相同,这意味着Web应用程序的部署将(在本地)限制为与Web服务(全局)相同。 另外,当我们想到UI透视图时,更好的选择是Web应用程序,但是当我们想到编程和数据传输透视图时,主要选择Web服务。 Web应用程序要求使用带有诸如Spring mvc等框架的servlet。另一方面,如果要将同一应用程序部署到多个平台上,则可以通过Rest / Soap实现使其成为Web服务,从而使Web应用程序的行为变为服务。

简而言之,

   WebService   =

                 (RestApi/Soap)    # added 
             /         |         \
(client1)---(Web Application)---(clientN)

答案 10 :(得分:0)

这是了解它的简单方法:

Web应用程序意味着人类可以阅读。 可通过浏览器访问它。

Web服务表示计算机可以读取。 可以从任何语言或平台访问它。

例如:

Yatra.com (基于Java的服务)应用程序与 Paypal.com (基于Python的服务)应用程序进行通信