15.6 小结

使用远程服务通常是一个乏味的苦差事,但是 Spring 提供了对远程服务的支持,让使用远程服务与使用普通的 JavaBean 一样简单。

在客户端,Spring 提供了代理工厂 bean,能让我们在 Spring 应用中配置远程服务。不管是使用 RMI、Hessian、Burlap、Spring 的 HTTP invoker,还是 Web 服务,都可以把远程服务装配进我们的应用中,好像它们就是 POJO 一样。Spring 甚至捕获了所有的 RemoteExecption 异常,并在发生异常的地方重新抛出运行期异常 RemoteAccessException,让我们的代码可以从处理不可恢复 的异常中解放出来。

即便 Spring 隐藏了远程服务的很多细节,让它们表现得好像是本地 JavaBean 一样,但是我们应该时刻谨记它们是远程服务的事实。远程服务,本质上来讲,通常比本地服务更低效。当编写访问远程服务的代码时,我们必须考虑到这一点,限制远程调用,以规避性能瓶颈。

在本章,我们看到了 Spring 是如何使用几种基本的远程调用技术来发 布和使用服务的。尽管这些远程调用方案在分布式应用中很有价值,但这只是涉及面向服务架构(SOA)的一鳞半爪。

我们还了解了如何将 bean 导出为基于 SOAP 的 Web服 务。尽管这是开发 Web 服务的一种简单方式,但从架构角度来看,它可能不是最佳的选择。在下一章,我们将学习构建分布式应用的另一种选择,把应用暴露为 RESTful 资源。