我目前正在学习Web服务,如果我理解正确的话,作为RPC的示例,将基于WSDL生成一个存根,存根将方法、数据等转换为远程进程可以使用的形式(整个编组和解组过程,我想我大概明白了)。我认为生成存根的一个重要原因是为了使整个程序能够在不同的地址空间和操作系统中运行。
我的主要问题是:是否有不生成存根的替代方法?如果有,它们如何弥补本地系统和远程系统之间差距?
我目前正在学习Web服务,如果我理解正确的话,作为RPC的示例,将基于WSDL生成一个存根,存根将方法、数据等转换为远程进程可以使用的形式(整个编组和解组过程,我想我大概明白了)。我认为生成存根的一个重要原因是为了使整个程序能够在不同的地址空间和操作系统中运行。
我的主要问题是:是否有不生成存根的替代方法?如果有,它们如何弥补本地系统和远程系统之间差距?
1条答案
按热度按时间d5vmydt91#
你有两种主要的沟通方式--先签约或后签约。
在您的示例中,您首先要签订契约-您编写WSDL,然后从中生成代码。这种方法的好处是分离了开发过程-双方(服务器和客户端)都可以基于契约进行开发。
契约最后是当你在代码中定义你的API,然后框架从这些方法生成WSDL。可以说,这是更快的小团队,因为他们可以改变API的第一次公开发布之前。
至于:不生成存根的替代方案,如果是这样,它们如何在本地系统和远程系统之间架起差距--我建议使用一个专用的通信层,它抽象了实际的在线通信。
例如,假设一个远程系统有两个api- getNameById和getEmailById。您的业务案例需要名称和电子邮件,因此您将有一个api - getNameAndEmailById的数据访问层。在这种情况下,您将存根此数据访问层用于测试目的。但对远程服务使用存根/模拟本身并没有什么错误。