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.cainiaomax.com/w3css/4/w3.css">
<script src="https://www.cainiaomax.com/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,您可以在 Model 和 View 中Declare声明您的应用程序。

使用 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,将数据库和应用程序都放在云端非常容易。