虽然 REST 请求不像 SOAP 请求那样依赖 WSDL,您仍需要 XML Schema 来验证 REST 操作。既然 WSDL 支持 schema 规范,REST 和 SOAP 可以作为从一个合成的 Web 服务应用程序到外部应用程序的请求而共存。
例如,SOA #1(参阅图 3)中的应用程序首先发送 SOAP 请求调用 SOA #2 的 MRP Web 服务中调用基于活动的服务,接下来发送一个 REST 请求来操作相同 MRP Web 服务中的面向行为的服务。所有基于 SOAP 的请求都是基于 IBM WSIF 的。

图 3:REST 和 SOAP 共存
正如您所见到的,第一个 SOA 里面的应用程序运行在 Unix 或者 Linux 服务器上,而第二个 SOA 中的 MRP Web 服务运行在 IBM WebSphere Application Server (Application Server) 中。您可以使用 WSIF 来更改基于 SOAP 的请求的规范版本中的服务类型和位置。
WebSphere 和 .Net 产品的互操作性
如果您希望开发更加复杂的 Web 服务,作为 Linux 或者 Window 平台上的较大企业系统开发项目的一部分,可以考虑使用用于 WebSphere 软件的 IBM Rational® Application Developer。它同用于 Java™ 和 EJB 的统一建模语言 (Universal Modeling Language,UML) Visual Editor 一起提供,并且运行在 Eclipse 源码开放平台上,允许您扩展您的开发环境。还可以使用 Microsoft Visual Studio.Net。
您可以使用软件来将应用程序逻辑分割成模块化的多业务流程 Web 服务组件。IBM 通过提供 Web Services Navigator(Rational Application Developer 插件) 更前进了一步,让您直观地同 Web 服务事务交互。
如果您正在使用 Visual Studio.Net 在 Microsoft .Net 平台上开发 Web 服务,可以在 Application Server 中运行它们。这意味着使两个平台之间的 Web 服务互操作(参阅参考资料),您所要做的只是开发与两种平台公用的 WSDL。
例如,运行在 Unix 或者 Linux 服务器上的应用程序(参见图 4)首先发送 SOAP 请求来调用运行在 Application Server 上的 MRP Web 服务的基于活动的服务。接下来,该应用程序发送一个 REST 请求来执行同样 MRP Web 服务上的一系列基于资源的服务。一旦收到请求,SOA #3 中的 CRM Web 服务向原始应用程序发送一个请求或者信息。 
图 4.:多平台外部 Web 服务
正如您所看到的,第三个 SOA 中的 CRM Web 服务运行在 .Net 平台上并且访问 Application Server。CRM Web 服务向第一个 SOA 中的应用程序发送请求或者信息。您可以为 Visual Studio.NET 添加一个 Visual Perl 插件。您还可以使用用于 Unix 到 Windows 移植的命令行级别的基于 REST 的脚本,并且使其适应 Visual Perl 环境,这取决于简本的复杂性。
Visual Studio
对于您来说,使用 Visual Studio .Net 比 Visual Basic、C++、Java、Kornshell 来封装 Unix 应用程序为 COM 组件要更加容易。同样,如果您正在开发应用程序,使用 Unix shell 脚本来运行 Window 应用程序,或者如果您将 Unix 应用程序移植到 Window 平台下来链接到外部 Web 服务,使用它也非常容易。
这里有一些您应该了解的提示。首先,您应该将自己的 WSDL 文件发布到一个公共的位置来解决互操作性的差别。您可以跳过 Rational Application Developer's 自底向上的方法或者 Visual Studio .Net 的 WSDL First 方法中的自动生成 WSDL 文件。可以使用 Rational Application Developer 的 Skeleton 或者自顶向下的方法 来启动您的 WSDL 文件并填充 Java Class 实现。或者,还可以禁用 Visual Studio 的 WDSL First 方法中的自动生成 WSDL 文件选项并且发布您自己的 WSDL。
第二,要为自己提供一个可以使用的 WSDL 模板,可以考虑 Rational Application Developer 的自底向上的方法(从 Java Bean 开始),Rational XDE(基于类模型生成模板代码),或者 Visual Studio 的 Implementation First Approach(在通过编写 Web 服务代码开始后生成模板代码)。然而 Rational Application Developer 提供了 WSDL,Visual Studio.Net 可能没有提供。
需要多少 SOA?
用来连接 EAI 应用程序的 SOA 的数量取决于项目、互操作性问题、业务流程和负载性能问题之间复杂性的平衡。如果您避免了 SOAP 超标,您需要确保 SOAP 在开发的整个生命周期不会超载。您应该在周期的每一点上测试超载。
结束语
使多平台 SOA 之间的外部 Web 服务互操作性最优需要事先计划好可以开发多少 SOA。您应该与业务分析团队和 IT 专家在各种性能问题上进行交流。您会发现解决互操作性问题将使您的开发工作变得更加得容易。您可以开发外部 Web 服务,每个服务可以使用不同的平台和请求协议。分析师将发现解决该问题将使设计和分析多个 SOA 系统的工作更加容易。他们可以确定 Web 服务可以运行在什么平台上,而不用导致 SOA 超载。