我们已经建立了WCF SOAP服务。其接口在WSDL中定义,从中为我们的服务器生成C#类(客户使用相同的WSDL生成各种语言的客户端绑定)。 WSDL有一个当前版本,我们可以稍微改变一下,旧版本在没有弃用期和咨询等情况下不能更改或删除。SOAP请求通常很复杂,在同一个请求中有多个XML名称空间。现有的SOAP服务和新的Angular Web应用程序
WCF SOAP服务中有很多“智能”,并提供了我们需要的新Web应用程序所需的提取和报告功能。我们希望使用AngularJS作为客户端。但是这些复杂的SOAP请求在JavaScript世界中并不容易。如果只有我们有一个REST服务,我们可以使用角度资源服务。如果不是这样,那么发送JSON的服务器(尽管采用像SOAP这样的RPC风格)将运行得非常紧密。
我对如何减轻我们的服务器和客户端之间的阻抗不匹配有各种想法。但没有任何声音很快或很容易。
我已经想到了: -
- 写一个新的REST服务。客户端需要的是什么,但却是一个重要的新发展。
- WebHttpBinding看起来提供一些东西。但在我看来,它需要自定义属性的C#标记(当我们的C#从WSDL生成时如何实现),并可能不支持我们的复杂类型
- 获取或编写客户端JS负载以抽象出调用SOAP服务。但是,除非可以从WSDL自动生成,否则这是大量的客户端代码编写。
- 为服务器编写一个IDispatchMessageFormatter,接受我发明的一些JSON格式的消息。听起来很难,尤其是作为实施和集成IDispatchMessageFormatter的人的好例子看起来很难。
- 编写一个MessageEncoder在JSON和XML之间进行交换。但是这不是一个真正的编码操作,当我试图编写它时变得非常清楚!
我在寻找建议。
多少业务合同(方法)做你的WCF服务器公开?你能编写一个嵌入并调用WCF服务实现类(Web方法:1操作契约)的WebAPI服务器,并盲目返回重新包装为json的数据对象(即,考虑到操作契约的数量和复杂性,它是否可行)?这应该是可能的,但如果您在服务操作中依赖于多态性,那么这些不能用JSON(AFAIK)复制。 –
共有七项服务和约50项操作。 – PeteAC
如何编写一个将调用委托给soap服务的休息服务? –