Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net REST和WebServices之间的区别_Asp.net_Web Services_Rest_Soap - Fatal编程技术网

Asp.net REST和WebServices之间的区别

Asp.net REST和WebServices之间的区别,asp.net,web-services,rest,soap,Asp.net,Web Services,Rest,Soap,REST和WebService(SOAP)之间的区别是什么?我查看了facebook api,它们使用HTTP头和一些参数(可能是xml或非xml),并以xml返回结果,而SOAP的作用完全相同,HTTP头+xml参数并返回头+xml REST还需要一些经过身份验证的令牌,否则SOAP使用http会话,这与用于身份验证和其他信息的令牌完全相同。我所能看到的SOAP只是REST的一个小小的高级版本 或者还有其他性能方面的考虑吗?阅读有关REST的文章只会谈论非常高级别的客户机-服务器通信,但即使是

REST和WebService(SOAP)之间的区别是什么?我查看了facebook api,它们使用HTTP头和一些参数(可能是xml或非xml),并以xml返回结果,而SOAP的作用完全相同,HTTP头+xml参数并返回头+xml

REST还需要一些经过身份验证的令牌,否则SOAP使用http会话,这与用于身份验证和其他信息的令牌完全相同。我所能看到的SOAP只是REST的一个小小的高级版本

或者还有其他性能方面的考虑吗?阅读有关REST的文章只会谈论非常高级别的客户机-服务器通信,但即使是SOAP也会做同样的事情。谁能告诉我它在哪里可以定义REST和SOAP的正确边界

我们在.net中透明地使用了很多SOAP,但我只想知道,在当前一切都运行得非常顺利的地方,是否真的值得关注REST


我知道REST是一种体系结构,SOAP是一种协议,但我的问题是,目前SOAP的ASP.NET Web服务实现是否具有REST体系结构?

SOAP是一种通过HTTP以XML形式发送/接收数据的协议

一个典型的Web服务是一些描述如何调用它的WSDL方法。对于如何构造这些API并没有真正的约定,所以您总是需要大量的API文档

通常,这类似于(对于ASP.NET):

  • HTTP
    POST
    到mysite.com/products.asmx/ListAllProducts-返回产品的XML列表
  • HTTP
    POST
    to mysite.com/products.asmx/GetProduct-返回基于发布内容中SOAP XML的产品的XML
  • HTTP
    POST
    到mysite.com/products.asmx/UpdateProduct-根据发布内容中的SOAP XML更改产品
REST更像是构建所有方法的约定:

  • HTTP
    GET
    from mysite.com/products-返回列出所有产品的XML或JSON
  • HTTP
    GET
    from mysite.com/products/14-返回产品14的XML或JSON
  • HTTP
    POST
    到mysite.com/products/14-将产品14更改为您在HTML表单中发布的内容
  • HTTP
    DELETE
    至mysite.com/products/14-删除产品14
  • HTTP
    PUT
    到mysite.com/products-添加新产品

所以REST的工作方式更像您期望的浏览器URL。这样做更自然,而且作为惯例更容易理解。所有REST API都以类似的方式工作,因此您不会花那么长的时间学习每个系统的怪癖。

对我来说,使用RESTful方法实现的服务在可访问性方面胜过使用SOAP或RPC的服务。在一个相对封闭的系统中,可以使用工具基于WSDL生成存根和连接,这一点并不十分重要。但是,如果您希望创建可供广泛客户机访问和使用的服务,那么REST服务的一致性和使用它们的方便性是一个很大的优势,即您不需要沉重的RPC堆栈,只需要能够发出HTTP请求

不确定这是否完全回答了您的问题,但如果您有一个基于SOAP的系统(并且您控制客户机和服务器),那么我看不出有任何理由进行更改。此外,一些服务自然更适合基于RPC的访问,在这种情况下,SOAP接口更合适


就性能而言,如果不使用SOAP,一个或多个层将有效地从客户机和服务器技术堆栈中移除,因此在所有其他条件相同的情况下,一个公开RESTful接口的服务将在这方面获胜

REST完全在HTTP上完成一切,而Web服务完全在SOAP上完成一切,在Web服务上,您只需要一些额外的工具来实现SOAP,对吗?谢谢。关于DELETE和PUT,因为REST主要用于机器之间的通信,所以不能从浏览器访问这些动词可能没有那么重要。我认为将重点放在REST的动词上是非常重要的,而SOAP将实际的命令放在请求中,而不是请求的类型中。@vs-很好@阿卡什卡瓦-不完全是这样,因为SOAP也是通过HTTP的。您可以从一个简单的网页调用Javascript中的任何一种机制。REST的重要之处在于使用HTTP动词(GET、POST等)的约定,而不是调用从WSDLSmall中读取的方法名,因为“SOAP是通过HTTP以XML形式发送/接收数据的协议。”;SOAP可以通过任何传输协议,如HTTP、FTP、STMP、JMS等。ShiDoiSi已经提到了这一点,但我觉得对新手来说还不够清楚。需要明确的是,REST是客户端-服务器web应用的通用解决方案,通过浏览器使用web应用的用户可以与RESTful服务交互;他们不能直接这么做。这通常是通过将JavaScript函数绑定到某个HTML元素来完成的,JavaScript反过来调用RESTful服务(即:PUT、DELETE等)。这通常是使用jQuery完成的,但肯定还有很多其他方法可以做到。这可能是重复的-REST与SOAP似乎是一个常见的问题(通过@John Saunders,很好,但由于评论是在编辑中做出的,所以回滚)。虽然这个话题是重复的,但我认为这个问题会在搜索中出现,而其他人不会,所以这个问题应该保持开放。