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.

声明摘自以下链接:

4

2 回答 2

8

一段时间过去了,在研究了很多关于论点的教程之后,我终于可以回答我自己的问题了:


1. 为什么要实现Web Service而不是标准的Client/Server协议


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

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

当然,这是 Web 服务如何工作的一个非常粗略的示例,但您可以看到它与普通客户端/服务器协议如何工作的概念完全相同。

那么,是什么让 Web 服务与众不同?

嗯,Web 服务与其他技术相比具有一定的优势:

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

  • 大多数 Web 服务使用 HTTP 来传输消息(例如服务请求和响应)。如果您想构建 Internet 规模的应用程序,这是一个主要优势,因为大多数 Internet 代理和防火墙不会干扰 HTTP 流量(与 CORBA 不同,后者通常会遇到防火墙问题)。

当然,Web Services 也有一些缺点:

  • 高架。以 XML 传输所有数据显然不如使用专有二进制代码高效。你在便携性上赢得了什么,你就会在效率上失去什么。即便如此,这种开销对于大多数应用程序通常是可以接受的,但您可能永远不会找到使用 Web 服务的关键实时应用程序。

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

但是,Web 服务有一个重要特征。虽然 CORBA 和 EJB 等技术面向高度耦合的分布式系统,其中客户端和服务器非常依赖于彼此,但 Web 服务更适用于松散耦合系统,其中客户端可能没有 Web 服务的先验知识直到它真正调用它。高度耦合的系统非常适合 Intranet 应用程序,但在 Internet 规模上表现不佳。然而,Web 服务更适合满足 Internet 范围应用程序的需求。


2.下面的说法正确吗?请您给我解释一下吗?


1)如果您打算接触多个客户端(Linux、Windows 等),请使用 Web 服务;否则,使用客户端/服务器。

真的

如上所述:

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

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

2)如果您的应用程序需要在可以通过公共网络(互联网)访问数据的机器上运行,那么您应该使用 Web 服务,因为传统的客户端/服务器模型不可接受,因为不想公开您的服务器。您公开公开的 Web 服务可能是安全的 (HTTPS),需要某种身份验证,并且只公开您想要公开的内容,而不是公开整个数据库

真的

对于 Web 服务,您公开向外部世界公开的唯一东西是标准 Web 服务器(客户端可以向其发送 HTTP 请求)。相反,所有宝贵的数据和方法都受到保护,无法访问。

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

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

真的

远程处理允许您构建更通用的服务,并避免传递大量 XML 数据,因此性能更高。

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

真的

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

Web 服务更适合松散耦合的系统,其中客户端可能在实际调用 Web 服务之前不知道它。高度耦合的系统非常适合 Intranet 应用程序,但在 Internet 规模上表现不佳。然而,Web 服务更适合满足 Internet 范围应用程序的需求。

5)网络服务:

尽管这两种模型的服务输出没有重大差异,但 Web 服务的移动性和可访问性绝对是优于标准 C/S 范式的优势。然而,缺乏大量的个性化确实是对基于 Web 服务器的模型的不利影响。

客户端服务器:

客户端服务器的附加安全性绝对是一个提升,它还提供了控制更新和升级(如果有)的选项。不过,最初,客户端服务器可能会带来更高的前端成本。

真的

该声明的第一部分指的是 Web 服务更独立于平台和语言,因此更易于访问,但正如所述,更多的是更少的通用性。

第二部分说明了这样一个事实,即通过更多功能,您可以更轻松地控制和隐藏更新和升级。

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

于 2012-07-10T09:23:37.370 回答
1

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

使用您的浏览器,当您连接网站时,服务器会输出 html 或您的浏览器可以读取的任何其他内容。html 可以从 php 或 .net 等应用程序层生成。您的浏览器是客户端。

Web 应用程序(php / java /etc...)本身可以是另一个 Web 应用程序的客户端。想象一下,您的应用需要显示天气报告,以便将其提供给浏览器。

您在服务器上的应用程序将通过协议(rest/soap/xml-rpc/etc ...)连接另一个应用程序以从服务器应用程序推送或提取数据,服务器应用程序可以是任何 php java、dotnet、您的客户端应用程序不在乎,因为他们通过定义的协议进行交谈。

因此,Web 服务允许客户端和服务器一起交谈。

并且没有 webservice vs client server ,因为 webservices 都是关于客户端/服务器通信的。

编辑:我真的不知道您引用的文字在说什么……请提供该文字的来源。

于 2012-04-14T08:25:37.080 回答