Onvif协议1:gSOAP是什么

Onvif协议1:gSOAP是什么本文介绍了 gSOAP 工具 一种基于编译器技术的 C C SOAP 和 XML 数据绑定工具 它简化了 WebServices 开发过程 包括 WSDL 文档的使用和 gSOAP 编译原理

大家好,欢迎来到IT知识分享网。

目录

1.简介

2. Web Services

2.1 Web Services常用的几种框架

3. SOAP简介

3.1如此理解SOAP

4. WSDL文档

5. gsoap编译

5.1 gSOAP工具转换原理


1.简介

gSOAP工具基于编译器技术为C/C++提供自动的SOAP和XML数据绑定。该工具使用自动生成代码以及先进的映射方法,简化了基于C/C++的SOAP/XML Web service和XML应用程序的开发。

gSOAP使用编译器技术为用户隐藏了WSDL、SOAP、特定XML的实现细节,同时自动提供XML有效性验证、内存管理和类型安全序列化,从而提供透明的解决方案。gSOAP工具可将原有的数据类型和用户自定义的数据类型映射成等价的XML数据类型,反之亦然。因此,通过一个简单的API得到了完美的SOAP互操作性,从而可使用用户从WSDL/SOAP/XML的细节中解脱出来,集中精力处理应用程序逻辑。

gSOAP工具支持传统的C/C++代码(以及留有C接口的其他编程语言)、嵌入式系统、那些和其他SOAP程序共享计算资源和信息的实时SOAP/XML应用程序之间的集成,可以跨平台,适用不同的语言环境和穿透防火墙。

gSOAP工具常常使用C/C++实现XML数据绑定。这意味着程序本地数据结构可被自动地用XML编码,而不需要额外去编写转换代码。该工具还为了XML数据绑定生成XML模式,所以外部程序可以基于该模式使用XML数据。 

下面分别介绍一下: soap, web service, wsdl

2. Web Services

Onvif协议1:gSOAP是什么

Web Services是一种远程调用(Remote Procedure Call,简称RPC),WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。

Web Services能够让各个系统之间的对接变得:快捷、方便、廉价。

为什么要使用Web Service?答案是,跨平台调用,跨语言调用,远程调用。

2.1 Web Services常用的几种框架

Onvif协议1:gSOAP是什么

实现Web Services常用的框架有:REST、SOAP、JavaScript、XML-PRC等。这些看不懂,没关系,大家知道一个事情即可:实现Web Services的方式有好几种,

我们的主角ONVIF标准中的Web Service采用的是SOAP方式,接下来我们来了解下SOAP

3. SOAP简介

在TCP/IP四层模型中展示SOAP

SOAP(Simple Object Access Protocol,简单对象访问协议),是TCP/IP协议体系中的一个应用层协议,它是在HTTP基础之上实现的。Onvif协议1:gSOAP是什么

3.1如此理解SOAP

Onvif协议1:gSOAP是什么Onvif协议1:gSOAP是什么

SOAP协议 = RPC机制 + HTTP传输协议 + XML数据格式

SOAP的两个主要设计目标是「简单性」和「可扩展性」,SOAP的设计正是围绕这两点展开的。

SOAP使用RPC机制,体现了「简单性」。让客户端调用Web Service的接口看起来像本地调用一样,确实很简单。

SOAP 使用 HTTP 传送 XML,体现了「可扩展性」。尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 成熟、稳定、又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。Onvif协议1:gSOAP是什么

4. WSDL文档

WSDL 指网络服务描述语言 (Web Services Description Language)WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。

WSDL 文档仅仅是一个简单的 XML 文档。它包含一系列描述某个 web service 的定义。注意:只有SOAP方式实现的Web Services才有WSDL文档,其他方式实现的Web Services并没有WSDL文档。

像动态库的.h文件一样。每个Web Services都有对应的WSDL文档。

Onvif协议1:gSOAP是什么

如果将WSDL语言转化成C语言,它看起来应该是这样子:

Onvif协议1:gSOAP是什么

再来看一例,获取海康球机的设备信息:WSDL定义和抓包显示

Onvif协议1:gSOAP是什么

报文显示:

Onvif协议1:gSOAP是什么

Onvif协议1:gSOAP是什么

我们可以看看完整的WSDL文档长什么样子的:

天气预报WEB服务的接口说明(WSDL文档)

手机号归属地查询WEB服务的接口说明(WSDL文档)

ONVIF标准的WEB服务的接口说明(WSDL文档)

5. gsoap编译

下载gsoap,本文gsoap_2.8.132.zip为例,ubuntu平台执行2步:configure, make.

The ./configure command takes the following configuration options:

  • –enable-samples also builds the examples
  • –enable-ipv6 builds the library with IPv6 support (with compiler option -DWITH_IPV6)
  • –enable-ipv6-v6only builds the library with IPv6 support without remapping IPv4 to IPv6 (with compiler option -DWITH_IPV6_V6ONLY)
  • –disable-ssl removes all dependences on OpenSSL, GNUTLS and WolfSSL from the tools and libraries
  • –enable-gnutls replaces the dependence on OpenSSL by GNUTLS (with compiler option -DWITH_GNUTLS)
  • –enable-wolfssl replaces the dependence on OpenSSL by WolfSSL (with compiler option -DWITH_WOLFSSL)
  • –enable-debug builds the software (with compiler option -DDEBUG) to produce audit logs (slow, not recommended for production)
  • –disable-namespaces removes global namespaces table linkage requirement (recommended for experts only)
  • –disable-c-locale removes the C locale and locale_t type that is internally used to override the local locale (the C locale is needed for proper use of decimal point in float values)
  • –enable-xlocale forces the inclusion of xlocale.h to define the locale_t type, which is useful if the build fails due to an undefined locale_t type
  • –with-openssl=DIR specifies the OpenSSL installation directory
  • –with-zlib=DIR specifies the Zlib installation directory

成功编译之后,生成2个工具,用于后续使用。

  • gsoap/bin/wsdl2h translator of WSDL/XSD to services and XML data bindings (interface tool)
  • gsoap/bin/soapcpp2 code generator for services and XML data bindings (implementation tool)

5.1 gSOAP工具转换原理

Onvif协议1:gSOAP是什么

gSOAP工具根据WSDL文档,自动生成C/C++语言的客户端/服务端框架代码。这其中有两个工具很重要,wsdl2h和soapcpp2。wsdl2h工具根据WSDL文成C/C++头文件,而soapcpp2工具则是根据该头文件生成C/C++的框架源码。

gSOAP工具可以在Windows、Linux和Macosx操作系统下运行,gSOAP工具包中自带有Windows和Macosx操作系统的wsdl2h和soapcpp2可执行文件,而Linux操作系统的,得自己编译。通过实验证实,用Windows和Linux工具生成的框架代码,是一样样的,没有区别。

gSOAP到底会自动生成哪些框架代码,下图中浅绿色框中的部分就是自动生成的代码。

Onvif协议1:gSOAP是什么

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114067.html

(0)
上一篇 2025-12-11 08:45
下一篇 2025-12-11 09:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信