2012-02-02 179 views
35

我知道这是一个老问题,必须已经答复了上百次,但我还是无法找到满意的答复。Web服务与Web应用程序

我正在创建一个应用程序,该应用程序将被其他应用程序(mobile/web)用于获取数据。现在我有2个选项:

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

Web服务看起来更复杂,其中的任何客户端将提供一个指定的格式(SOAP/REST)的数据和我的应用程序将解析请求,并返回由客户要求的数据。数据如何被使用不是我的应用程序的问题。

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

+0

保持简单(因此,如果一个Web应用程序为你工作,建立它;不是一个服务,但是这是我的看法):) – 2012-02-02 11:11:16

+3

我的观点是,一个Web应用程序适用于大多数的条件下工作,那么为什么要使用服务呢。 – Kamal 2012-02-02 11:15:39

回答

14

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

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

使用SOAP通常比普通的旧XML这些原因一个更好的选择:

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

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

  • 您的消息更可能被很好地定义。我正在开发一个项目,此时对方已经定义了自己的随机XML结构,这是一个噩梦。我从来不知道该期待什么,而且他们的不同消息类型之间几乎没有一致性。至少如果他们已经同意遵守SOAP,那么我可能会更容易解释他们的消息。

13

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

+0

这很简单吗?我不能简单地创建一个返回XML作为输出的Web应用程序(就像我们在大多数AJAX应用程序中那样)。为什么我需要Web服务? – Kamal 2012-02-02 15:18:47

+4

你不需要“它”。你当然可以按照你的建议来做 - 我建议基于ASP.NET MVC应用程序来做,如果它很简单。 Web服务(WCF服务)使您可以灵活地使用相同的代码工作,以便将服务展示给许多客户端,而且功能强大。除此之外,Java或.NET中的SOAP客户端不必操纵XML。对于这个问题,使用WCF,你的服务不需要接触XML-- WCF将为你做到这一点。 – 2012-02-02 15:52:01

5

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

这是一个web服务。我认为这是一个术语问题。除了使用Web服务之外,您无法解决这个问题,无论它是基于平稳还是基于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 
34

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

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

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

换句话说,Web服务是“服务器”,应用程序是“客户端”。通常服务器提供服务的机器和客户端服务用户因此,无论您选择如何构建您的系统,我都会将提供数据的部分称为“Web服务”,并将数据作为“应用程序”(或“Web应用程序”)使用。

听起来就像你的情况,你正在构建一个Web服务,为多个应用程序提供XML格式的数据。所以我的答案是:建立你已经建立的东西,并称之为网络服务

+0

因此,如果我们正在建设一个网站,我们是否总是需要(至少)两台机器/服务器?一个用于从用户界面(典型MVC)和另一个REST服务(其他地方部署)访问前者(MVC的控制器)的用户请求? – user7 2018-02-17 07:22:14

+0

不知道我是否理解了这个问题,但是你是否总是需要至少2台服务器来构建一个网站,当然不是。网站通常只有一台为浏览器提供HTML的服务器。或者你也可以只有一台服务器,例如服务器JSON通过例如REST API。 – Jeewes 2018-02-17 12:18:22

+0

如果单个服务器返回HTML(视图),那么数据检索逻辑也是MVC控制器的一部分吗?如果我不希望那样(不想在控制器中使用业务逻辑),那么我必须有一个REST API端点才能获得它。在这种情况下,控制器必须击中该API。我对吗? – user7 2018-02-17 13:11:07

0

我知道为时已晚重播,但我仍然希望

Web服务的方法是很好的,如果

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

b。适用于分布式应用程序

c。不止一个消费者提供相同的服务 - 像银行从信用报告机构消费数据

d。消费者需要不同格式的数据 - 就像一个消费者(客户)想要的XML格式一样,另外一个会在JASON ..等

4

我想这可能会帮助你解决你的困惑

有WEB的两个主要用例是在行业

  1. 企业对消费者(B2C):每当直接有消费者 互动随着业务的需要,我们总是使用网络应用程序 来提供双方之间的沟通。
  2. 企业对企业(B2B):意味着事业中的一个部分从企业的另一部分需要 一些输入/服务。总是使用一个 Web服务来满足企业对企业的要求。 通常消费者从不与Web服务的直接交互,我们 只与一个网络应用程序和网络应用程序交互与Web服务的交互 信息/数据或处理。

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

0

摘自我问这个问题超过3张赞成票回来,从那时起了很多的水已经从桥下流过。我从事过数十种Web应用程序并创建了数百种Web服务。所以我想在这里回答我自己的问题是有道理的。

我面临当我问这些问题的关键是,我得到了条款的应用和服务之间的困惑(注意,网络是在Web应用和Web服务的共同元素)。正如名字所暗示的那样,应用程序本身就是一种应用程序,而服务则是为了服务其他人。除非有人打算使用它,否则服务可能没有意义。它可以服务于一个或多个应用程序或服务。

现在,如果我看我的问题

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

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

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

0

Web服务不总是有一个UI。它们通常API的使用JSON,也可以使用SOAP和XML主要SOA类型,也可以是插座,以及服务器和其他科技Web服务等。

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

服务并不总是有一个GUI,他们可以有一个CRUD来维护数据,但是一旦你开始拥有这些类型的功能,它就成为一个独立的应用程序。这些服务适用于比自己更重要的事情。这个应用程序创建你的应用它必须有一个目的。通常,需要多个盲人服务才能完成应用程序,并且存在某种界面。

如果你只是盲目地向你的服务发送一个uri请求,并且它盲目地发回json,那是一种服务。什么是盲目发送这个?如果你,那么不是一个应用程序。如果遇到某种问题,那么它就成为一个应用程序,这个问题就是一个访问服务的GUI,整体来说,它是一个数据管理应用程序系统。现在,如果您在前面放置一个图层以便以网站的形式展示这些数据,那么您现在有一个产品可以显示这些数据,一个用于管理它的产品,以及这些数据是真正的产品,并且可以通过Web服务访问,它现在是一个完整的应用程序。你的努力创造这成为你的应用程序。

1

REST Web服务由Leonard Richardson和Sam Ruby中,ISBN:978-0-596-52926-0:

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