什么是 'headless' 程序或应用程序?

如果你是后端程序员,你很可能多次遇到 headless 应用程序(如 headless Java 或 headless Chromium)这个术语。但 headless 实际上是什么意思?

headless 意味着它在没有图形用户界面 (GUI)的情况下运行*。在大多数情况下,headless 应用程序是命令行应用程序或从编程语言接口化的应用程序。

当你在台式机或笔记本电脑上打开浏览器时,你会看到浏览器窗口弹出。此窗口是图形用户界面 (GUI)。除非你与世隔绝,否则你已经对 GUI 有过相当的经验,知道它们有时是多么方便。

但是,特别是在专业 IT 领域,命令行用户界面也很常见 - 主要是因为它们可以在服务器和带屏幕的本地 PC 上使用,而且比 GUI 更容易自动化。

如果你在应用程序开发方面工作过一段时间,你可能知道 GUI 应用程序需要大量极其复杂的库才能运行。在 Linux 上,这包括 X11 服务器(X11 是在屏幕上显示和排列所有窗口和其他图形功能的系统)、X11 的一些实用程序库,以及可能需要一些库来创建当今大多数应用程序中使用的高级用户界面:高级 GUI 由按钮文本输入组成,而低级 GUI 由像素、彩色区域和回调函数组成(按钮和文本输入就是由这些构建的)。

如前所述,headless 应用程序在没有 GUI 的情况下运行。在适当的情况下,这有两个主要优点:

为什么你可以在服务器上运行 headless 应用程序但不能运行普通 GUI 应用程序?

首先,如我们之前所说,GUI 需要服务器上存在大量复杂的库和软件基础设施。在许多服务器上(如大多数 Linux 服务器),此软件默认未安装 - 因为安装它会消耗宝贵的资源如系统内存 (RAM)、硬盘空间,并且系统将难以维护。

与普遍看法相反,在 Linux 上运行 GUI 基础设施(即 X 服务器加上一些实用程序)不需要屏幕或专用显卡。请参见我们关于如何在 Ubuntu 上使用 xserver-xorg-video-dummy 驱动程序运行 X 服务器的文章了解如何实现此目的的示例。

其次,GUI 难以监控、维护和自动化:

想象你有 25 台服务器,每台运行相同的应用程序。如果是 GUI 应用程序,你必须查看 25 个显示应用程序状态的窗口 - 更不用说花时间让所有窗口可靠地显示在本地屏幕上 - 或花开发时间制作 GUI

使用 headless 应用程序,你可以轻松自动化监控应用程序的任务,因此只需在本地屏幕上显示摘要。由于你不必花时间编写和维护 GUI,你还可以更明智地利用你的时间。


Check out similar posts by category: Technologies