2012-03-21 140 views
245

假设我的网络服务位于http://localhost:8080/foo/mywebservice,而我的WSDL位于http://localhost:8080/foo/mywebservice?wsdl什么是Web服务端点?

http://localhost:8080/foo/mywebservice一个端点,即它是否与我的Web服务的URI相同,或者SOAP消息接收和解组的位置?

请问您能向我解释它是什么以及它的目的是什么?

回答

43

更新的答案,从彼得的评论:

这是德 “老术语”,使用directally的WSDL2 "endepoint" definition(WSDL2译 “港” 到 “终点”)。


也许您在本文档中找到答案:http://www.w3.org/TR/wsdl.html

WSDL文档将服务定义为网络端点或端口的集合。在WSDL中,端点和消息的抽象定义与其具体的网络部署或数据格式绑定分开。这允许重用抽象定义:消息(它是交换数据的抽象描述),以及作为抽象操作集合的端口类型。特定端口类型的具体协议和数据格式规范构成了可重用的绑定。通过将网络地址与可重用的绑定关联来定义端口,并且一组端口定义服务。因此,WSDL文档使用下列元素中的网络服务的定义:

  • 类型 - 用于使用某种类型的系统(诸如XSD)的数据类型定义的容器。
  • 消息 - 正在传递的数据的抽象类型定义。
  • 操作 - 服务支持的操作的抽象描述。
  • 端口类型 - 一个或多个端点支持的一组抽象操作。
  • 绑定 - 特定端口类型的具体协议和数据格式规范。
  • 端口 - 单个端点定义为绑定和网络地址的组合。
  • 服务 - 相关端点的集合。

http://www.ehow.com/info_12212371_definition-service-endpoint.html

端点是一个连接点,它的HTML文件或Active Server Page暴露。端点提供了解决Web服务端点所需的信息。端点提供了一个参考或规范,用于定义一组或一系列消息寻址属性,并提供端到端的消息特征,例如端点源和目标的引用以及允许统一的消息标识处理“独立”消息。终端可以是PC,PDA或销售点终端。

+58

“端点提供了解决Web服务端点所需的信息。”得爱这句话! :D – musaul 2013-10-10 08:44:53

+2

这是de“旧术语”,直接使用[WSDL2“概要”定义](http://www.w3.org/TR/wsdl20/#Endpoint)(WSDL2翻译“端口”到“端点”) 。 – 2014-07-31 12:01:45

331

这是一个更短,希望更清晰的答案... 是的,端点是您的服务可以由客户端应用程序访问的URL。相同的Web服务可以有多个端点,例如为了使用不同的协议使其可用。

+31

+1更简单的答案! – 2014-02-10 20:31:06

+0

那么我的网站上的每个页面都是另一个端点?如果我有myweb.com和myweb.com/pageOne是这两个终点? – user137717 2014-11-27 04:41:57

+6

@ user137717不,网站不是网络服务。 Web服务主要由应用程序使用,而网站主要面向人类。 – lbalazscs 2014-11-27 07:23:43

11

在我过去的项目中,端点是一个相对属性。也就是说它可能被附加到,但它总是包含protocol://host:port/partOfThePath

如果被调用的服务具有动态部分,例如?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将需要在你的代码来构建这样:

String url = "http://" + host + ":" + port + pathForServiceA + "?" + dynamicParam + "=" + dynamicValue; 

在合同中,这可以作为端点存储,因此

serviceAEndpoint=http://host:port/some/service/path?dynamicParam= 

而且很多时候我们将端点存储到'='并且包括'='。这导致了这样的代码:

String url = serviceAEndpoint + dynamicValue; 

希望能流露出一些光芒。

18

Web服务端点是另一个程序用来与您的程序进行通信的URL。要查看WSDL,请将?wsdl添加到Web服务终结点URL。

Web服务是程序到程序互动,而网页是程序到人类互动。

所以: 端点是:http://www.blah.com/myproject/webservice/webmethod

因此, WSDL是:http://www.blah.com/myproject/webservice/webmethod?wsdl


要在WSDL的元素进一步扩大,我总是发现它有助于把它们比作代码:

WSDL有2个部分(物理&摘要)。

物理部分:

定义 - 变量 - 例如:myVar的,X,Y,等

类型 - 数据类型 - 例如:INT,双,字符串,myObjectType

操作 - 方法/函数 - 例如:myMethod(),myFunction()等

消息 - 方法/函数输入参数&返回类型

  • 例如:公共myObjectType myMethod的(字符串 myVar的)

的portType - 类(即,它们是用于操作的容器) - 例如:MyClass {}等。

摘要部分:

绑定 - 这些连接到porttypes并定义用于与此Web服务进行通信的选定协议。 - 协议是一种沟通形式(如文本/短信,手机与电子邮件等)。

服务 - 它列出了另一个程序可以找到您的Web服务的地址(即您的端点)。

+1

我发现“Web服务用于程序到程序的交互,而网页用于程序到人的交互”是非常有用的语句,可以阻止我迷惑“为什么地狱不会把人们称为URL的终点” – 2017-04-03 08:19:38

+0

很高兴帮助施米妮! :-) – specialk1st 2017-04-09 12:49:03