Web服务与客户端-服务器分布式计算技术

4
作为一个Web服务技术的新手,我刚开始学习它们,我无法准确地理解为什么应该实现Web服务而不是标准的客户端/服务器协议。
1 - 请问有人能帮我理解吗?
我在网上找到了一些指示,但希望您可以确认/扩展它们,以帮助我把所有的知识点整合起来。
2 - 以下陈述是否正确?请您解释一下?
1.
A guideline that I was told: 
If you plan on reaching out to multiple clients (Linux, Windows, etc.), 
then use Web Services; otherwise, use Client / Server.

2.

If your application needs to be run on machines that would access the data 
over a public network (internet) then you should go with web services because 
the traditional client/server model is not acceptable due to not wanting 
to expose your server publicly.
The web services you would expose publicly could be secure (HTTPS),
require some kind of authentication and only expose what you WANT to expose, 
versus exposing a whole database

3.

One of the better reasons to use remoting is that it gives a large increase in
performance. But one of the down falls is that it is a good bit more complicated
to program than Web Services.

4.

The proper use of web services is really based on your "remote connectivity"
needs. If your application is going to be run in a controlled environment such as
a LAN/WAN where you can see the server thru a private or secure (VPN) network,
then you can build a traditional client/server application

5.

Web Services:

Though there are no major differences in the output of service with both these
models, the mobility and accessibility is definitely an advantage. 
However, the lack of a great deal of personalization does come as a con against 
the web-server based model.

Client Server:

The added security of client server is definitely a one up and it also gives the 
option of controlling the updates and upgrades if any. 
Initially though, client servers may come with a higher front-end cost.

以下链接中提取了一些陈述:


@camus - 添加了源链接 - Matteo
2个回答

8
一些时间过去了,经过学习许多关于参数的教程,我终于可以回答自己的问题:

1. 为什么应该实现Web服务而不是标准的客户/服务器协议


实际上,Web服务是另一种分布式计算技术(如CORBA、RMI、EJB等)。它们允许我们创建客户端/服务器应用程序,因此并非替代方案。

客户端(想要访问Web服务的程序)联系服务器中的Web服务,并发送服务请求以请求某些信息。服务器通过服务响应返回所需信息。

当然,这只是Web服务工作方式的一个简单示例,但是您可以看到它与普通的客户端/服务器协议的工作原理完全相同。

那么,什么使Web服务特殊?

好吧,Web服务比其他技术具有某些优势:

  • Web服务是平台无关和语言无关的,因为它们使用标准XML语言。这意味着我的客户端程序可以在Windows下使用C++编程并运行,而Web服务可以在Linux下使用Java编程并运行。

  • 大多数Web服务使用HTTP传输消息(例如服务请求和响应)。如果您想构建互联网规模的应用程序,这是一个重大优势,因为大多数互联网代理和防火墙不会干扰HTTP流量(与CORBA不同,它通常在防火墙方面存在问题)。

当然,Web服务也有一些缺点:

  • 开销。将所有数据以XML形式传输显然不如使用专有的二进制代码高效。在可移植性方面取得的胜利,会在效率方面失去。即便如此,这种开销对于大多数应用程序来说通常是可以接受的,但是您可能永远找不到使用Web服务的关键实时应用程序。

  • 灵活性不足。目前,Web服务不太灵活,因为它们只允许一些非常基本的服务调用形式。例如,CORBA为程序员提供了许多支持服务(例如持久性、通知、生命周期管理、事务等)。幸运的是,有许多新兴的Web服务规范(包括WSRF),这些规范正在帮助使Web服务变得更加灵活。

然而,有一个重要的特征区分Web服务。虽然诸如CORBA和EJB之类的技术面向高度耦合的分布式系统,其中客户端和服务器彼此非常依赖,但Web服务更适合松散耦合的系统,其中客户端可能没有关于Web服务的先前知识,直到实际调用它。高度耦合的系统非常适合企业内部应用程序,但在互联网规模上表现不佳。然而,Web服务更适合满足互联网广泛应用程序的需求。


2.以下陈述是否正确,您能解释一下吗?


1) 如果你计划与多个客户端(Linux、Windows等)进行交互,则使用Web服务;否则,请使用客户端/服务器。

正确

如上所述:

Web服务是平台无关和语言无关的,因为它们使用标准的XML语言。这意味着我的客户端程序可以用C++编程并在Windows下运行,而Web服务是用Java编程并在Linux下运行。

如果您的分布式系统架构已知且在所有节点上都是同质的,则可以编写更简单和更紧密耦合的客户端/服务器应用程序,使用固定的编程语言。

