我们已经建立了 WCF SOAP 服务。它的接口在 WSDL 中定义,从中为我们的服务器生成 C# 类(客户从相同的 WSDL 生成各种语言的客户端绑定)。WSDL 有一个当前版本,我们可以稍作更改,还有旧版本,如果没有弃用期、咨询等,我们不能更改或删除它们。SOAP 请求往往很复杂,在同一个请求中有多个 XML 命名空间.
WCF SOAP 服务有很多“智能”,它提供了我们需要的新 Web 应用程序所需的各种获取和报告功能。我们希望在客户端使用 AngularJS。但是这些复杂的 SOAP 请求在 JavaScript 世界中并不容易实现。如果我们只有一个 REST 服务,我们就可以使用 Angular Resource 服务。如果不是这样,那么一个使用 JSON 的服务器,尽管是像 SOAP 这样的 RPC 样式,将运行得相当接近。
对于如何减轻服务器和客户端之间的阻抗不匹配,我有各种想法。但听起来没有什么是快速或容易的。
我想过:-
- 编写一个新的 REST 服务。正是客户端想要的,但这是一个重要的新开发。
- WebHttpBinding 看起来可以提供一些东西。但在我看来,它需要自定义属性的 C# 标记(当我们的 C# 是从 WSDL 生成时如何实现)并且可能不支持我们的复杂类型
- 获取或编写大量客户端 JS 以抽象出调用 SOAP 服务。但是,除非这可以从 WSDL 自动生成,否则需要编写大量的客户端代码。
- 为服务器编写一个 IDispatchMessageFormatter,以接受我发明的一些 JSON 格式的消息。听起来很难,尤其是实现和集成 IDispatchMessageFormatter 的人的好例子似乎很难找到。
- 编写一个 MessageEncoder 在 JSON 和 XML 之间进行交换。但这并不是真正的编码操作,当我尝试编写它时变得非常清楚!
我正在寻找建议。