我已经阅读了很多关于REST和SOAP之间差异的文章 . 我将简要总结几行,如果错误请告诉我 .
-
SOAP是一种使用HTTP,TCP等传输消息的协议,但REST仅使用HTTP传输消息 .
-
SOAP仅以XML格式传输消息,但REST使用JSON或XML .
-
REST不涉及与SOAP相同的流量开销(因为SOAP涉及复杂的XML WSDL生成) .
我读过WCF是为了提供互操作性而开发的 . 我在.net中开发了REST服务,客户端是移动设备(不是.net客户端) . 这个我已经测试并上线了 .
话虽如此,我的问题是......
有没有人开发过basichttpbinding WCF服务并将其提供给非类似Java,移动设备等的其他设备以使其可互操作?非.net客户端是否可以使用 WCF other than REST ?
4 回答
Yes, you can consume a WCF service with any kind of SOAP or REST client.
这个问题过于宽泛,无法回答“是”或“否” . 严格与您的问题相关,我们对SOAP具有以下特征:
SOAP是一种协议;
SOAP消息可以通过HTTP,TCP,SMTP等发送(实际上是任何协议) . SOAP是在另一个传输协议之上使用的消息传递协议;
最常用的SOAP协议是HTTP和HTTPS;
现在REST的特点:
REST是构建应用程序的架构风格;
REST实际上并不绑定HTTP协议,它可以使用任何传输协议;
每个人都使用HTTP和HTTPS进行REST;
SOAP只能发送XML消息,它是协议的一部分 . 实际上,您需要使用包含Envelope,Header和Body标记的XML的特定格式 .
REST是关于资源的表示 . 表示可以具有任何结构,可以是任何格式,而不仅仅是XML或JSON(尽管XML和JSON是最常用的);
WSDL不参与实际的操作调用,它与描述SOAP Web服务是分开的 . REST有类似的东西(尽管不是很常用),叫做WADL . 您需要使用SOAP和REST对数据进行编组/解组,因此开销大部分时间都不是问题(SOAP信封不是那么大) .
这是从任何类型的客户端调用Web服务(SOAP或RESTful)的想法 . 这是两台机器之间的通信方法 . 机器的实现并不重要(Java,C#,PHP,Python等) .
WCF是一个Web服务框架,可以将服务公开为SOAP或REST API . 它可以从任何类型的客户端调用 .
我想你误解了一些基本观点 .
REST和SOAP都是通过HTTP播放的Web服务协议 . 我认为你不应该关心HTTP,TCP或UDP,因为它们是较低级别的协议......
SOAP将所有内容包装在XML信封中,这会产生一些流量开销 . 这就是为什么SOAP被认为性能更差但更正式,因此更适合某些用途 .
SOAP和REST都独立于它们实现的平台
因此, yes you could consume a REST or a SOAP service implemented on .NET, with any kind of REST or SOAP client . 您还应该知道,您可以使用WCF实现Web服务功能,只需更改一些configuration options即可在SOAP和REST之间更改 endpoints .
希望我帮忙!
是的,对于非.net客户端,可以使用除Rest之外的WCF服务 . WCF基本上允许您创建Web服务 . Web服务的目的是提供跨平台功能 .
Rest和Soap都是Web服务,但用途不同 . 这取决于您的要求您要使用哪一个 . Rest仅适用于http协议,可以通过URI轻松调用,也可以通过URL执行CRUD操作 . 它也可以从Web浏览器调用 .
然而,肥皂也支持跨平台通信,但想要使用肥皂的客户必须支持肥皂工具包 . 它无法从浏览器调用 . 现在几乎每种语言都支持SOAP api .
使用basichttpbinding公开的服务是基于soap的服务,是的,它也可以从非.net客户端调用 .
使用web apis代替wcf服务进行休息 .