使用 Web 服务时,端点、服务和端口之间有什么区别?
-
08-06-2019 - |
题
我使用 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 服务没有一个正确的通用答案。
不隶属于 StackOverflow