Web services 名称-值对到SOAP/WSDL的优点
我看到PayPal等API提供使用NVP或SOAP/WSDL调用其服务。当使用.NET环境(3.5)使用传统web服务(没有WCF)时,哪一个更好?为什么?我知道WSDL允许您输入API URL,并为您生成包装器。那么,为什么公司甚至提供NVP呢?我假设,通过名称-值对,您指的是REST服务 REST的好处主要是易于开发、简单和优雅,以及较低的开销(如果发送和接收大量小消息,这一点非常重要) 以下是REST的一些优点:Web services 名称-值对到SOAP/WSDL的优点,web-services,rest,soap,wsdl,asmx,Web Services,Rest,Soap,Wsdl,Asmx,我看到PayPal等API提供使用NVP或SOAP/WSDL调用其服务。当使用.NET环境(3.5)使用传统web服务(没有WCF)时,哪一个更好?为什么?我知道WSDL允许您输入API URL,并为您生成包装器。那么,为什么公司甚至提供NVP呢?我假设,通过名称-值对,您指的是REST服务 REST的好处主要是易于开发、简单和优雅,以及较低的开销(如果发送和接收大量小消息,这一点非常重要) 以下是REST的一些优点: 休息更轻 可读结果 一切都是URI可寻址资源 REST服务更容易缓存 RE
- 休息更轻
- 可读结果
- 一切都是URI可寻址资源
- REST服务更容易缓存
- REST更容易构建(不需要工具包)
- REST更容易调用(HTTP-GET、POST、PUT、DELETE)
- NVP是HTTP POST
name=fred
amount=100
code=403
等
这是任何HTML浏览器的默认格式,因此将数据发送到web服务很容易实现
我不认为它是从web服务接收数据的好格式?JSON或XML更合适
不是每个人都使用VisualStudio,或者可以访问自动包装生成器,或者想要使用这样的beast
许多web mashup都是用Javascript编写的,因此使用HTTPPOST发送数据是最简单的方法。返回的结果是一个标准的HTML响应代码(200403500等)和/或一些JSON
许多服务提供商提供多种API以满足所有客户的需求在这个行业中,对于不同类型的web服务似乎存在着永无止境的困惑 SOAP是一种消息传递协议。它和休息有很多共同点,就像苹果和草坪拖拉机一样。您希望在消息传递协议中实现的一些功能包括:
- 标题和其他非内容“属性”
- 寻址-根据邮件头将邮件路由到不同的服务器/收件人李>
- 通过排队和其他方式保证交付李>
- 加密、签名和其他安全功能李>
- 交易和编排李>
- 在单个消息中精确表示复杂的结构化数据李>
- 通过合同的可发现性,一种机器可读的“文档”形式,告诉消费者发送消息所需的确切信息,并允许自动生成代理
- 严格、自动化的消息模式验证,与XSD处理XML的方式相同
POST
消息传递协议。这不是我的意见,这是事实的陈述。NVP中的一个字段实际上是方法
。这显然是RPC的废话。看一看他们的API,试着告诉我,将其描述为“资源”有点道理。这不是一种资源,而是一种行动
特别是在PayPal的情况下,“NVP”(HTTPPOST
)API几乎在所有方面都不如SOAP API。它是为那些不能使用肥皂的消费者准备的。如果你能使用它,你绝对应该
我也不一定要为此抨击贝宝。我知道很多人抨击他们没有构建一个“合适的”RESTful API,但这不是我想要表达的意思。并不是世界上的每一项服务都能用REST准确描述。PayPal不是一个真正基于资源的系统,它是一个事务系统,所以我可以原谅他们的架构师和开发人员没有一个完美优雅的REST体系结构。这也许是有争议的,但它不是黑白的。很好,;如果需要的话,我会使用SOAP系统
比如说,将其与。这是一个真正的休息服务。您可以在此API上执行的每个“操作”都被准确地描述为检索或提交特定类型的资源。资源是一条推文、一个状态、一个用户。在这种情况下,使用复杂的SOAP API毫无意义,因为您并没有真正发送消息,也没有执行事务,您只是要求特定的东西,这些东西可以用一个URL来描述。唯一的区别是,您得到的不是HTML网页,而是一些XML或JSON数据;您请求它的方式完全相同
RESTWeb服务通常(总是?)使用HTTPGET
来检索某些资源。Twitter就是这样做的GET
仍然使用“名称-值对”-这是查询字符串,?q=twitterapi&show\u user=true
。?
后面的那些位是名称-值对。这是一个很好的例子,说明了为什么您希望使用REST而不是SOAP;您可以将其连接到RSS提要并获取流式更新。我可以在Firefox中将它变成一个实时书签。或者我可以下载JSON格式的文件,并将其绑定到jqGrid之类的东西上。有趣的不是请求使用“名称-值对”;有趣的是,它是一个简单的URL,任何知道如何请求网页的人都可以使用它
因此,为了尝试总结我所说的一切,请这样想:
- 当您希望将数据公开、消费或发布为永久资源时,请使用REST API(如果可用)
- 当系统本质上是事务性的时,使用SOAP API