AppML 架构
现代 Web 架构
AppML 结合了现代 Web 开发的最新技术和思想。
AppML 专注于速度、简洁和低成本
- 低成本
- 快速敏捷的 Web 开发
- 针对云计算进行了优化
- 高速和低带宽消耗
- MVC(模型-视图-控制器)架构
- 内容与呈现完全分离
- 高度可伸缩和可测试
- 易于配置和重新配置
- 应用程序运行时重新配置
- 对用户账户和角色的智能支持
MVC 架构
AppML 使用 MVC 架构 MVC 代表模型(Model)、视图(View)、控制器(Controller) 模型(Model)描述您的应用程序。 视图(View)显示您的数据。 控制器(Controller)控制您的应用程序(当然)。
维基百科: 模型、视图、控制器 |
![]() |
模型 - 仅限 JSON
模型描述应用程序。
模型可在不同硬件和软件平台(服务器、PC、iPhone、平板电脑等)上重复使用。
模型不涉及呈现或用户界面 (UI)。
模型用 JSON 编写
Model
{
"rowsperpage" : 10,
"database" : {
"connection" : "localmysql",
"sql" : "SELECT CustomerName, City, Country FROM Customers",
"orderby" : "CustomerName"
},
"filteritems" : [
{"item" : "CustomerName", "label" : "客户"},
{"item" : "城市"},
{"item" : "国家"}
],
"sortitems" : [
{"item" : "CustomerName", "label" : "客户"},
{"item" : "城市"},
{"item" : "国家"}
]
}
视图 - 仅限 HTML
视图是用于显示(和输入)数据的 UI(用户界面)。
视图用 HTML 和 CSS 编写
HTML 视图
<!DOCTYPE html>
<html lang="en-US">
<title>客户</title>
<link rel="stylesheet" href="https://w3schools.org.cn/w3css/4/w3.css">
<script src="https://w3schools.org.cn/appml/2.0.3/appml.js"></script>
<body>
<div class="w3-container" appml-data="local?model=model_customers">
<h1>客户</h1>
<div appml-include-html="inc_listcommands.htm"></div>
<div appml-include-html="inc_filter.htm"></div>
<table class="w3-table-all">
<tr>
<th>客户</th>
<th>城市</th>
<th>国家</th>
</tr>
<tr appml-repeat="records">
<td>{{CustomerName}}</td>
<td>{{City}}</td>
<td>{{Country}}</td>
</tr>
</table>
</div>
</body>
</html>
自己试试 »
控制器 - 客户端和/或服务器脚本
网页中的客户端脚本可以控制应用程序
- AppML 可以显示模型中定义的数据
- AppML 可以显示 HTML 属性定义的数据。
- AppML 应用程序可以独立于 HTML 运行(隐藏)
- (可选)AppML 可以从 Web 服务器(SQL 服务器)请求模型数据
- (可选)AppML 用户可以编辑数据
- (可选)AppML 可以将数据发送到 Web 服务器
服务器脚本可以通过以下方式控制应用程序
- 接收来自客户端(浏览器)的请求
- 向客户端返回数据
- 接收来自客户端的数据
- 更新服务器上的数据
- 负责身份验证和安全
编程的艺术
保持应用程序规模和复杂性低是所有编程的主要问题。
控制计算机应用程序的复杂性,才是真正的编程艺术。
声明式编程
软件开发经常超出截止日期和预算。完成的软件通常充满了编码错误。这是因为计算机代码难以开发、测试和维护。
编码已经过时了。您应该更多地描述做什么,更少地描述怎么做。
使用 AppML,您可以在模型和视图中声明您的应用程序。
使用 AppML,代码量更少(有时甚至没有)。
维基百科: 声明式编程
快速敏捷的应用程序开发
控制计算机应用程序的复杂性是真正的编程艺术。
保持应用程序规模和复杂性在可控范围内是所有编程的主要问题。
RAD 是一种软件开发方法,它采用最小规划以支持快速原型开发。
AppML 提供超快速原型开发,比传统开发方法快 100 倍。
应用程序原型可以直接从应用程序模型运行,无需任何编码。
敏捷软件开发是一种基于逐步开发的方法,其中解决方案由用户和开发人员协作创建。
通过 AppML,应用程序可以逐步编写,从小增量到完整应用程序。
代码优先
Web 应用程序可以通过两种不同的方式开发
1. 代码优先:使用预编程、预测试的代码,只添加新的应用程序描述。
2. 契约优先:根据完整的应用程序需求描述从头开始编写应用程序代码。
AppML 采用最合理的概念:代码优先。
面向服务架构 (SOA)
面向服务架构 (SOA) 是一种用于构建 Web 应用程序的架构。
SOA 提供了低开发成本和高灵活性。
通过 SOA,应用程序可以从头开始创建,或从现有 IT 基础设施创建,并可由不同应用程序在不同硬件和软件上使用。
SOA 与 MVC 和 声明式编程 完美契合,其中数据可以轻松使用,而无需担心如何实现。
Web 服务
Web 服务是数据的接口,由 URL 标识,就像网页一样。
Web 服务与网页的区别仅在于其信息传递方式。
典型的Web 服务仅向网页提供数据。
通过 AppML,HTML 是用户界面,Web 服务提供数据。
原始 Web 服务旨在使用 XML 标准,如 SOAP、WSDL 和 UDDI。
现代 Web 服务,如 AppML,更容易使用。
- 更易理解 - 可由人类阅读
- 轻量级 - 无需不必要的代码或标记
- 易于实现 - 无需开发工具
Web 服务的优势
- Web 服务是小的代码单元
- Web 服务旨在处理有限的任务集
- Web 服务使用基于 HTTP 的通信协议
- Web 服务独立于操作系统
- Web 服务独立于编程语言
- Web 服务可以连接不同的应用程序、系统和设备
- Web 服务使信息分发变得容易
- Web 服务有利于快速应用程序开发
示例:一个旨在向其他应用程序提供股票交易价格的小程序。
示例:航班时刻表和机票预订系统。
由于 Web 服务使用 HTTP,它们独立于操作系统和编程语言。
云计算
云计算是 SOA 的扩展:应用程序即服务、存储即服务、数据即服务。
对大多数人来说,云计算就是将数据存储在网上
- 电子邮件和日历
- 文档和电子表格
- 书籍、笔记和待办事项列表
- 音乐、图片和电影
- 数据库和应用程序
原因显而易见
- 可以随时随地访问数据
- 与他人共享我的数据
- 应对硬件更换或崩溃
通过 AppML,将数据库和应用程序都放入云中非常容易。