2) 如果您的应用程序需要在访问公共网络(Internet)上的机器上运行,则应选择Web服务,因为传统的客户端/服务器模型不可接受,因为不希望公开您的服务器。您将公开的Web服务可以是安全的(HTTPS),需要某种身份验证,并且仅公开您想要公开的内容,而不是公开整个数据库

正确

通过Web服务,您向外部世界公开的唯一内容是标准Web服务器(客户端可以向其发送HTTP请求)。所有宝贵的数据和方法都是受保护的且不可访问的。

如果您直接向Internet提供服务器进程的访问端点(例如IP地址和服务端口号),这将使任何进程都可以访问您的数据和方法。

3) 使用远程调用的一个更好的理由是它可以大大提高性能。但是,其中一个缺点是编程比Web服务要复杂得多。

正确

远程调用允许您构建更多功能的服务,并避免传递大量XML数据,因此更具性能。

4) 正确使用Web服务实际上基于您的“远程连接”需求。如果您的应用程序将在受控环境中运行,例如可以通过私有或安全(VPN)网络查看服务器的LAN/WAN,则可以构建传统的客户端/服务器应用程序

正确

再次引用答案的第一部分:

Web服务更适合松散耦合的系统,在这种情况下,客户端可能没有关于Web服务的先前知识,直到它实际调用它。高度耦合的系统非常适合企业内部应用程序,但在互联网规模上表现不佳。然而,Web服务更适合满足互联网广泛应用的需求。

5) Web Services:

虽然这两种模式的服务输出没有太大差别,但Web Services 的可移植性和易用性绝对是标准客户端/服务器范例的优势。但是,相比基于Web服务器的模型,个性化方面的缺乏也成为了一个不足。

客户端/服务器:

客户端/服务器的增加安全性绝对是一项优点,它还提供了控制更新和升级的选项。不过,初始成本可能会更高。

TRUE

该语句的第一部分指出Web Services 更独立于平台和语言,因此更易访问,但相应地不够灵活。

第二部分强调了多样性的优势在于可以更轻松地控制和隐藏更新和升级。

例如,如果Web服务的维护者决定更改服务的接口以及其WSDL描述,则客户端必须再次经历发现阶段。如果使用标准的客户端/服务器协议,则不会发生这种情况。


1

Web服务是客户端/服务器“应用程序”。

通过您的浏览器,当您连接到一个网站时,服务器会输出HTML或其他可被您的浏览器读取的内容。HTML可以从应用层(如PHP或.NET)生成。您的浏览器是一个客户端。

一个Web应用程序(如PHP / Java等)本身可以是另一个Web应用程序的客户端。想象一下,您的应用程序需要显示天气预报,并将其提供给浏览器。

服务器上的您的应用程序将通过协议(REST / SOAP / XML-RPC /等)连接到另一个应用程序,以从服务器应用程序推送或拉取数据,服务器应用程序可以是任何PHP Java,DotNet,您的客户端应用程序不关心,因为它们通过定义的协议进行通信。

因此,Web服务允许客户端和服务器进行通信。

并且没有Web服务与客户端/服务器之间的区别,因为Web服务都是关于客户端/服务器通信的。

编辑:我真的不知道您引用的文本在谈论什么...请提供该文本的来源。


感谢您清晰的解释,但我仍然不明白您所说的“一个Web应用程序(php / java /等...)本身可以成为另一个Web应用程序的客户端”。我认为我的问题在于我继续以C / S方式思考,为什么我的应用程序应该向浏览器提供天气报告,而成为另一个应用程序的客户端?关于引用,它们是我从许多链接中获取的片段,我想知道它们是否有意义,是否有人能更好地解释它们。 - Matteo
你了解哪些服务器技术? - mpm
我一直使用Linux + APACHE + MySql + php平台进行开发。 - Matteo
你的 PHP 应用程序也可以像浏览器一样发出 HTTP 请求,但不能显示 HTML,而是可以使用 JSON 数据。例如,你可以在 PHP 中使用 Twitter API 来从 Twitter 获取推文,然后在 HTML 中显示这些推文。Twitter 将作为服务器,而你的 PHP 脚本则是客户端。 - mpm
我有一个问题,Web服务只是针对软件的吗?在我使用的应用程序下(例如显示我的推文的网页),我不会意识到是否存在Web服务。我还有另一个问题,假设我正在制作一个客户端应用程序,它应该在许多设备上运行(例如个人电脑或智能手机),以及一个服务器应用程序,它应该接收数据,处理它并根据处理结果给出响应,并将其发送回设备。如果我直接向人类提供数据,则这是标准的C / S应用程序,不需要Web服务...正确吗? - Matteo

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