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

时间:2012-04-14 08:14:30

标签: web-services client-server

假设我是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.

声明摘自以下链接:

2 个答案:

答案 0 :(得分:8)

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


  

1。我为什么要实施Web服务而不是标准的客户端/服务器协议


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

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

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

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

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

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

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

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

  • 开销。用XML传输所有数据显然不如使用a 专有二进制代码。你在便携性方面获胜,效率会下降。即便如此,这一点 对于大多数应用程序来说,开销通常是可以接受的,但您可能永远都找不 使用Web服务的关键实时应用程序。

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

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


  

2。以下陈述是否正确,请您向我解释一下?


  

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

TRUE

如上所述:

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

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

  

2)如果您的应用程序需要在可以通过公共访问数据的计算机上运行   网络(互联网)然后你应该去网络   服务,因为传统的客户端/服务器模型不是   由于不想公开公开您的服务器而被接受。网络   您公开公开的服务可能是安全的(HTTPS),要求   某种身份验证,只暴露您想要公开的内容,   与揭露整个数据库

TRUE

使用Web服务,您公开向外部公开的唯一内容是标准Web服务器(客户端可以向其发送HTTP请求)。所有宝贵的数据和方法都被保护为无法访问。

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

  

3)使用远程处理的一个更好的理由是它提供了很大的优势   性能提升。但其中一个下跌是它是一个   编程比Web服务更复杂。

TRUE

Remoting允许您构建更多功能的服务,并避免传递大量XML数据,从而提高性能。

  

4)正确使用网络服务实际上是基于您的"遥控器   连接"需要。如果你的应用程序将在一个   受控环境,例如LAN / WAN,您可以在其中查看服务器   通过私有或安全(VPN)网络,然后你可以建立一个   传统的客户端/服务器应用程序

TRUE

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

Web服务更适用于松散耦合的系统,在实际调用Web服务之前,客户端可能没有Web服务的先验知识。高度耦合系统是Intranet应用程序的理想选择,但在Internet规模上表现不佳。但是,Web服务更适合满足Internet应用程序的需求。

  

5)网络服务:

     

虽然服务输出没有重大差异   这些模型,Web服务的移动性和可访问性绝对是一个   优于标准C / S范例。但是,缺乏很多   个性化确实是针对基于Web服务器的模型。

     

客户端服务器:

     

客户端服务器增加的安全性绝对是一个升级,它也是   如果有的话,可以选择控制更新和升级。   但最初,客户端服务器可能会有更高的前端   成本。

<强> TRUE

本声明的第一部分提到了这样一个事实,即Web服务更加平台和语言无关,因此更易于访问,但正如所说的那样,通用性更低。

第二部分指出,通过更多功能,您可以更轻松地控制和隐藏更新和升级。

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

答案 1 :(得分:1)

webservices是客户端/服务器&#34; apps&#34;。

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

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

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

所以web服务允许客户端和服务器一起通话。

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

编辑:我真的不知道你引用的文字在说什么......请给出该文字的来源。