2024年Web前端最全WebService(1)—WebService的相关概念(WSDL、SOAP、SEI、CXF(1),字节跳动已经四面还见了hr

最后

小编的一位同事在校期间连续三年参加ACM-ICPC竞赛。从参赛开始,原计划每天刷一道算法题,实际上每天有时候不止一题,一年最终完成了 600+:

凭借三年刷题经验,他在校招中很快拿到了各大公司的offer。

入职前,他把他的刷题经验总结成1121页PDF书籍,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。

整本书,我仔细看了一遍,作者非常细心地将常见核心算法题和汇总题拆分为4个章节。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

而对于有时间的同学,作者还给出了他结合众多数据结构算法书籍,挑选出的一千多道题的解题思路和方法,以供有需要的同学慢慢研究。


  1. 同一家公司的新旧应用之间

  2. 不同公司的应用之间

  3. 一些提供数据的内容聚合应用:天气预报、股票行情

四、Web Service中的几个重要术语


4.1、WSDL(web service definition language)

WSDL是用来描述WebService的,它用XML的格式描述了WebService有哪些方法、参数类型、访问路径等等。我们要使用一个WebService肯定首先要获取它的WSDL,在VS中添加一个Web 引用时,这些工作由开发环境帮我们做了,开发环境根据WSDL文档给Web Service生成了相应的代理类供我们使用。

下面是一个HelloWorld的WebService的服务端代码:

[java] view plain copy

  1. public class Service : System.Web.Services.WebService

  2. {

  3. public Service () {

  4. //Uncomment the following line if using designed components

  5. //InitializeComponent();

  6. }

  7. [WebMethod]

  8. public DateTime HelloWorld(int i)

  9. {

  10. return DateTime.Now;

  11. }

  12. }

其对应的WebService的WSDL文档如下:

[html] view plain copy

  1. <?xml version\="1.0" encoding\="utf-8"?>

  2. wsdl:definitions xmlns:soap\=“http://schemas.xmlsoap.org/wsdl/soap/” xmlns:tm\=“http://microsoft.com/wsdl/mime/textMatching/” xmlns:soapenc\=“http://schemas.xmlsoap.org/soap/encoding/” xmlns:mime\=“http://schemas.xmlsoap.org/wsdl/mime/” xmlns:tns\=“http://tempuri.org/” xmlns:s\=“http://www.w3.org/2001/XMLSchema” xmlns:soap12\=“http://schemas.xmlsoap.org/wsdl/soap12/” xmlns:http\=“http://schemas.xmlsoap.org/wsdl/http/” targetNamespace\=“http://tempuri.org/” xmlns:wsdl\=“http://schemas.xmlsoap.org/wsdl/”\

  3. wsdl:types\

  4. <s:schema elementFormDefault=“qualified” targetNamespace=“http://tempuri.org/”>

  5. <s:element name=“HelloWorld”>

  6. <s:complexType>

  7. <s:sequence>

  8. <s:element minOccurs=“1” maxOccurs=“1” name=“i” type=“s:int” />

  9. </s:sequence>

  10. </s:complexType>

  11. </s:element>

  12. <s:element name=“HelloWorldResponse”>

  13. <s:complexType>

  14. <s:sequence>

  15. <s:element minOccurs=“1” maxOccurs=“1” name=“HelloWorldResult” type=“s:dateTime” />

  16. </s:sequence>

  17. </s:complexType>

  18. </s:element>

  19. </s:schema>

  20. </wsdl:types>

  21. wsdl:message name\=“HelloWorldSoapIn”\

  22. wsdl:part name\=“parameters” element\=“tns:HelloWorld” /

  23. </wsdl:message>

  24. wsdl:message name\=“HelloWorldSoapOut”\

  25. wsdl:part name\=“parameters” element\=“tns:HelloWorldResponse” /

  26. </wsdl:message>

  27. wsdl:portType name\=“ServiceSoap”\

  28. wsdl:operation name\=“HelloWorld”\

  29. wsdl:input message\=“tns:HelloWorldSoapIn” /

  30. wsdl:output message\=“tns:HelloWorldSoapOut” /

  31. </wsdl:operation>

  32. </wsdl:portType>

  33. wsdl:binding name\=“ServiceSoap” type\=“tns:ServiceSoap”\

  34. soap:binding transport\=“http://schemas.xmlsoap.org/soap/http” /

  35. wsdl:operation name\=“HelloWorld”\

  36. soap:operation soapAction\=“http://tempuri.org/HelloWorld” style\=“document” /

  37. wsdl:input\

  38. soap:body use\=“literal” /

  39. </wsdl:input>

  40. wsdl:output\

  41. soap:body use\=“literal” /

  42. </wsdl:output>

  43. </wsdl:operation>

  44. </wsdl:binding>

  45. wsdl:binding name\=“ServiceSoap12” type\=“tns:ServiceSoap”\

  46. soap12:binding transport\=“http://schemas.xmlsoap.org/soap/http” /

  47. wsdl:operation name\=“HelloWorld”\

  48. soap12:operation soapAction\=“http://tempuri.org/HelloWorld” style\=“document” /

  49. wsdl:input\

  50. soap12:body use\=“literal” /

  51. </wsdl:input>

  52. wsdl:output\

  53. soap12:body use\=“literal” /

  54. </wsdl:output>

  55. </wsdl:operation>

  56. </wsdl:binding>

  57. wsdl:service name\=“Service”\

  58. wsdl:port name\=“ServiceSoap” binding\=“tns:ServiceSoap”\

  59. soap:address location\=“http://localhost:2206/WebSite1/Service.asmx” /

  60. </wsdl:port>

  61. wsdl:port name\=“ServiceSoap12” binding\=“tns:ServiceSoap12”\

  62. soap12:address location\=“http://localhost:2206/WebSite1/Service.asmx” /

  63. </wsdl:port>

  64. </wsdl:service>

  65. </wsdl:definitions>

一个WSDL文档由四部分组成:

1、types

指定了WebService用到的所有数据类型,上面用到了两种数据类型,int和datetime

2、message

指明一个操作所用到的数据类型。

HelloWorldSoapIn是指HelloWorld的输入操作用到的数据类型,HelloWorldSoapOut是指HelloWorld的输出操作用到的数据类型。二者的element元素指出了与types中对应到的具体类型。

3、portType

指出了这个WebService所有支持的操作,就是说有哪些方法可供调用。

这里支持一个HelloWorld调用,它的输入和输出对应到HelloWorldSoapIn和HelloWorldSoapOut这个两个数据类型。

4、binding

soap12:binding元素的transport指明传输协议,这里是http协议。

operation 指明要暴露给外界调用的操作。

use属性指定输入输出的编码方式,这里没有指定编码。

5、services

指定服务的一些信息,主要是指定服务的访问路径。

4.2、SOAP(simple object  access protocal)

如果我们要调用远程对象的方法,就必定要告诉对方,我们要调用的是一个什么方法,以及这个方法的参数的值等等。然后对方把数据返回给我们。

这其中就涉及到两个问题:1、数据如何在网络上传输。2、如何表示数据?用什么格式去表示函数以及它的参数等等。

1、SOAP的传输协议

SOAP的传输协议使用的就是HTTP协议。只不过HTTP传输的内容是HTML文本,而SOAP协议传输的是SOAP的数据。看一下下面的例子:

这是一个HTTP请求(请求google的首页)的内容:

[html] view plain copy

  1. GET / HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

  2. Accept-Language: en-us

  3. User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA) chromeframe/4.0

  4. Accept-Encoding: gzip, deflate

  5. Connection: Keep-Alive

  6. Host: www.google.com

  7. Cookie: PREF=ID=d8f9f1710bfa5f72:U=a5b3bec86b6433ef:NW=1:TM=1260238598:LM=1260241971:GM=1:S=q2agYsw3BsoOQMAs; NID=29=JgIGDDUx70IQTBVAnNEP_E9PLLKBI9STjzaBjgq1eWuDg-_jCgFpka59DrOC0aZKLbj4q77HU1VMKscXTP3OaseyTbv643c2XPe9dS7lsXDHAkAnS46vy-OU8XRqbmxJ; rememberme=true; SID=DQAAAH4AAABW7M4nVkTeOR7eJUmC1AJ4R6hYbmVewuy_uItLUTzZMUTpojdaHUExhPa_EPAkO9Ex1u3r7aPXZ5cj28xHnv2DbfRYf5AyaBcimciuOTITKSIkqn3QSpGDFkRS1Xn7EGzDpCV0V1xFlCu0erf_jfe_D6GOgC2P2S08jNdFS9Vpmw; HSID=AFEFTMA68EgNjkbil; __utmx=173272373.; __utmxx=173272373.

  8. ---------如果有Post的数据,这里还会有Post的数据--------

