zoukankan      html  css  js  c++  java
  • WebService原理

    WebService原理

    WebService是一种跨编程语言和跨操作系统平台的远程调用技术

    所谓远程调用,就是一台计算机a上的一个程序能够调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统(採用交互提问的方式来加深大家对此技术的理解)。

    远程调用技术有什么用呢?商场的POS机转账调用的转账方法的代码是在银行server上,还是在商场的pos机上呢?

    什么情况下可能用到远程调用技术呢?比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方站点和程序能够调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。

    所谓跨编程语言和跨操作平台,就是说服务端程序採用java编写,client程序则能够採用其它编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和client程序能够在不同的操作系统上执行。

    除了WebService外,常见的远程调用技术还有RMI(Remote method invoke)和CORBA,因为WebService的跨平台和跨编程语言特点,因此比其它两种技术应用更为广泛,但性能略低。

    WebService使用SOAP协议实现跨编程语言和跨操作系统平台

    WebService採用HTTP协议数据传输,採用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的參数是什么,以及服务对象的返回结果是什么)。WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都採用XML格式封装,并添加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议(simple object access protocol,简单对象訪问协议) 。

    SOAP协议= HTTP协议+ XML数据格式

    SOAP协议是基于HTTP协议的,两者的关系就好比快速公路是基于普通公路改造的,在一条公路上加上隔离栏后就成了快速公路。

    商店的服务员仅仅要收到了钱就给客户提供货物,商店服务员不用关心客户是什么性质的人,客户也不用关心商店服务员是什么性质的人。相同,WebServiceclient仅仅要能使用HTTP协议把遵循某种格式的XML请求数据发送给WebServiceserver,WebServiceserver再通过HTTP协议返回遵循某种格式的XML结果数据就能够了,WebServiceclient与server端不用关心对方使用的是什么编程语言。

    HTTP协议和XML是被广泛使用的通用技术,各种编程语言对HTTP协议和XML这两种技术都提供了非常好的支持,WebServiceclient与server端使用什么编程语言都能够完毕SOAP的功能,所以,WebService非常easy实现跨编程语言,跨编程语言自然也就跨了操作系统平台

     

     

    WSDL文件

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

     WSDL(webservicedescription language)是基于XML格式的,它是WebServiceclient和server端都能理解的标准格式,当中描写叙述的信息能够分为what,where,how等部分!

     WSDL文件保存在Webserver上,通过一个url地址就能够訪问到它。client要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商能够通过两种方式来暴露它的WSDL文件地址:

    1.注冊到UDDIserver,以便被人查找

    2.直接告诉给client调用者,比如,在自己站点给出信息或邮件告诉。

     

    说明:

     我们寻常写的程序都是在同一个程序中调用其他对象的方法,而webservice是如何实现调用其他计算机中的对象的方法的呢?

    其基本原理是在client程序的本地有一个代理对象,这个代理对象和远程对象具有同样的方法声明,这个代理程序不用我们自己编写,工具能够帮我们生成。client程序调用本地代理对象的方法时,代理对象会通过某种网络传送技术去联系远程的程序,远程程序再调用代理对象请求的对应本地对象的方法,然后将方法运行的结果返回给client代理程序。远程调用技术就是要解决client怎样将请求信息传送给远程的程序,远程的程序怎样将结果回应给client,而且事实上现技术对开发者来说是透明的,即不须要开发者自己的考虑和实现这些细节。

    1.WSDL(网络服务描写叙述语言,WebServices Description Language)是一门基于 XML 的语言,用于描写叙述 Web Services 以及怎样对它们进行訪问。

    2.UDDI 是一种文件夹服务,企业能够使用它对 Web services 进行注冊和搜索。

    UDDI,英文为"Universal Description, Discovery and Integration",可译为“通用描写叙述、发现与集成服务”。

  • 相关阅读:
    lombok @Builder注解使用的例子、反编译之后的代码详解
    InfluxDB时序数据库应用场景
    阿里巴巴为什么不用 ZooKeeper 做服务发现?
    使用RestTemplate调用接口上传文件
    当try-catch-finally代码块遇上return,代码执行流程是怎样
    Spring Boot 中application.yml与bootstrap.yml的区别
    Java文件上传:Restful接口接收上传文件,缓存在本地
    线程执行synchronized同步代码块时再次重入该锁过程中抛异常,是否会释放锁
    AMQP协议详解与RabbitMQ,MQ消息队列的应用场景,如何避免消息丢失等消息队列常见问题
    数据库:内联接,外联接,空值和联接
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3799047.html
Copyright © 2011-2022 走看看