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

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

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

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

有人可以解释一下 Web 服务中端口、服务、定位器和端点之间的区别吗?

轴:

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

CXF:

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

。网:

PatientServiceImplService service = new PatientServiceImplService();
有帮助吗?

解决方案

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

其他提示

我根据凯文·肯尼的回答找到了这些信息,但我想我应该将其发布在这里供其他人使用。

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

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

我想补充一点 <port><endpoint> 服务于同样的目的,但是 port 由 WSDL 1.1 使用并且 endpoint 通过 WSDL 2.0。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top