如果有人问你怎么用webservice 和底层原理,直接把这篇文章甩出去

版权声明:本文为博主原创文章,未经博主允许不得转载:https://blog.csdn.net/xiao_longhua/article/details/85391642


         研究背景:在开发工作中现在有些对外或系统内部的一些接口用到了webservice来给外部系统调用,最近工作中,作者也用到了这个webservice服务的接口,第一次听到webservice接口服务时在做.net(作者毕业第一年时,后面都是从事java开发的工作)。所以,webservice是一个与语言无关性。当时第一次用java语言以webservice形式来对接接口提供方还不是很熟,后面在网上找下相关资源才将接口打通。现在想想,其实webservice就是一个服务发现,服务查找,服务绑定和使用的三个模块。


          原理先行:webservice是用SOAP协议来传输的,实际上就是HTTP + XML,Http就是传输数据,而XML就是封装数据.SOAP协议是基于HTTP协议的,两者的关系就好比高速公路是基于普通公路改造的,在一条公路上加上隔离栏后就成了高速公路。商店的服务员只要收到了钱就给客户提供货物,商店服务员不用关心客户是什么性质的人,客户也不用关心商店服务员是什么性质的人。同样,WebService客户端只要能使用HTTP协议把遵循某种格式的XML请求数据发送给WebService服务器,WebService服务器再通过HTTP协议返回遵循某种格式的XML结果数据就可以了,WebService客户端与服务器端不用关心对方使用的是什么编程语言

       HTTP协议和XML是被广泛使用的通用技术,各种编程语言对HTTP协议和XML这两种技术都提供了很好的支持,WebService客户端与服务器端使用什么编程语言都可以完成SOAP的功能,所以,WebService的很容易实现跨编程语言,跨编程语言自然也就跨了操作系统平台。

WSDL文件

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

    WSDL(webservicedescription语言)是基于XML格式的,它是WebService客户端和服务器端都能理解的标准格式,其中描述的信息可以分为什么,在哪里,如何等部分!Ø

      WSDL文件保存在网络服务器上,通过一个URL地址就可以访问到它。客户端要调用一个WebService的服务之前,要知道该服务的WSDL文件的地址.WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:

1.注册到UDDI服务器,以便被人查找

2.直接告诉给客户端调用者,例如,在自己网站给出信息或邮件告诉。
 

     webservice是怎么发布服务,客户端是怎样来查找服务的呢?


一般用户都是在服务端发布一个服务到指定的url上面进行注册,而客户端就根据当前的url来查找对应的服务,来绑定服务。

从上图可以看出,SOA结构中共有三种角色:

(1)服务提供者:服务提供商,发布自己的服务,并且对使用自身服务的请求进行响应。

(2)服务经纪人:服务注册中心,注册已经发布的服务提供商,对其进行分类,并提供搜索服务,这是可搜索的服务描述注册中心,服务提供者在此发布他们的服务描述。在静态绑定开发或动态绑定执行期间,服务请求者查找服务并获得服务的绑定信息(在服务描述中)。对于静态绑定的服务请求者,服务注册中心是体系结构中的可选角色,因为服务提供者可以把描述直接发送给服务请求者。同样,服务请求者可以从服务注册中心以外的其它来源得到服务描述,例如本地文件,FTP站点,网站点,广告和服务发现(广告与发现) of Services,ADS)或发现Web服务(发现Web服务,DISCO)。

(3)服务请求者:服务请求者,利用服务经纪人查找所需的服务,然后使用该服务
 

干货主题:

首先服务提供方发布服务:

服务发布成功:

 客户端发现和调用服务接口:

方式有很多,推荐两种:

方式一:将wsdl解释文件解压到本地:

1.在工作空间创建用于存放使用的wsimport命令生成的客户端代码的Java的工程

2.利用jdk自带的wsimport生成命令

 3.刷新工程项目下的文件

4.编写客户端调用代码:

打印结果: 

方式二: 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值