超媒体驱动应用(Hypermedia-Driven Application Architecture,简称 HDA)架构是一种新的构建网络应用的方法。它将传统的多页面应用程序(MPA)的简单性和灵活性与单页面应用程序(SPA)的更好用户体验相结合。
HDA 架构通过扩展现有的HTML基础设施,允许超媒体开发人员创建更强大的超媒体驱动交互来实现这一目标。
遵循REST的架构约束,两个约束特征化了HDA架构:
- HDA使用声明性的、嵌入HTML的语法,而不是命令式脚本,以实现更好的前端交互性。
- HDA使用超媒体(即HTML)与服务器进行交互,而不是非超媒体格式(例如JSON)。
通过采用这两个约束,HDA架构在保持原始的RESTful架构的同时,SPA架构无法做到这一点。
特别是,HDA继续使用超媒体作为应用程序状态的引擎(HATEOAS),而大多数SPA则放弃了HATEOAS,转而使用客户端模型和数据(而不是超媒体)API。
HDA 架构是两种先前架构的综合:原始的多页面应用程序 (MPA) 架构和(相对)较新的单页面应用程序架构。
它试图抓住两者的优势:MPA 的简单性和可靠性,以及使用超媒体作为应用程序状态引擎的 REST 架构,同时提供更好的用户体验,在许多情况下与 SPA 相当。
注:超媒体驱动应用程序架构(Hypermedia-Driven Application Architecture)是一种设计和开发应用程序的方法,它强调使用超媒体元素(如链接和嵌入式资源)来驱动应用程序的行为。超媒体驱动应用程序架构与REST(表征状态转移)架构风格紧密相关,但它更注重在应用程序中使用超媒体作为应用状态(应用程序数据和行为的组合)的引擎。
超媒体驱动应用程序架构的核心思想是,通过将应用程序的各个部分链接在一起,可以创建一个更易于发现、扩展和维护的系统。这种架构的关键优点包括松耦合、可扩展性和灵活性,这意味着对系统的更改和扩展可以更容易地进行,而不会对现有功能产生负面影响。
以下是超媒体驱动应用程序架构的一些关键概念和原则:
- 资源:在超媒体驱动应用程序架构中,资源是信息的基本单位。资源可以是文档、图片、视频或其他类型的数据。每个资源都有一个唯一的标识符(如URL),用于标识和访问资源。
- 表征:资源的表征是资源的某种形式,它可以通过网络传输并呈现给客户端。表征可以是HTML、XML、JSON或其他格式的文档。
- 超媒体:超媒体是连接资源的链接和控件。超媒体使客户端可以通过单击链接或激活控件来导航到其他资源或执行操作。这种导航和操作的能力使应用程序具有动态性,因为客户端不需要预先知道所有可能的操作和资源位置。
- 超媒体控件:超媒体控件是一种特殊类型的超媒体元素,它不仅提供导航功能,还允许客户端执行操作。这些控件可以是表单、按钮或其他交互式元素,它们可以用于创建、更新或删除资源,或执行其他操作。
- 松耦合:超媒体驱动应用程序架构通过将资源链接在一起,而不是通过硬编码URL或资源标识符来实现松耦合。这意味着当资源的位置或结构发生变化时,客户端可以继续正常工作,而无需进行修改。
- 自描述消息:在超媒体驱动应用程序架构中,消息(如HTTP请求和响应)应包含足够的信息来描述其含义和处理要求。这使客户端可以根据消息内容自行确定如何处理消息,而无需依赖于外部实现。