什么是Web服务端点?
假设我的Web服务位于http://localhost:8080/foo/mywebservice
而我的WSDL位于http://localhost:8080/foo/mywebservice?wsdl
。
http://localhost:8080/foo/mywebservice
是一个端点,也就是说,它与我的Web服务的URI相同,还是SOAP消息接收和解组的位置?
你能向我解释这是什么,它的目的是什么?
这是一个更短,希望更清晰的答案…是的,端点是您的服务可以由客户端应用程序访问的URL。 相同的Web服务可以有多个端点,例如为了使它们可以使用不同的协议。
来自Peter的更新回答在评论中:
这是de“旧术语”,直接使用WSDL2 “概要”定义 (WSDL2翻译“端口”到“端点”)。
也许你会在这个文件中find答案: http : //www.w3.org/TR/wsdl.html
WSDL文档将服务定义为networking端点或端口的集合。 在WSDL中,端点和消息的抽象定义与具体的networking部署或数据格式绑定是分开的。 这允许抽象定义的重用:消息(其是被交换的数据的抽象描述)以及作为操作的抽象集合的端口types。 具体端口types的具体协议和数据格式规范构成了可重用的绑定。 通过将networking地址与可重用的绑定相关联来定义端口,并且一组端口定义服务。 因此,WSDL文档在networking服务的定义中使用以下元素:
- types – 使用某种types系统(如XSD)的数据types定义的容器。
- 消息 – 正在传递的数据的抽象types定义。
- 操作 – 服务支持的操作的抽象描述。
- 端口types – 由一个或多个端点支持的一组抽象操作。
- 绑定 – 特定端口types的具体协议和数据格式规范。
- 端口 – 单个端点定义为绑定和networking地址的组合。
- 服务 – 一组相关的端点。
http://www.ehow.com/info_12212371_definition-service-endpoint.html
端点是HTML文件或活动服务器页面的连接点。 端点提供了解决Web服务端点所需的信息。 端点提供了一个参考或规范,用于定义一组或一系列消息寻址属性,并提供端到端的消息特征,例如端点的源和目标的引用,以及允许统一的消息的标识处理“独立”的信息。 端点可以是PC,PDA或销售点terminal。
Web服务端点是另一个程序用来与您的程序进行通信的URL。 要查看WSDL,请将?wsdl
添加到Web服务端点URL。
Web服务用于程序到程序的交互,而Web页面用于程序到人的交互。
所以:Endpoint是: http://www.blah.com/myproject/webservice/webmethod
: http://www.blah.com/myproject/webservice/webmethod
因此,WSDL是: http://www.blah.com/myproject/webservice/webmethod?wsdl
: http://www.blah.com/myproject/webservice/webmethod?wsdl
为了进一步扩展WSDL的元素,我总是发现将它们与代码进行比较是有帮助的:
WSDL有2个部分(物理和抽象)。
物理部分:
定义 – variables – 例如:myVar,x,y等
types – 数据types – 例如:int,double,String,myObjectType
操作 – 方法/函数 – 例如:myMethod(),myFunction()等
消息 – 方法/函数input参数和返回types
- 例如:public myObjectType myMethod( String myVar)
Porttypes – 类(即它们是一个操作容器) – 例如:MyClass {}等
抽象部分:
绑定 – 这些连接到porttypes并定义select的协议与这个web服务进行通信。 – 协议是一种沟通forms(所以文本/短信,手机与电子邮件等)。
服务 – 列出另一个程序可以find您的Web服务(即您的端点 )的地址。
在我过去的项目中,端点是一个相对属性。 也就是说它可能被附加到,但它总是包含protocol://host:port/partOfThePath
。
如果被调用的服务具有dynamic部分,例如?param=dynamicValue
,那么该部分将被添加到端点。 但是很多时候,端点可以按原样使用而不必修改。
需要了解的重点是端点不是什么以及如何提供帮助。 例如,传递存储在端点中的信息的另一种方法是将端点的不同部分存储在不同的属性中。 例如:
hostForServiceA=someIp portForServiceA=8080 pathForServiceA=/some/service/path hostForServiceB=someIp portForServiceB=8080 pathForServiceB=/some/service/path
或者如果相同的主机和端口跨多个服务:
host=someIp port=8080 pathForServiceA=/some/service/path pathForServiceB=/some/service/path
在这些情况下,完整的URL需要在您的代码中构build,如下所示:
String url = "http://" + host + ":" + port + pathForServiceA + "?" + dynamicParam + "=" + dynamicValue;
在合同中,这可以作为端点存储
serviceAEndpoint=http://host:port/some/service/path?dynamicParam=
而且很多时候,我们将端点存储到“=”处。 这导致这样的代码:
String url = serviceAEndpoint + dynamicValue;
希望能够stream露出一些光芒。