FOSS 项目聚焦:Appaserver

作者:Tim Riley

一个应用服务器的介绍,它允许您无需编程即可构建 MySQL 用户界面。

假设您的任务是为一个名为 CITY 的表编写一个基于浏览器的 MySQL 用户界面。CITY 有两列。列名分别是 city_namestate_code——两者组合构成主键。

您的用户界面必须允许用户执行四个主要的 SQL 操作:选择、插入、更新和删除。每个操作的主要特点是

  • 选择操作需要一个 HTML 提示表单来请求查询。它还需要一个 where 子句生成器来从 CITY 中选择。在 fork MySQL 并检索原始行之后,它需要将它们转换为 HTML 表格形式。
  • HTML 表格形式需要是可编辑的,并且用户编辑需要被转换为更新语句。
  • 查询执行后产生的每一行都是删除的候选对象。
  • 插入操作需要一个空白表单。它还需要将 Apache 的通用网关接口 (CGI) 转换为插入语句。

因此,您可能会创建名为 city.c 的源文件,并键入所有需要的代码。当然,关系数据库具有关系。一个城市有许多居民。假设 PERSON 表的列名包括 full_namestreet_addresscity_namestate_codefull_namestreet_address 组合构成主键(图 1)。

""

图 1. 居住在一个城市中的多人的数据库模式

您也要创建名为 person.c 的源文件吗?那么 customer.c、inventory.c、order.c 等呢?

或者,您可以创建名为 select.c、insert.c、update.c 和 delete.c 的源文件。然后,这些模块中的每一个都需要以下输入

  • 单个表名。
  • 表的附加属性。
  • 表的列名和附加属性。
  • 相关表的递归列表。
  • Apache 的 CGI 字典输出。

Appaserver 背后的原则是这种多模块方法。Appaserver 将表名存储在一个表中。每个表的列名和关系也存储在表中。将表驱动的概念发挥到极致,就形成了一个数据库的数据库。您可以从 https://appahost.com/appaserver_database_schema.pdf 详细了解 Appaserver 数据库的建模方式。

创建 Appaserver 应用程序

要创建 Appaserver 应用程序,您首先需要 Appaserver。由于 Appaserver 与 Apache 和 MySQL 通信,因此安装包含多个步骤。安装步骤可在 https://github.com/timhriley/appaserver/blob/master/INSTALL 中找到。您将安装一个名为“template”的数据库,所有应用程序都将从中衍生出来。或者,您可以在 Cloudacus 上安全地创建 Appaserver 应用程序。

Appaserver 角色

从模板数据库创建您的第一个应用程序后,您就可以构建它了。登录后,您将看到三个预装的角色(图 2)。

""

图 2. Appaserver 支持多种角色

Appaserver 的安全性围绕角色展开。您向角色授予权限,并将用户分配给角色。“System”角色用于构建您的数据库。用户在所有其他角色中与数据库交互。

最高用户角色是“Supervisor”。“Supervisor”角色有权选择、插入、更新和删除每个应用程序表中每一行的每一列。需要考虑两个重要因素:

  1. “Supervisor”角色无法访问任何系统表,只能访问应用程序表。(好吧,除了 APPLICATION_CONSTANTS 表。)
  2. “Supervisor”角色有权删除太多内容。

最低的下属角色是“Public”。“Public”角色仅具有选择权限。它用于公共资助的研究应用程序。Cloudacus 托管一个名为 “Benthic” 的研究应用程序。“Public”也可以用于商业应用程序以显示库存。

下一个最低的下属角色是“Dataentry”。“Dataentry”角色接收插入和查找权限,但不接收更新或删除权限。如果“Dataentry”角色中的某人发现错误,则需要中断主管进行修复。

您可以在这两个角色之上创建许多下属角色。将您自己分配给所有这些角色。然后您可以轻松测试安全性。

构建您的数据库

用户将使用 Appaserver 与您的数据库交互。同样,您也将使用 Appaserver 构建您的数据库。您将首先使用 Appaserver 的插入操作。如果您犯了错误,您将使用 Appaserver 的更新和删除操作。在您的用户界面愿景完成后,执行“创建应用程序”过程。然后您可以切换到用户角色并开始生产。

Appaserver 的工作原理

看一下图 3。循环首先从选择要插入或查找的表开始。Appaserver 生成并向 MySQL 发送“select”SQL 语句,请求表的列名。MySQL 返回包含表的列名和其他元数据的数据到 Appaserver。

然后,Appaserver 生成 HTML 标签并将它们发送到您的浏览器。如果您正在插入,HTML 标签将是空白小部件;如果您正在选择,则将是查询小部件。

您的浏览器显示一个对话框(表单),其中包含一个 CGI“提交”按钮。在您提交表单后,浏览器将其内容发送到 Appaserver。Appaserver 生成并将下一个适当的 SQL 语句发送到 MySQL。然后循环重复。

""

图 3. Appaserver 数据流图

结论

Hello World 教程 将引导您完成整个数据库构建过程。

Appaserver 是一个 MySQL 用户界面。该界面在您的整个应用程序中保持一致——无论是在系统级别还是用户级别。一旦您了解了 Appaserver 的外观和感觉,新的表和列就可以通过填写一些表单而成为新功能。

Tim Riley 于 1982 年开始在 TRS-80 型号 I 上编程。他拥有佛罗里达国际大学的计算机科学学位和加州州立大学萨克拉门托分校的会计学学位。在过去的 20 年里,他一直在为大沼泽地国家公园编程研究数据库。您可以通过 appahost.com/contact 与他联系。

加载 Disqus 评论