WebService介绍及C/C++访问

一.什么是WebService

Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作。它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换的数据。一组以这种方式交互的 Web 服务在面向服务的体系结构(Service-Oriented ArchitectureSOA)中定义了特殊的 Web 服务应用程序。

一句话概括就是:Webservice使一种跨编程语言和跨操作系统平台的远程调用技术。

还可以从多角度来理解WebService,从表面看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

二.WebService平台技术三要素

SOAPWSDLUDDI三者构成了WebService的三要素。

1.SOAP(Simple Object Access Protocol)简单对象访问协议:

WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service

SOAP协议组成:

SOAP协议 = HTTP协议 + XML数据格式

SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XMLXSD的,XMLSOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。

2.WSDL(Web Services Description Language) Web服务描述语言:

好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。

WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。

  1. UDDI (Universal Description, Discovery, and Integration)

主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

三.如何用C/C++实现WebService

WebService可以使用各种语言开发web服务,但主要以Java.NET为主,用C/C++开发web服务的工具不多,主要有Axis C++gSoap

1.Axis C++:相比于Java版的AxisAxis C++在安装配置和开发部署新的Web服务都比较复杂,开发时要关注每一个细节,因为Axis C++本身并没有详细的日志信息,当出现错误的时候很难跟踪哪个环节出了问题。另外,Axis C++WSDL信息的内容要求非常严格,而且往往找不到问题所在。

至于Axis C++的安装配置,请参考其官方文档。

   使用Axis C++开发Web服务的基本过程可以简单描述如下:

   1、使用Java语言描述WEB服务

   2、使用Java2WSDL工具生成WSDL文件

   3、使用WSDL2Ws工具生成服务端代码框架

   4、编码实现service,并部署服务

   5、使用WSDL2Ws工具生成客户端代码框架

   6、编码实现客户端

  1. gSoap

gSoap是一个绑定SOAP/XMLC/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。gSoap的编译器能够自动的将用户定义的本地化的CC++数据类型转变为符合XML语法的数据结构,反之亦然。

gSoap提供了两个常用工具:wsdl2hsoapcpp2。这两个工具主要用来根据wsdl文件生成开发过程使用的C/C++文件。

附件中的demo就是用这种方法实现的。附demo参考网址:

https://blog.csdn.net/sunnylion1982/article/details/47186481

猜你喜欢

转载自www.cnblogs.com/wjcoding/p/10919879.html