WebService介绍及C/C++访问
一.什么是WebService?
Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作。它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换的数据。一组以这种方式交互的 Web 服务在面向服务的体系结构(Service-Oriented Architecture,SOA)中定义了特殊的 Web 服务应用程序。
一句话概括就是:Webservice使一种跨编程语言和跨操作系统平台的远程调用技术。
还可以从多角度来理解WebService,从表面看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
二.WebService平台技术三要素
SOAP,WSDL,UDDI三者构成了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也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻: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的代理类代码。
- 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版的Axis,Axis 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、编码实现客户端
- gSoap
 
gSoap是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。gSoap的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构,反之亦然。
gSoap提供了两个常用工具:wsdl2h和soapcpp2。这两个工具主要用来根据wsdl文件生成开发过程使用的C/C++文件。
附件中的demo就是用这种方法实现的。附demo参考网址:
https://blog.csdn.net/sunnylion1982/article/details/47186481
WebService介绍及C/C++访问的更多相关文章
- 下面我会介绍几种轻轻松松访问Google的方法
		
好人一生平安的大招 Google在大陆已经封了差不多有20天 访问是极其的困难 下面我会介绍几种轻轻松松访问Google的方法 首先 你需要个可靠的hosts 比如 https://git.os ...
 - So easy Webservice 2.WebService介绍
		
WebService概念介绍: Web Service是一项新技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实 ...
 - Android开发之WebService介绍
		
经常有网友问:“在Android平台如何调用WebService”?经过沟通我发现,甚至有些朋友连什么是WebSerivce都不知道就在问怎么使用,更别说和WebService有关的SOAP.WSDL ...
 - Webservice介绍
		
一. Socket和Http通信协议介绍 1. Socket协议简单介绍 Socket位于传输层,它是对Tcp/ip协议的实现,包含TCP/UDP,它是所有通信协议的基础,如下为Socket通 ...
 - 关于搭建webservice以及无法通过URL访问的简易解决办法
		
之前工作天天在用webservice,但是从没有自己独立的搭建一个全新的项目,今天好不容易自己搭了一个webservice,报错不少,记录下来免得以后又忘了. 一.搭建webservice需要做的几点 ...
 - java webservice 总结(学会读别人的webservice并且通过代理模式访问)
		
公司做的系统之间的交互用到了webservice做交互,现在对webservice做一个总结. 1.配置已有的webservice webservice主要包括 xml/json:作为传输数据的格式 ...
 - 接口测试之webservice介绍
		
转自http://www.cnblogs.com/liu-ke/p/5008064.html 什么是Webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web ...
 - IIS 发布webservice 需要用户名和密码访问 解决
		
今天,我在IIS上发布了一个自己写的webservice,然后我在远程通过浏览器来访问这个webservice的时候出现一个登录界面如下 之前我朋友发布webservice的时候也出现过一次,那次好 ...
 - webservice 介绍
		
Web service 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术. l 采用标准SOAP(Simple Object Access Protocol) 协议 ...
 
随机推荐
- ios开源
			
a http://code.cocoachina.com b http://code4app.com c http://www.oschina.net/ios/codingList/ d github ...
 - 会话技术之Cookie
			
在无状态的客户端(未登录)下,张三想买手机然后把手机加入购物车,服务器发出添加成功的响应,然后把手机加入ServletContext域里,然后张三想在逛逛别的, 再无状态的客户端(未登录)下,李四想买 ...
 - java篇 之 数组
			
数组:本身也是对象元素数据类型必须一致,初始值为各种零(跟类型一致),数组中存放 的是对象的引用(地址),对象在其它空间,一旦创建长度不可变,length可以直 接访问 (new的时候才分配空间,创建 ...
 - php substr的一些用法
			
//去掉最后一个字符$str = "1,2,3,4,5,6,"; $newstr = substr($str,0,strlen($str)-1); echo $newstr; ub ...
 - 【C语言】计算N名同学的某门功课的平均成绩
			
分析: 循环输入number只童鞋的成绩,累加为sum,最后输出sum/number即可! 代码: #include<stdio.h> int main() { , score;//sco ...
 - mac机器smb映射
			
1 finder中打开前往 2 输入:smb://10.216.90.* 链接 3 输入 账户和密码(名称和密码是你机器的smb密码:比如123***)
 - windows 下安装chrome 调试iphone插件 ios-webkit-debug-proxy
			
必备: 1. .NET Framework 4.5 及以上版本 2.powershell 5.1及以上版本 3.可正常访问 https://raw.githubusercontent.com/luk ...
 - mysql5.7修改root密码
			
use mysql; update mysql.user set authentication_string=password('123456') where user='root'; flush p ...
 - Springboot学习:SpringMVC自动配置
			
Spring MVC auto-configuration Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:==(WebMvcAuto ...
 - uWSGI配置参数释义
			
uWSGI配置参数释义 socket : 地址和端口号,例如:socket = 127.0.0.1:50000 processes : 开启的进程数量 workers : 开启的进程数量,等同于pro ...