SOA与REST架构的常见误解

在现代软件开发中,服务导向架构(SOA)和REST架构是非常流行的概念。然而,对于这些架构的理解存在一些普遍的误区。本文将探讨这些误区,并澄清一些常见的误解。

误区一:拥有Web服务并不意味着拥有SOA架构

这是关于SOA架构最常见的误解之一。经常听到开发者认为,只要他们的系统中有一两个Web服务,他们就拥有了SOA架构。这种误解可能源于两个原因:

  • “Web服务”和“服务导向”在命名上的相似性,让人们误以为它们是同一回事。
  • 由于Web服务是实现SOA架构的最常见方式,人们很容易认为创建了一个Web服务,就等同于拥有了SOA架构。

SOA架构的特征是独立服务的组合,这些服务封装了业务功能并以服务的形式暴露出来。这些服务可以是Web服务、Windows服务或其他任何形式的暴露。网络的普及和Web开发技术的进展使得Web服务成为实现SOA架构的首选方式。然而,SOA架构中服务的定义并没有将Web服务置于任何特殊的地位。根据Open Group的定义:

服务: - 是一个逻辑上可重复的业务活动的表示,具有指定的结果(例如,检查客户信用,提供天气数据,合并钻探报告) - 是自包含的 - 可以由其他服务组成 - 对服务的消费者来说是一个“黑盒子”

Web服务和SOA是一对很好的组合,它们为许多重要和流行的服务提供了动力。但是,软件架构师、开发者以及任何参与软件开发的人都应该清楚地认识到:拥有Web服务并不意味着拥有SOA架构。

误区二:拥有漂亮的URL并不意味着拥有REST架构风格

REST架构风格是近年来非常热门的话题,因此也存在许多误解。REST为实现Web服务带来了简洁性,并被Web开发社区广泛接受。它与熟悉的HTTP协议很好地配合。

REST架构风格的一个特点是资源位于架构的中心,并且它们在URL中得到了很好的表示。REST给带来了漂亮的URL,因此人们将URL与REST架构联系起来。Leonard Richardson开发了一个成熟度模型,该模型告诉API或RESTful服务在多大程度上是RESTful的。Martin Fowler有一篇关于Richardson成熟度模型的优秀文章。这些级别被描述如下:

理查森成熟度模型: - 第一级是实现URI或引入资源,这一级别的实现使用“漂亮”的URL将URI连接到资源。 - 第二级是使用HTTP动词。 - 最高级,第三级是使用超媒体或遵循HATEOAS。

在理查森的模型中,很明显漂亮的URL是实现RESTfulWeb服务向REST架构迈进的最基本级别,并且清楚地解释了拥有漂亮的URL来访问服务并不意味着已经拥有了REST架构风格。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485