关于Java:使用Web服务时,端点,服务和端口之间有什么区别?

关于Java:使用Web服务时,端点,服务和端口之间有什么区别?

What is the difference between an endpoint, a service, and a port when working with webservices?

我已经使用Apache CXF将大约十个Java类公开为Web服务。

我已经使用CXF,Axis和.NET生成了客户端。

在Axis和CXF中,生成一个" Service "或" Locator "。
通过此服务,您可以获取" Port "。
" Port "用于分别调用Web服务公开的方法。

在.NET中," Service "直接将调用公开给Web服务。

在涉及Web服务时,有人可以解释端口,服务,定位器和终结点之间的区别吗?

轴:

1
2
3
PatientServiceImplServiceLocator locator =
    new PatientServiceImplServiceLocator();
PatientService service = locator.getPatientServiceImplPort();

CXF:

1
2
PatientServiceImplService locator = new PatientServiceImplService();
PatientService service = locator.getPatientServiceImplPort();

.net:

1
PatientServiceImplService service = new PatientServiceImplService();

我根据凯文·肯尼(Kevin Kenny)的回答找到了这些信息,但我想我会把它张贴在这里供其他人使用。

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

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

我想跳到http://www.w3.org/TR/wsdl.html,我认为它可以很好地解释端口,服务和端点。定位器是特定于实现的机制,某些WS堆栈使用该机制来提供对服务端点的访问。


我想补充一点,<port><endpoint>具有相同的用途,但是WSDL 1.1使用port,而WSDL 2.0使用endpoint


正如您已经提到的,这些术语在不同的堆栈中表示不同的事物-Web服务没有一个正确的通用答案。


推荐阅读