什么是超媒体(Hypermedia)?
超媒体是超文本一词的扩展,是一种非线性信息媒介,包括音频、视频、图形、纯文本和超链接。
超媒体是传播、文化,社会是媒体、电信和计算的融合。这种融合是在三个部门采用数字技术:音频、视频和超文本。越来越强大的个人计算机的发展使信息的一对一传输与一对一的交互和各种媒体的组合相结合。
正如软件架构师Irakli Nadareishvili所解释的那样,“超媒体是万维网的制造问题。就像物理世界是由相互作用的基本粒子(玻色子和Fermions)构建的,网络本质上是一个由无数相互作用的超媒体文档组成的宇宙。”更常见的术语超文本与超媒体密切相关,大部分网络由主要用超文本标记语言(HTML)编写的网页组成。但超媒体超越了超文本,这个词表明不仅仅是文本,还能够被超链接,如图形、视频和音乐文件。
因此,从本质上讲,超媒体只是我们在网络上看到、听到和互动的一切的另一个名称。但自20世纪90年代初以来,超媒体的一般概念在大众使用中在很大程度上被“交互式多媒体”一词所取代。人们主要只是在软件工程和建筑领域继续谈论超媒体。如今,该术语最常用于开发基于Web的应用程序编程接口或API。
随着软件应用程序和系统的复杂性不断增长,越来越需要单个应用程序中的不同组件——以及完全独立的应用程序——能够简单而清晰地相互通信。这种跨语言数据交换是API一直使用的用途,但各种API和用于编码它们的语言可能差异很大,并且与单个软件应用程序本身一样独特。由Facebook开发的API和由Twitter开发的API可能无法相互很好地通信,开发人员通常必须对任何给定的API的独特文档进行排序,以弄清楚如何将其与自己的应用程序一起使用。许多系统工程师和软件开发人员认为,如果按照共享的商定结构,存在编写API的通用格式,他们的工作会简单得多。他们将网络视为这种可能性的一个行之有效的例子。
超媒体简史
但在我们进入超媒体使用户友好的API的世界成为可能之前,一些上下文似乎很正常。超媒体的概念从何而来?它与超媒体API的想法有什么关系?
长话短说,超链接和超媒体的原始概念通常归功于20世纪著名的美国工程师Vannevar Bush,他1945年在《大西洋》上的文章《As We May Think》阐述了他对“memex”的想法,这是一种机械桌面信息检索工具,允许用户通过非线性关联快速索引和访问大量信息存储。布什的愿景有效地描述了我们现在与网络关联的非顺序浏览和超链接功能,他的预言性文章继续被世界各地的计算机科学学生阅读。但直到近二十年后,即1963年,实际的“超文本”和“超媒体”这两个词才首次被创造出来。
受布什文章的启发,一位名叫泰德·纳尔逊的有远见的IT工程师开始在工作中使用这些术语,并最终在他1965年的文章《复杂信息处理:复杂、变化和不确定的文件结构》中发表了这些术语。他写道:“纸张系统在组织或提出想法方面有严重的局限性……然而,有了计算机驱动的显示和大容量内存,可以为教育和享受创造一种新的、可读的媒介……让我介绍“超文本”一词,意思是以如此复杂的方式相互关联的书面或图片材料,以至于无法在纸上方便地呈现或表示。”
三年后,在1968年12月9日著名的“所有演示之母”上,计算机工程师道格拉斯·恩格尔巴特展示了一个工作计算机系统,该系统具有我们今天在个人电脑中期望的所有陷阱——包括导航鼠标、图形用户界面(GUI)、多个应用程序窗口和可点击的超文本链接。那天在旧金山,布什和纳尔逊对网络超媒体的愿景明显地诞生了。
快进到1990年12月,Tim Berners-Lee在概述他的“WorldWideWeb(W3)”项目一年后,通过他的超文本传输协议(HTTP)成功通过互联网传输数据,通过超文本链接访问由他的HTML代码组成的多个文档。“超文本”在1992年解释说,“是一种链接和访问各种信息的方式,作为用户可以随时浏览的节点网。”
到2000年,Berners-Lee编织的网络已经真正覆盖了世界,其领先的先驱之一Roy Fielding——他帮助编写了Berners-Lee开始的初始HTTP规范——正忙于在加州大学欧文分校完成他的博士论文。在他的论文第5章中,菲尔丁创造了一个术语,该术语今天继续在关于Web服务和API的所有讨论中回响。该术语是“REST”,代表代表状态转移。Fielding认为 REST 是定义“分布式超媒体系统”,特别是万维网的建筑风格和结构的一种方式。用他的话说,“REST忽略了组件实现和协议语法的细节,以专注于组件的作用,它们与其他组件交互的限制,以及它们对重要数据元素的解释。”换句话说,它是Web和HTTP工作方式的元视图。许多(但不是全部)严重依赖HTTP的API可以被认为是“RESTful”,REST通常被用作读取和写入Web服务和API的替代样式,以及SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和RPC(远程过程调用)等编程标准。最重要的是,由于REST API几乎总是使用HTTP语法——包括动词GET、PUT、POST等——它们被广泛认为是超媒体API的最终形式。
Hypermedia意义
超媒体驱动应用程序架构的核心思想是,通过将应用程序的各个部分链接在一起,可以创建一个更易于发现、扩展和维护的系统。这种架构的关键优点包括灵活性、标准化和与任何给定服务的松散耦合。这意味着对系统的更改和扩展可以更容易地进行,而不会对现有功能产生负面影响。
- 超媒体设计规模更大。
- 自描述消息,在超媒体驱动应用程序架构中,消息(如HTTP请求和响应)应包含足够的信息来描述其含义和处理要求。这使客户端可以根据消息内容自行确定如何处理消息,而无需依赖于外部实现。
- 松耦合,超媒体驱动应用程序架构通过将资源链接在一起,而不是通过硬编码URL或资源标识符来实现松耦合。这意味着当资源的位置或结构发生变化时,客户端可以继续正常工作,而无需进行修改。
Hypermedia价值
超媒体使您的API更加灵活:您可以更无缝地添加新功能-使您的用户立即可用。它还使您能够更改API的某些方面(即更改资源,需要额外的GET参数),而不必破坏用户正确实现的向后兼容性。
超媒体是最佳实践:超媒体的亮点在于它能够创建一个灵活的API,该API根据您的架构而不是他们自己的架构为开发人员提供动态数据。本质上,它为开发人员提供了一个快捷方式,允许他们充分利用您的API,而不必完全依赖文档和编写规则,这些规则可能与您的应用程序中的规则一致,也可能不一致。
总结
超媒体在API方面经常被误解,但本质上它的功能与网页上的链接完全相同。虽然这项技术既受到赞扬又受到批评,但它确实提供了一系列短期和长期收益。我相信,您的API变得越大、越复杂,这些收益就越明显。
参考资料
The Amsterdam Hypermedia Model(译文)
What is Hypermedia
Architectural Styles and the Design of Network-based Software Architectures