学习 WebService 第一步:体系结构、三元素SOAP/WSDL/UDDI
原文地址:爱军的博客——WebService简介
一、为什么需要Web Service
笔记:
WebService 可以实现 跨(硬件、服务器、开发工具、平台、应用程序、程序语言……)共享数据和应用,多么强大!
当你困扰于以下难题,WebService可以完美解决!
- 有没有一种办法可以实现跨应用程序和跨平台进行通信呢?
- 换句话说,就是有什么办法可以实现应用程序 A 可以和应用程序 B 进行通信呢?
- 换句话说,如何实现用不同的程序语言和不同厂商的软件开发工具开发的软件,那些已开发和部署的软件,能够实现分布式计算的目的?
- 或者说是,用 Java 写的应用程序和用 . Net 开发的应用程序之间进行通信呢?
- 或者说是,Windows Server 2008 服务器如何和UNIX 或者是 Linux 服务器进行连接呢?
WebServices 特点优势?
- 可以通过 Web 服务来公开一些接口给其他人(程序)使用。
- 可以将多个 WebServices 组合成为更为强大的 WebServices使用。
二、Web Service 体系结构
在 Web 服务的体系结构中,涉及到三个角色,一个是 Web 服务提供者,一个是 Web 服务中介者,还有一个就是 Web 服务请求者,同时还涉及到三类动作,即发布,查找,绑定。
- Web 服务提供者:可以发布 Web 服务,并且对使用自身服务的请求进行响应,Web 服务的拥有者,它会等待其他的服务或者是应用程序访问自己。
- Web 服务请求者:也就是 Web 服务功能的使用者,它通过服务注册中心也就是 Web 服务中介者查找到所需要的服务,再利用 SOAP 消息向 Web 服务提供者发送请求以获得服务。
- Web 服务中介者:也称为服务代理,用来注册已经发布的 Web 服务提供者,并对其进行分类,同时提供搜索服务,简单来说的话,Web 服务中介者的作用就是把一个 Web 服务请求者和合适的 Web 服务提供者联系在一起, 充当一个管理者的角色,一般是通过 UDDI 来实现。
- 发布:通过发布操作,可以使 Web 服务提供者向 Web 服务中介者注册自己的功能以及访问的接口。
- 发现(查找):使得 Web 服务请求者可以通过 Web 服务中介者来查找到特点的种类的 Web 服务。
- 绑定:这里就是实现让服务请求者能够使用服务提供者提供的服务了。
![]()
WebServices 三种基本元素之 SOAP、WSDL、UDDI
笔记:
SOAP
SOAP 其指导理念是“唯一一个没有发明任何新技术的技术”,通过 XML 来实现消息描述,然后再通过 HTTP 实现消息传输。
WSDL
Web服务描述语言,描述了 Web 服务的三个基本属性:
(1)服务所提供的操作
(2)如何访问服务
(3)服务位于何处(通过 URL 来确定就 OK 了)
UDDI
是一种目录服务,企业可以通过 UDDI 来注册和搜索 Web 服务。存放的是关于 Web 服务的信息。
UDDI 通过 SOAP 进行通讯。
三、开发 Web Service
(1)开发阶段:
实现一个 Web 服务,使这个 Web 服务能响应和接收 SOAP 消息,
(这个呢,其实可以通过 Visual Studio 来帮助实现),
定义好逻辑模块(这个 Web 服务总要干点事情吧),
然后再撰写 WSDL 文件(这个呢,开发工具会自动生成的,不需要人工撰写了)
(2)部署阶段:
指定 Web 服务的传输协议,将 Web 服务注册到相应服务描述部署文件(这些也是可以由工具来自动完成的)
(3)发布阶段:
将 Web 服务的接口和调用的地址公开给客户端调用,
常用的发布方式为基于 Web 提供的 WSDL 的链接,当然 UDDI 也是一个选择。
学习 WebService 第一步:体系结构、三元素SOAP/WSDL/UDDI的更多相关文章
- 学习Java第一步:安装Intellij IDEA和JDK
注:其实真正学习一门新语言的第一步并不是安装开发工具,我是C#转JAVA,有一点编程经验了,所以可以直接跳过前面几步,直接上IDE. 1.下载IntelliJ IDEA [官网] http://www ...
- webservice SOAP WSDL UDDI简介
WebServices简介 先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构, 既然说是一种架构的话,所以一般认为 SOA 是包含 ...
- WebService三大基本元素 SOAP WSDL UDDI
转自:https://blog.csdn.net/hhooong/article/details/51763128 1.SOAP 即 Simple Object AccessProtocol 也就是简 ...
- html5学习之第一步:认识标签,了解布局
图1. Acme United的网页的规划 Header区的例子包含了页面标题和副标题,< header>标签被用来创建页面的Header区的内容.除了网页本身之外,< header ...
- 学习opengl第一步
有两个地址一个是学习opengl基础知识的网站, 一个是博客园大牛分享的特别好的文章. 记录一下希望向坚持做俯卧撑一样坚持下去. 学习网站:http://learnopengl-cn.readthed ...
- Spring 开发第一步(三)Spring与JDBC
<spring in action 3rd>中的前面4章讲解的是Spring的核心,也就是DI/IOC和AOP .从第5章开始是Spring在企业开发中的各个方面的应用.其实作为笔者从事的 ...
- WebService SOAP WSDL UDDI 使用php的curl、PHP5的SoapClient实现同步
一.基本名词 WebService: WebService是一种跨编程语言和跨操作系统平台的远程调用技术.不同系统,不同语言的数据交换方法都是不同的,这就导致在不同系统,不同语言之间传递数据很麻烦,基 ...
- Qt 学习第一步 做计划和确定目标
接下来開始一步步深入学习Qt. 学习的第一步是整理资料,也就是找书和sample. 逛了一些论坛,推荐以下3本书 1> C++ GUI programming with Qt 4(2nd Edi ...
- Vue踩坑第一步,安装Vue最新版本
学习vue第一步肯定是安装vue-cli,那么肯定想去搜下如何安装vue-cli呢? 网上搜到的结果大都是: npm i vue-cli -g 输入vue -V发现: 输入node -v发现: 自己明 ...
随机推荐
- 【转】iOS-生成Bundle包-引入bundle-使用bundle
在我们使用第三方框架时,常常看到XXX.bundle的文件. 我们找到该文件,显示包内容,大致看到很多资源文件:图片.配置文本.XIB文件…… 什么是Bundle文件? 简单理解,就是资源文件包. ...
- 解除phpMyAdmin导入大型MySQL数据库文件大小限制
phpMyAdmin 导入大型数据库文件大小限制配置… 1. 修改 php.ini 文件中下列3项的值: upload_max_filesize, memory_limit 和 post_max_si ...
- 2018.3.27 Mac 配置Tomcat
先在官网上下载Tomcat .也可以用这个传送门. https://tomcat.apache.org/download-70.cgi 选择zip文件夹的下载就ok 下载完成之后将该文件夹.(如果是t ...
- TreeMap 底层是红黑树 排序是根据key值进行的 添加元素时异常 Comparable异常 Comparator比较自定义对象放在键的位置
package com.swift; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; ...
- Spring中c3p0连接池 jar包下载 c3p0-0.9.2.1 jar包和mchange-commons-java-0.2.3.4 jar 包
c3p0-0.9.2.1 jar包和mchange-commons-java-0.2.3.4 jar 包 下载地址: https://pan.baidu.com/s/1jHDiR7g 密码 tyek
- echarts事件中获取当前实例
直接使用this即可
- MATLAB编程技巧
[摘要] MATLAB是一种科学计算语言,和C.Fortran等高级语言相类似,能方便的实现程序控制.以下介绍一点matlab编程的技巧. 嵌套计算 程序执行的速度取决于调用的子程序的个数和算法实现. ...
- CentOS 7.4 基于LNMP搭建wordpress
之前有好多次搭建wordpress的经历,有在Ubuntu系统上,有在CentOS7.2系统上,但都是搭完还是稀里糊涂的,因为好多都是教程上照着敲的.这次好好出个教程,以便以后方便查看. 准备工作:C ...
- 06grep与find命令详解
1. grep 命令 grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为"grep [选项][文件]". grep 命令的参数及其作用如下: -b 将可执行文件(b ...
- Qt:实现子线程发送信号父线程切换图片
mainwindow.h中代码 #ifndef MAINWINDOW_H#define MAINWINDOW_H #include <QMainWindow>#include " ...