系统之间通讯方式—SOAP(web service)
【web service 简介】
是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。web service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务。各应用程序通过网络协议和规定的一些标准数据格式(HTTP,XML,SOAP)来访问web servcie,通过web servcie内部执行得到所需结果。
web services ,可以将应用程序面向全世界发布,或提供某项功能,web services可以被其他应用程序使用。
【关键技术】
(1)xml:描述数据的标准方法,web servcies使用xml来编解码数据
xml提供了一种可用于不同的平台和编程语言之间的语言。
(2)soap:表述信息交换的协议,web services使用saop来传输数据
soap是一种用于访问web service的协议。
(3)WSDL:web服务描述语言
使用XML编写,用于描述web services、如何访问web services以及用于web services的消息格式和协议的细节语言。
(4)UDDI(Universal Description,Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于xml语言的用于在互联网上描述商务的协议。
用户存储有关web services的信息的目录,经由SOAP进行通讯。
【web service通信】
不管web service用什么工具,什么语言写出来的,只要你用soap协议通过http来调用它,总体结构都一致。
(1)用你喜欢的语言(如VB6或者VB.NET)来构建你的web services,然后用soap Toolkit或者.net的内建来把它暴漏给web客户。
注意:web service一般都是放在web服务器(如:IIS、tomcat)后面的。
(2)任何语言、任务平台上的客户都可以阅读其WSDL文件来调用webservice。
【web service调用过程】
(1)服务器端:生成服务描述文件,以供客户端获取(WSDL)。
(1)客户端:取得服务端得服务描述文件WSDL,解析该文件的内容,了解服务端得服务信息以及调用方式。根据需要,生成恰当的SOAP请求消息(指定调用的方法,已经调用的参数),客户端生成的soap请求会被嵌入在一个HTTP POST请求中,发送到web服务器端。(之后,开始等待服务端返回的SOAP回应消息,解析得到返回值。)
(2)web服务器端收到客户端的HTTP POST(SOAP)请求后,在将这些请求发给web service请求处理器。
(3)web service请求处理器解析收到的soap请求消息,解析其中的方法调用和参数格式。根据WSDL和WSML的描述,调用相应的COM对象来完成制定功能,并把返回值放入SOAP回应消息中,传给web服务器端。
(4)web服务器端得到soap应答后,会再通过HTTP应答的方式把它送回客户端。
【web service 调用实现】
1、高层接口
使用高层接口,不需要知道soap和xml的任何信息,就可以生成和使用一个webservice。soap Toolkit2.0通过提供两个com对象—soapClient和SoapServer,来完成这些功能。
在客户端,只要生成一个soapclient实例,并用WSDL作为参数来调用其中的mossoapinit方法。soapclient对象会自动解析WSDL文件,并在内部生成所有web service的方法和参数信息。之后,你就可以像调用IDispatch接口里的方法一样,调用里面所有的方法。在VB或是脚本语言中,你甚至可以直接在soapclient对象后面直接加上.方法(参数...)进行调用。
2、低层接口
要使用低层接口,你必须对soap和xml有所了解。你可以对soap的处理过程进行控制,特别是要做特殊处理的时候。
在客户端,首先要创建一个HTTPConnector队形,负责HTTP连接。设定connector的一些头部信息,比对EndPoinURL和SoapAction等。如果网络连接需要使用代理服务器,那页要在这里色设定相关的信息。接着创建SoapSerializer对象,用于生成soap消息。按照WSDL里定义,把所有参数按顺序序列化,得到一个完整的soap请求消息。该soap消息,作为payload通过Httpconnector被发送到服务器端。最后,生成一个soapreader对象,负责读取服务器端返回的soap消息,取得其中的返回值。
系统之间通讯方式—SOAP(web service)的更多相关文章
- 翻译-使用Spring调用SOAP Web Service
原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP ...
- 翻译-使用Spring WebService生成SOAP Web Service
原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...
- PHP soap Web Service 使用SoapDiscovery.class.php 生成wsdl文件
PHP soap web service 使用wsdl文件 demo: ============================================================== 服 ...
- SOAP web service用AFNetWorking实现请求
问: This is my current call to (asmx) SOAP web service: NSString *soapMessage = [NSString stringWithF ...
- REST和SOAP Web Service的区别比较
本文转载自他人的博客,ArcGIS Server 推出了 对 SOAP 和 REST两种接口(用接口类型也许并不准确)类型的支持,本文非常清晰的比较了SOAP和Rest的区别联系! ///////// ...
- Restful 架构方式的 web service
现在公司项目用的apache wink 搭建的web service ,感觉挺好用的.顺便学习一个这种架构方式 . 个人理解apache 实现Restful 架构方式技术有两种,如果有其他新的知识或不 ...
- K8S 容器之间通讯方式
概述 首先k8s里面容器是存在于pod里面的,所以容器之间通讯,一般分为三种类型: 1. pod内部容器之间 2. pod 与 pod 容器之间 3. pod 访问service服务 pod内部容器之 ...
- 容器之间通讯方式\与pod关系
1.概述 k8s里面容器是存在于pod里面的,所以容器之间通讯,一般分为三种类型:1. pod内部容器之间 2. pod 与 pod 容器之间 3. pod 访问service服务 (1) pod内部 ...
- jboss上的soap web service开发示例
以下示例,由jboss quickstart示例代码得来: 一.创建一个常规的dynamic web项目,建议支持maven ,项目的关键属性参考下图: 二.定义服务接口及参数对象 HelloWorl ...
随机推荐
- 中文latex参考文献格式
中文latex参考文献格式 原来英文: \begin{thebibliography}{1} \bibitem{Ben-Shimon2015RecSys} D.~Ben-Shimon, A.~Tsik ...
- 总结js(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作
http://hi.baidu.com/yashua839/blog/item/131fdb2fe547ef221f3089af.html一.Iframe 篇 //&&&&am ...
- freeswitch编译java esl
一.背景假设源代码路径为/home/freeswitch 二.编译安装libesl.a1. cd /home/freeswitch(源代码的根目录) 执行./configure,以便生成必要的Make ...
- java语言国际化--ResouceBundle、struts
一.Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...
- python pandas groupby
转自 : https://blog.csdn.net/Leonis_v/article/details/51832916 pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对 ...
- java调试打断点和不打断点执行结果不一致问题解决
java程序在调试的时候需要debug来跟踪一下结果,有一种情况是这样的,正常执行java程序就会出现问题,而断点debug跟踪此方法的时候却是正常的,不断测试结果都是这样,由此判断有可能是因为此方法 ...
- unity, EventType.MouseUp注意事项
如果鼠标移出了窗口范围,则即使鼠标抬起也不会收到EventType.MouseUp消息,所以只写 if(event==EventType.MouseUp){ 执行某操作 } 是错误的,会导致非常奇怪的 ...
- PCH简单介绍
https://wenku.baidu.com/view/3c9c5f190a4e767f5acfa1c7aa00b52acfc79cb0.html
- cocos2d-x发生undefined reference to `XX'异常 一劳永逸解决办法
cocos2d-x发生undefined reference to `XX'错误 一劳永逸解决方法 参考文章: http://blog.csdn.net/kafeidev/article/detail ...
- oracle ORA-12545:因目标主机或对象不存在
解决方法: 1.首先从最基本的入手,这里打开计算机右击,选择管理 2. 找到里面的服务和应用程序,打开服务 3.找到: OracleOraDb11g_home1TNSListener OracleSe ...