什么是简单的REST,RESTFul,SOA和微服务?

时间:2014-11-21 04:31:46

标签: rest soa microservices

我以为我知道REST /" RESTFul",restfulservices,webservices,SOA和微服务是什么,但我遇到了很多不同的定义,我得出的结论是这些术语被过度使用,误用或简单定义不明确。

我希望能够清楚地理解上述术语代表什么,它们的具体定义,它们的共性和差异,优点和缺点,最重要的是底线 - 为了适当地使用这些术语而要记住的最重要的事情。

2 个答案:

答案 0 :(得分:21)

免责声明:这篇文章的大部分都是主观的。这里没有尝试严格定义任何内容,只是尝试上下文化并对概念及其相互关系进行全局概述。

  

我以为我知道REST /" RESTFul",restfulservices,webservices,   SOA和微服务

我说所有这些术语都属于面向服务的体系结构(SOA)的范畴。 Web服务是使用Web相关技术的SOA。 REST及其子集RESTful是一组实现Web服务的实践。最后,微服务是一组新的SOA实践。

  

我希望能清楚地了解上述条款   代表

我会尝试解决这一问题,但要使用非正式定义,而不要考虑其优缺点。这太长了,我认为从解释中可以看出最重要的一点。

<强> SOA

我认为这个名称在这种情况下是不言自明的:SOA - 代表面向服务的体系结构 - 指的是专注于服务而设计的体系结构。现在,这里棘手的部分是您可能会或可能不会考虑服务,这是一个完全不同的主题。

网络服务

这解释了使用Web相关技术的SOA子集。这通常涉及HTTP和XML,但它也可以使用FTP。我认为这里的术语 web 非常模糊,因为它通常指的是标准的互联网技术。

<强> REST(FUL)

REST是Web服务的一个子集 - 因此也是SOA - 围绕使用HTTP进行通信。有一些常见的做法,例如与URL有某种特定的相关性。

大约10年前,当我介绍REST时,RESTful作为一个更严格的REST实现呈现给我,其中资源将具有唯一的URI,并且将通过映射到HTTP谓词的CRUD操作进行管理 - Create = POST,Read = GET,Update = PUT,Delete = Delete

通过HTTP GET或POST请求更新用户信息o /users/1/update URL在REST中完全有效,但它不是RESTful。对于后者,方法是使用HTTP PUT or PATCH而不是/users/1(这也是其余操作的URL,只是改变HTTP动词)。

我发现多年来这种区别变得模糊。但是,RESTful仍然是REST的一个更严格的子集。 (具体要求可能有争议。)

编辑 - 更正式的定义:

REST代表 Representational State Transfer ,并且presented by Roy Fielding in his Ph.D. thesis是分布式超媒体系统的架构风格。重点在于超媒体和自我遏制将客户与大多数事前知识脱钩。网站就是一个例子:它包含一个URI(网站根目录)和一个媒体类型(HTML),服务器通过它提供客户需要的有关资源和所有可能交互的所有信息。

我说99%的人谈论REST真的意味着RPC or HTTP-based interfaces:使用HTTP端点来调用某些操作或查询数据。守备自己has tried to clarify this。由一组预定义URL构成的任何API都需要某些HTTP谓词,而某些参数则属于99%。我上面的描述也是如此。但是,我怀疑这个术语本身能否在其滥用中存活下来,我认为我们必须接受它的新含义。

<强>微服务

这是最近的一个词;它促进将应用程序实现为一组简单的可独立部署的服务。这与SOA体系结构的经典方法形成对比,后者是用于构建复杂系统的一组非常复杂的服务,简单地涉及企业服务总线。但是,值得注意的是,尽管SOA通常与此类系统相关联,但它是一个更广泛的术语,实际上,微服务也是SOA的一个子集。

微服务通常与现代JavaScript全栈一起出现 - 即从所有垂直组件使用JavaScript,从服务器到用户界面。可以说是这样,因为使用这些JavaScripts全栈可以加快开发速度,这归功于简化的集成。这些堆栈以及使用它们实现的微服务通常都是通过REST构建的,但从理论的角度来看,没有什么能阻止您使用不同的方法来实现相同的理念。

答案 1 :(得分:1)

让我向您介绍这些术语的分类视图:

微服务

是一种专门负责的服务子类型。

WEBSERVICES

也是服务的子类型,专门根据他们提供的服务类型而定,符合Web要求和需求。

SOA

是体系结构的子类型,因此是一些组件及其关系的结构视图,这些组件恰好分别是这些服务之间的服务和通信。

其余

是基础http协议的通信子类型。

宁静

是体系结构的子类型(某些组件及其关系的结构视图),其中组件之间的关系专门限制为休息通信。

相关问题