gpt4 book ai didi

rest - 简单来说,REST,RESTFul,SOA和微服务是什么?

转载 作者:行者123 更新时间:2023-12-03 08:58:16 27 4
gpt4 key购买 nike

我以为我知道REST /“RESTFul”,restfulservices,webservices,SOA和微服务是什么,但是我遇到了许多不同的定义,我得出的结论是这些术语被过度使用,滥用或完全错误定义。

我希望对上述术语代表什么,它们的具体定义,它们的共性和区别,优势与劣势以及最重要的底线有一个清晰的了解,这是正确使用这些术语要记住的最重要的事情。

最佳答案

免责声明:此帖子大部分是主观的。此处未尝试严格定义任何内容,仅尝试上下文化并提供概念及其相互关系的全局概述。

I thought I knew what REST/"RESTFul", restfulservices, webservices, SOA and microservices



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

I hope to have a clear understanding of what the aforementioned terms represent



我将尽力解决这一点,但要使用非正式定义,而又不考虑优点和缺点。那太长了,我认为从解释中可以明显看出最大的要点。

SOA

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

Web服务

这说明了使用Web相关技术的SOA的子集。这通常涉及HTTP和XML,但也可以使用FTP。我认为这里的术语Web含糊不清,因为它通常指的是标准Internet技术。

REST(完整)

REST是Web服务(因此是SOA)的子集,它围绕使用HTTP进行通信而展开。有一些通用的惯例,例如与URL的一定关联。

大约10年前,当我被介绍给REST时,向我介绍了RESTful,它是一种更严格的REST实现,其中资源具有唯一的URI,并且将通过映射到HTTP动词的CRUD操作对其进行管理-Create = POST,Read = GET,更新= PUT,删除=删除。

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

我发现多年来这些区别变得模糊了。但是,仍然认为RESTful是REST的更严格子集。 (确切的要求可能有争议。)

编辑-更正式的定义:

REST代表代表性状态转移,它是 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组成的,期望某些HTTP动词和某些参数的任何API都属于该99%。我上面的描述也是如此。但是,我怀疑该术语本身能否在滥用后仍然存在,我认为我们必须接受它的新含义。

微服务

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

微服务通常与现代JavaScript全栈并驾齐驱-即从服务器到用户界面的所有垂直组件都使用JavaScript。可以说是这样,因为由于简化了集成,使用这些JavaScript全栈可以加快开发速度。这些堆栈以及使用它们实现的微服务通常是通过REST构建的,但从理论上讲,没有什么可以阻止您对同一原理使用不同的方法。

关于rest - 简单来说,REST,RESTFul,SOA和微服务是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27054162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com