AppML 架构


现代网络架构

AppML 结合了现代 Web 开发的最新技术和理念。

AppML 专注于速度、简单性和低成本:

  • 低成本
  • 快速敏捷的 Web 开发
  • 针对云计算进行了优化
  • 高速低带宽消耗
  • MVC(模型 Viev 控制器)架构
  • 内容与演示完全分离
  • 高度可扩展和可测试
  • 轻松配置和重新配置
  • 在应用程序运行时重新配置
  • 对用户帐户和角色的智能支持

MVC 架构

 

AppML 使用 MVC 架构

MVC 代表模型、视图、控制器

Model描述您的应用程序。

View显示您的数据。

Controller(当然)控制您的应用程序。

 

Wikipedia: Model, View, Controller

        MVC

模型 - 只是 JSON

模型描述了应用程序。

该模型可在不同的硬件和软件平台(服务器、PC、iPhone、平板电脑等)上重复使用。

该模型与演示或用户界面 (UI) 无关。

模型是用 JSON 编写的:

模型

{
"rowsperpage" : 10,
"database" : {
    "connection" : "localmysql",
    "sql" : "SELECT CustomerName, City, Country FROM Customers",
    "orderby" : "CustomerName"
},
"filteritems" : [
    {"item" : "CustomerName", "label" : "Customer"},
    {"item" : "City"},
    {"item" : "Country"}
],
"sortitems" : [
    {"item" : "CustomerName", "label" : "Customer"},
    {"item" : "City"},
    {"item" : "Country"}
]
}

视图 - 只是 HTML

视图是用于显示(和输入)数据的 UI(用户界面)。

视图是用 HTML 和 CSS 编写的:

HTML 视图

<!DOCTYPE html>
<html lang="en-US">
<title>Customers</title>
<link rel="stylesheet" href="https://www.w3schools.cn/w3css/4/w3.css">
<script src="https://www.w3schools.cn/appml/2.0.3/appml.js"></script>
<body>

<div class="w3-container" appml-data="local?model=model_customers">
<h1>Customers</h1>
<div appml-include-html="inc_listcommands.htm"></div>
<div appml-include-html="inc_filter.htm"></div>
<table class="w3-table-all">
  <tr>
    <th>Customer</th>
    <th>City</th>
    <th>Country</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 可以将数据发送到网络服务器

服务器脚本可以通过以下方式控制应用程序:

  • 接收来自客户端(浏览器)的请求
  • 向客户端返回数据
  • 从客户端接收数据
  • 更新服务器上的数据
  • 注意身份验证和安全性

编程艺术

保持应用程序的大小和复杂性较低,是所有编程的主要问题。

控制计算机应用程序的复杂性,是真正的编程艺术。


声明性编程

软件开发经常违反截止日期和预算。 完成软件通常充满了编码错误。 这是因为计算机代码难以开发,测试和维护。

编码是Out。您应该多描述做什么,少描述如何做

使用 AppML,您可以在 ModelViewDeclare声明您的应用程序。

使用 AppML编码更少(有时没有)

Wikipedia: Declarative Programming


快速敏捷的应用程序开发

控制计算机应用程序的复杂性是真正的编程艺术。

控制应用程序的大小和复杂性是所有编程的主要问题。

RAD 是一种软件开发方法,它使用最少的规划来支持快速原型设计。

AppML 提供超快速原型设计,比传统开发方法快 100 倍。

应用程序原型可以直接从应用程序模型运行,无需任何编码。

维基百科:快速应用程序开发

敏捷软件开发是一种基于逐步开发的方法,其中解决方案由用户和开发人员协作创建。

使用 AppML,应用程序可以从原型到完整应用程序以小增量逐步编写。

维基百科:敏捷软件开发


代码优先

可以通过两种不同的方式开发 Web 应用程序:

1. 代码优先:使用预编程、预测试的代码,仅添加新的应用程序描述。

2. 契约优先:使用完整的应用程序需求描述从头开始编写应用程序。

AppML 使用了最理性的概念:Code First


面向服务的架构 (SOA)

面向服务的架构 (SOA) 是一种用于构建 Web 应用程序的架构。

SOA 提供低开发成本和高灵活性。

使用 SOA,可以从头开始创建应用程序,也可以从现有的 IT 基础架构创建应用程序,并由不同的应用程序在不同的硬件和软件上使用。

SOA 非常适合 MVC声明式编程,其中数据可以轻松使用,而无需担心如何使用。


Web Services 网络服务

Web Services 网络服务 是由URL标识的数据的接口,就像网页一样。

Web Services 网络服务 与网页的不同之处仅在于它传达信息的方式。

典型的Web Services 网络服务 只向网页提供数据。

对于 AppML,HTML 是用户界面,Web Services 网络服务 提供数据。

原始 Web Services 网络服务 旨在使用 SOAP、WSDL 和 UDDI 等 XML 标准。

现代网络服务(如 AppML)更易于使用。

  • 更易于理解 - 可以被人类阅读
  • 轻量级 - 没有不必要的代码或标记
  • 易于实施 - 无需开发工具

Web Services 网络服务的好处

  • Web Services 网络服务是小代码单元
  • Web Services 网络服务旨在处理一组有限的任务
  • Web Services 网络服务使用基于 HTTP 的通信协议
  • Web Services 网络服务独立于操作系统
  • Web Services 网络服务独立于编程语言
  • Web Services 网络服务可以连接不同的应用程序、系统和设备
  • Web Services 网络服务使信息分发变得容易
  • Web Services 网络服务有利于快速应用程序开发

示例:旨在为其他应用程序提供证券交易所价格的小程序。

示例:航班时刻表和机票预订系统。

由于Web 服务使用 HTTP,它们独立于操作系统和编程语言。


云计算

云计算是 SOA 的扩展:应用即服务、存储即服务、数据即服务。

对于大多数人来说,云计算就是在网络上存储数据:

  • 电子邮件和日历
  • 文档和电子表格
  • 书籍、笔记和待办事项清单
  • 音乐、图片和电影
  • 数据库和应用程序

原因很明显:

  • 随时随地访问数据
  • 与他人共享我的数据
  • 为了避免硬件更改或崩溃

使用 AppML,将数据库和应用程序都放在云端非常容易。