这个是一个SOAP请求的内容:

[html] view plain copy

  1. POST /WebServices/WeatherWebService.asmx HTTP/1.1

  2. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3603)

  3. Content-Type: text/xml; charset=utf-8

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用JAX-WS API为CXF Web服务设置SOAP操作的值。 在CXF中,您可以使用javax.jws.soap.SOAPBinding注释来指定SOAP操作的值。例如: ```java @WebService @SOAPBinding(style = Style.DOCUMENT, use=Use.LITERAL, parameterStyle=ParameterStyle.WRAPPED) public interface MyService { @WebMethod(operationName="MyOperation") @WebResult(name="MyResult") public String myMethod(@WebParam(name="MyParam") String param); } ``` 在这个例子中,我们为MyService接口的myMethod方法设置了SOAP操作的名称为"MyOperation",并且为返回值设置了SOAP元素的名称"MyResult"。我们还为方法参数设置了SOAP元素的名称"MyParam"。 如果您想要更直接地控制SOAP操作的值,您可以使用javax.xml.ws.soap.SOAPBinding类的soapAction属性。例如: ```java @WebService @SOAPBinding(style = Style.DOCUMENT, use=Use.LITERAL, parameterStyle=ParameterStyle.WRAPPED, soapAction="urn:myMethod") public interface MyService { @WebMethod(operationName="MyOperation") @WebResult(name="MyResult") public String myMethod(@WebParam(name="MyParam") String param); } ``` 在这个例子中,我们为MyService接口设置了SOAP操作的值为"urn:myMethod"。这个值将出现在生成的WSDL文件中,用于指定SOAP操作的名称。 当您使用CXF来发布Web服务时,您可以使用CXF的配置文件来设置SOAP操作的值。例如,在您的CXF配置文件中,您可以添加以下配置: ```xml <jaxws:endpoint xmlns:tns="http://example.com/myservice" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" name="MyServicePort" implementor="com.example.MyServiceImpl" wsdlLocation="classpath:/META-INF/wsdl/MyService.wsdl" serviceName="tns:MyService" endpointName="tns:MyServicePort" > <jaxws:properties> <entry key="soapAction" value="urn:myMethod"/> </jaxws:properties> </jaxws:endpoint> ``` 在这个例子中,我们将SOAP操作的值设置为"urn:myMethod",并将其作为JAX-WS属性传递给CXFCXF将在生成的WSDL文件中使用这个值来指定SOAP操作的名称。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值