2008-08-14 126 views
16

我已经使用Apache CXF将约十个Java类公开为Web服务。使用webservices时,端点,服务和端口之间的区别是什么?

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

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

在.NET中,“服务”直接将调用暴露给Web服务。

有人能解释端口,服务,定位器和端点在网络服务方面的区别吗?

轴:

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

CXF:

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

.NET:

PatientServiceImplService service = new PatientServiceImplService(); 

回答

6

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

1

正如你已经提到的,这些术语在不同的堆栈意味着不同的事情 - 有没有人正确的Web服务答案。

31

我发现基于凯文肯尼的答案的信息,但我想我会张贴在这里为他人。

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

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

我想添加<port><endpoint>用于相同的目的,但port使用由WSDL 1.1和endpoint由WSDL 2.0。

起初让我困惑。

相关问题