> For the complete documentation index, see [llms.txt](https://potoyang.gitbook.io/spring-in-action-v4/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://potoyang.gitbook.io/spring-in-action-v4/untitled-9/untitled.md).

# 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 资源。
