简单来说,REST,RESTFul,SOA和微服务是什么?
我认为我知道REST / RESTFul,restfulservices,webservices,SOA和微服务是什么,但我遇到了很多不同的定义,我得出这些术语过度使用,滥用或者仅仅是严格定义的结论。
我希望对上述术语所代表的含义,具体定义,共性和差异,优势与劣势以及最重要的底线有清晰的理解 - 为了恰当地使用这些术语,最重要的事情就是记住。
免责声明:这篇文章的大部分是主观的。 这里没有试图严格定义任何东西,只是尝试将概念和它们之间的相互联系概括为全局概述。
我以为我知道REST /“RESTFul”,restfulservices,webservices,SOA和微服务
我会说所有这些术语都属于面向服务的体系结构(SOA)。 Web服务是一种使用Web相关技术的SOA。 REST及其子集RESTful是一组实现Web服务的实践。 最后,微服务是一套新的SOA实践。
我希望能清楚地了解上述术语的含义
我会尽力解决这一问题,但是要使用非正式的定义,不要利用优点和缺点。 那会太长,我认为最大的问题应该从解释中显而易见。
SOA
在这种情况下,我认为这个名称是不言自明的:SOA--代表面向服务的体系结构 - 指的是专注于服务的体系结构。 现在,棘手的部分是你可能会或可能不会考虑服务,这是一个完全不同的主题。
网页服务
这涉及使用网络相关技术的SOA的子集。 这通常涉及HTTP和XML,但它也可以使用FTP。 我认为这里的术语网络很模糊,因为它通常是指标准的互联网技术。
REST(FUL)
REST是Web服务的一个子集,因此也是SOA--围绕使用HTTP进行通信。 有一些常见的做法,例如某些与URL相关的常见做法。
大约10年前,当我被引入到REST时,RESTful作为更严格的REST实现呈现给我,其中资源将具有唯一的URI,并且它将通过映射到HTTP动词的CRUD操作进行管理 - Create = POST,Read = GET,更新= PUT,删除=删除。
通过HTTP GET或POST请求更新用户信息oa /users/1/update
URL在REST中完全有效,但它不会是RESTful。 对于后者,方法是使用HTTP PUT或PATCH over /users/1
(也可以是其余操作的URL,只是简单地改变HTTP动词)。
我发现这些差异多年来变得模糊不清。 但是,RESTful仍然是REST更严格的子集。 (具体要求可能有争议。)
编辑 - 更正式的定义:
REST代表具有象征意义的状态转移,由Roy Fielding在他的博士学位颁发。 论文作为分布式超媒体系统的体系结构风格。 重点放在超媒体和自我遏制上,将客户从大多数预先知识中脱离出来。 网站就是一个例子:它由一个URI(网站根)和一个媒体类型(HTML)组成,服务器通过它提供客户需要的关于资源和所有可能的交互的所有信息。
我认为有99%的人在谈论REST真正意味着RPC或基于HTTP的接口:使用HTTP端点来调用某些操作或查询数据。 菲尔丁本人试图澄清这一点。 由一组预定义的URL构成的任何API都需要特定的HTTP动词和一些参数,这些API都属于99%。 我上面的描述也是如此。 但是,我怀疑这个术语本身是否能够存活下去,我认为我们必须接受它的新含义。
微服务
这是最近的一个术语; 它推动实施应用程序作为一套简单的独立可部署服务。 这与SOA体系结构的经典方法形成鲜明对比,这是一组用于构建复杂系统的非常复杂的服务,最终涉及企业服务总线。 然而,重要的是要注意,尽管SOA通常与这些系统相关联,但这是一个更广泛的术语,事实上,微服务也是SOA的一个子集。
微服务通常与现代JavaScript全堆栈 - 即将JavaScript用于所有垂直组件,从服务器直到用户界面。 可以说这是因为使用这些JavaScript全堆栈可以加快开发,这要归功于简化的集成。 这些堆栈以及使用它们实现的微服务通常通过REST进行架构,但从理论角度来看,没有什么能够阻止您对相同的理念采用不同的方法。
让我向您介绍这些术语的分类学视图:
微服务
是由最小责任专门服务的子类型。
网页服务
也是服务的一个子类型,它们根据Web需求和需求提供的服务类型专用。
SOA
是架构的一个子类型,因此也是一些组件及其关系的结构视图,恰好是这些服务之间的服务和通信。
休息
是通信的子类型,基础http协议。
宁静
是一个体系结构的子类型(某些组件和它们之间的关系的结构视图),其中专门的组件之间的关系被限制为休息通信。
链接地址: http://www.djcxy.com/p/71257.html上一篇: what are REST,RESTFul, SOA and microservices in simple terms?
下一篇: JQuery gets loaded only on page refresh in Rails 4 application