SOA的功能和表现究竟是什么?

时间:2014-10-26 13:36:35

标签: rest soa

寻找关于REST究竟是什么的答案,我在SOA上发现了关于堆栈溢出的帖子:

" magine您正在开发一个Web应用程序,并决定将功能与应用程序的表示分离,因为它提供了更大的自由度。 您可以创建一个API,让其他人也可以在其上实现自己的前端。你刚刚在这里做的是实现一种SOA方法,即使用web-services"

据我所知,这就是说SOA是一个用于设计软件的总称,其功能和表示是分开的(不是MVC吗?)。而REST就是这样做的一种手段。

功能是什么,这种情况下的演示是什么?

我理解REST是一种用于设计服务器端代码的体系结构,可以在浏览器的HTML中创建URI链接,并处理无状态服务器请求。它是否正确?如果是这样,有什么替代方案?

服务器请求什么不是无状态的?

以下是原始问题: JSON, REST, SOAP, WSDL, and SOA: How do they all link together

我不知道我的问题是否有意义,我很困惑。

1 个答案:

答案 0 :(得分:2)

  

据我了解,这就是说SOA是以功能和表示分离的方式设计软件的总称。

是的,这就是目标。但SOA意味着针对该目标的特定方法,其中系统的不同部分实际上是独立的程序,通过某些API进行通信。这些部分中的每一部分可能使用不同的编程语言,也可能使用物理上独立的主机。

  

(那不是MVC吗?)

MVC是一种通过将代码分解为可重用单元来构建单个程序的方法。但是Model对象只有在可以在应用程序中传递时才有用,您无法将其作为单独的程序运行。但是,您可以编写一个MVC程序,该程序是SOA系统中的一个组件 - 例如以特定方式使用API​​并将其结果转换为模型对象,然后将它们传递给HTML视图。

  

我理解REST是一种用于设计服务器端代码的体系结构,可以在浏览器的HTML中创建URI链接,并处理无状态服务器请求。它是否正确?如果是这样,有什么替代方案?

不完全。 REST与HTML无关,只与HTTP有关:而不是使用像XML文档这样的包装器,它说“我希望你做动作X,这里是输入Y”(这大致与SOAP有关),REST使用URL和HTTP请求的类型(GET,POST,PUT,DELETE)来描述所需的内容。它带有一种理念,即动作的对象(例如/ user / 42)比特定的动词更重要(例如ResetPassword)

  

服务器请求不是无状态的究竟是什么?

HTTP本身是一种无状态协议,但这并不意味着您无法在其上构建有状态应用程序。例如,通过使用cookie,这个网站维持我登录的状态,以便为此回答。在许多API中,会为每个请求传递某种形式的会话标识符,以便您可以在预订之前构建一篮子项目。这可以简化API的使用,但会限制操作的顺序。 RESTful方法可能会让您随时创建任意数量的篮子并检索它们,从而使搜索产品的行为成为真正的无状态。