ASP.NET WebAPI + Soap
WebAPI是否支持SOAP? 我正在尝试在MVC4中编写SOAP服务器,虽然我可以在WCF中完成,但似乎WebAPI正在取代它,但我认为没有办法在此使用SOAP,只使用REST Style接口的JSON / XML。
引用Scott Guthrie的话:最近几年看到了Web API的兴起 – 通过普通的HTTP而不是通过更正式的服务契约(如SOAP或WS *)暴露的服务。
所以我会说不。
WEB API是微软对基于REST的apis的回答。 如果您需要SOAP,请使用WCF。
您应该考虑查看ServiceStack ,它允许您的同一服务支持REST + SOAP API,尽管因为SOAP只能通过HTTP POST工作, 所以它有一些限制
添加ServiceStack参考
作为SOAP的替代方案,ServiceStack提供了WCF的添加服务引用的更好替代方案,该方法可以使用内置于ServiceStackVS中的Add ServiceStack Referencefunction从URL生成类型化API。
优于WCF的优势
- 简单使用小T4模板来保存生成的POCO类型。 更新就像重新运行T4模板一样简单
- Versatile Clean DTO适用于所有JSON,XML,JSV,MsgPack和ProtoBuf 通用服务客户端
- 可重用的生成DTO不会耦合到任何端点或格式。 默认值为部分和虚拟,以便最大程度地重复使用
- 基于弹性消息传递的服务提供了许多优于RPC服务的优势
- 灵活的 DTO生成是可定制的,服务器和客户端可以覆盖内置默认值
- 在外部访问时,排除在DTO上注释的集成 Rich Service元数据, 内部服务
WebAPI和WCF都提升RPC方法签名
有趣的是,尽管WebAPI ApiController方法在使用C#RPC方法创建和定义繁琐的Web服务时采用了与WCF相同的RPC方法 ,但它们仍然无法支持由同一公司制作的自己的SOAP标准。
ServiceStack支持具有相同服务的REST,SOAP,HTML和MQ端点
这是ServiceStack 基于消息的设计的一个certificate,它提供了许多优势,不能承受相同的服务支持多种端点和格式,包括REST,SOAP和MQ端点,以及生成服务器端或客户端HTML网站,如果你需要它。 下面是一个丰富的Northwind数据库编辑器的示例,因为它是使用ServiceStack构建的,它自动启用了一个类型化的REST API,可以使用丰富的本机桌面客户端,移动应用程序和单页面应用程序调用它们。
SOAP仍然是远程服务的不良选择
虽然尽管支持SOAP的互操作性,可访问性和向后兼容性的原因,我们不建议它用于构建Web服务平台,因为它不一定复杂,脆弱,缓慢和冗长,并且有更好的替代方法可供使用。 我在InfoQ的采访中详细解释了一下 。
事实上,WebApi不支持开箱即用的SOAP。 但它是一个非常灵活的框架,您可以“适应”它来处理SOAP:没有什么可以阻止您手动解析收到的SOAP消息(毕竟它们是纯XML)并手动生成响应为XML字符串,然后发送它们与适当的内容类型标题(您甚至可以为此编写自己的内容格式化程序 )。
根据您的需求和现有的代码库,这可能是值得的,或者您可能希望使用更加SOAP的技术,例如WCF或已经提到的ServiceStack框架。
您可能希望查看ServiceStack ,它应该在一个界面中同时支持SOAP和REST,而不会有任何麻烦。 它声称比WebAPI更适合Web服务 。
我不能声称知道关于差异的一切,但他们声称的问题是我从经验中可以说的Web API方法中固有的问题是真实的 – 在web api中,API演变(在实际项目中不可避免)是相当棘手的。 当然,web api不支持SOAP。
- 为什么CSS和JS文件会绕过Asp.Net MVC路由?
- IoC:Castle Windsor和WebAPI
- MVC Web API:URL参数值中的点
- ASP.NET Web API – camelcase中的XML
- 为特定控制器操作选择自定义输出缓存提供程
- 如何使用.Net 4.0中包含的HttpClient类将文件上传到IIS Express中运行的Asp.Net MVC 4.0操作
- 如何在entity framework中处理System.InvalidOperationException?
- 尝试添加一对多关系时出现NullReferenceException
- 制作级联下拉列表(ASP.NET MVC)