WebServices客户端-动态代理与使用wconsume创建的存根



我使用JaxW创建了一个Web服务。我相信存在两种在客户端中使用web服务的方式。

  1. 使用wconsume将生成的类作为存根放入客户端
  2. 使用动态代理,whitch的意思是,不会有文件作为存根发送到客户端

我认为这种方法的唯一优点是,如果wsdl发生了更改,就不需要生成stub文件。然而,它看起来并不太实用,因为我可能需要更改客户端代码中的某些内容并重新编译。我还没用这个技术。我在研究开发Java客户端时需要生成代理文件的原因时发现了这个选项,但在使用.Net.时没有

然后,我有两个问题:

  1. 存根和动态代理技术之间有什么区别
  2. 为什么.Net客户端不需要代理文件?还是有自动生成的文件,而我不知道在哪里可以找到?与动态代理相比,使用存根是否会降低性能或安全性

1.存根和动态代理技术之间有什么区别?

JAX-RPC已被弃用
新标准是JAX-WS
JAX-WS允许程序员调用web服务,就好像他们在进行本地方法调用一样
为了实现这一点,已经定义了从WSDL到Java的标准映射
该映射将wsdl:port定义与称为服务端点接口(SEI(的Java Interface相关联
SEI是web服务端点的Java表示
在运行时,JAX-WS创建一个SEI实例,该实例可以通过简单地对SEI进行方法调用来进行web服务调用
现在,创建SEI实例的方法是通过动态代理类
它被称为动态代理,因为它是动态创建的
不需要存根来实现代理,但SEI必须已经实现才能使用
代理使用/是基于存根类来运行的,这些存根类是由WSDL生成的
因此,存根是一个先决条件
因此,并没有像你在帖子中所说的技术分离
您误解了的概念

最新更新