Web服务

Web服务是一种服务导向架构的技术，通过标准的Web协议提供服务，目的是保证不同平台的应用服务可以互操作。
根据W3C的定义，Web服务（Web service）应当是一个软件系统，用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口（API）所组成的，它们透过网络，例如国际互联网（Internet）的远程服务器端，执行客户所提交服务的请求。
尽管W3C的定义涵盖诸多相异且无法介分的系统，不过通常我们指有关于主从式架构（Client-server）之间根据SOAP协议进行传递XML格式消息。无论定义还是实现，WEB服务过程中会由服务器提供一个机器可读的描述（通常基于WSDL）以辨识服务器所提供的WEB服务。另外，虽然WSDL不是SOAP服务端点的必要条件，但目前基于Java的主流WEB服务开发框架往往需要WSDL实现客户端的源代码生成。一些工业标准化组织，比如WS-I，就在WEB服务定义中强制包含SOAP和WSDL。

协议集

为提高WEB服务间的互操作能力，WS-I还特别发布了WEB服务协议集（Profile）。协议集包含了一系列特定版本的核心定义（诸如SOAP和WSDL），以及对其使用上的限制与约束。WS-I还发布了用于部署协议集兼容WEB服务的测试工具及相关用例。

使用WEB服务的方式

WEB服务实际上是一组工具，并有多种不同的方法调用之。三种最普遍的手段是：远程过程调用（RPC），服务导向架构（SOA）以及表述性状态转移（REST）。

远程过程调用

WEB服务提供一个分布式函数或方法接口供用户调用，这是一种比较传统的方式。通常，在WSDL中对RPC接口进行定义（类似于早期的XML-RPC）。
尽管最初的WEB服务广泛采用RPC方式部署，但针对其过于紧密之耦合性的批评声也随之不断。这是因为RPC式WEB服务实质上是利用一个简单的映射，以把用户请求直接转化成为一个特定语言编写的函数或方法。如今，多数服务提供商认定此种方式在未来将难有作为，在他们的推动下，WS-I基本协议集（WS-I Basic Profile）已不再支持远程过程调用。

服务导向架构

现在，业界比较关注的是遵从服务导向架构（Service-oriented architecture，SOA）概念来构筑WEB服务。在服务导向架构中，通讯由消息驱动，而不再是某个动作（方法调用）。这种WEB服务也被称作面向消息的服务。
SOA式WEB服务得到了大部分主要软件供应商以及业界专家的支持和肯定。作为与RPC方式的最大差别，SOA方式更加关注如何去连接服务而不是去特定某个实现的细节。WSDL定义了联络服务的必要内容。

表述性状态转移

表述性状态转移式（Representational state transfer，REST）WEB服务类似于HTTP或其他类似协议，它们把接口限定在一组广为人知的标准动作中（比如HTTP的GET、PUT、DELETE）以供调用。此类WEB服务关注与那些稳定的资源的互动，而不是消息或动作。
此种服务可以通过WSDL来描述SOAP消息内容，通过HTTP限定动作接口；或者完全在SOAP中对动作进行抽象。

批评

一些人抱怨，WEB服务（具象化状态转移式除外）过于复杂，认为它太过于偏重那些大型软件开发商，而不利于开源项目。但是至今不少开发工具已经具备自动化产生具象物件，已经减少web服务的调用难度。例如Microsoft visual studio、eclipse 等等IDE工具。使用者只需要专注于调用与实行。

WEB服务的性能也时常是人们关注的一个问题。由于使用XML作为消息格式，并以SOAP封装，由HTTP传输，WEB服务始终处于较高的开销状态。不过目前一些新兴技术正在试图解决此一问题，诸如新的XML处理模型致力于解决XML这一部分的性能。

类似方式

无论是在WEB服务出现以前，还是现在，一直不断有各种同类技术问世。比如，RMI作为这样一种中间件系统就得到了广泛部署。CORBA和DCOM则更加雄心壮志，两者都尝试将作用域波及到分布式对象，这一点也为WEB服务所模仿。
这些类似方式往往借助于XML-RPC和HTTP本身，而不依靠SOAP封装参数。