使用 Web 服务时,终结点、服务和端口之间有什么区别?

2022-09-01 22:02:45

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

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

在安讯士和 CXF 中,将生成“服务”或“定位器”。从这项服务中,您可以获得“端口”。“端口”用于对 Web 服务公开的方法进行单独调用。

在 .NET 中,“服务”直接公开对 Web 服务的调用。

有人可以解释端口,服务,定位器和端点在Web服务方面的区别吗?

轴:

PatientServiceImplServiceLocator locator = 
    new PatientServiceImplServiceLocator();
PatientService service = locator.getPatientServiceImplPort();

CXF:

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

.net:

PatientServiceImplService service = new PatientServiceImplService();

答案 1

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

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

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

答案 2

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


推荐