AppML 架构

现代网络架构

AppML 结合了现代 web 开发的最新技术和思想。

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

  • 低成本
  • 快速敏捷的 Web 开发
  • 为云计算优化
  • 高速和低带宽消耗
  • MVC(Model Viev Controller)结构
  • 内容与演示完全分离
  • 高度可扩展且可测试
  • 易于配置和重新配置
  • 在应用程序运行时重新配置
  • 对用户帐户和角色的智能支持

MVC 架构

AppML 使用 MVC 架构

MVC(Model Viev Controller) 代表模型、视图、控制器

Model 模型描述了您的应用程序。

View 视图显示您的数据。

Controller 控制器控制你的应用程序。


模型 - 仅 JSON

该模型描述了应用程序。

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

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

该模型是用 JSON 编写的:

模型
  1. {
  2. "rowsperpage" : 10,
  3. "database" : {
  4. "connection" : "localmysql",
  5. "sql" : "SELECT CustomerName, City, Country FROM Customers",
  6. "orderby" : "CustomerName"
  7. },
  8. "filteritems" : [
  9. {"item" : "CustomerName", "label" : "Customer"},
  10. {"item" : "City"},
  11. {"item" : "Country"}
  12. ],
  13. "sortitems" : [
  14. {"item" : "CustomerName", "label" : "Customer"},
  15. {"item" : "City"},
  16. {"item" : "Country"}
  17. ]
  18. }

视图 - 仅 HTML

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

视图是用 HTML 和 CSS 编写的:

HTML 视图
  1. <!DOCTYPE html>
  2. <html>
  3. <title>Customers</title>
  4. <link rel="stylesheet" href="https://cankaoshouce.com/css/w3.css">
  5. <script src="https://cankaoshouce.com/js/appml/appml.js"></script>
  6. <body>
  7. <div class="w3-container" appml-data="local?model=/example/appml/model_customers">
  8. <h2>Customers</h2>
  9. <div appml-include-html="/example/appml/inc_listcommands.html"></div>
  10. <div appml-include-html="/example/appml/inc_filter.html"></div>
  11. <table class="w3-table-all">
  12. <tr>
  13. <th>Customer</th>
  14. <th>City</th>
  15. <th>Country</th>
  16. </tr>
  17. <tr appml-repeat="records">
  18. <td>{{CustomerName}}</td>
  19. <td>{{City}}</td>
  20. <td>{{Country}}</td>
  21. </tr>
  22. </table>
  23. </div>
  24. </body>
  25. </html>

控制器 - 客户端 与/或 服务器脚本

网页中的客户端脚本可以控制应用程序:

  • AppML 可以显示模型中定义的数据
  • AppML 可以显示由 HTML 属性定义的数据。
  • AppML 应用程序可以独立于 HTML 运行(隐藏)
  • AppML 可以从 web 服务器(SQL server)请求模型数据(可选)
  • AppML 用户可以编辑数据(可选)
  • AppML 可以向 web 服务器发送数据(可选)

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

  • 接收来自客户端的请求(浏览器)
  • 将数据返回到客户端
  • 从客户端接收数据
  • 正在更新服务器上的数据
  • 负责身份验证和安全

编程的艺术

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

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


声明式编程

软件开发通常会打破最后期限和预算。完成的软件经常充满编码错误。这是因为计算机代码很难开发、测试和维护。

使用 AppML,您可以在 模型视图 中声明应用程序。

有了 AppML,代码就更少了(有时什么都没有)。


快速与敏捷的应用程序开发

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

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

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

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

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

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

有了 AppML,应用程序可以一步一步地编写,从原型到完整的应用程序,增量很小。


Code First

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

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

  2. Contract First: 使用完整的应用程序需求描述从头开始编写应用程序。

AppML 使用最合理的概念: Code First.


面向服务的体系结构 (SOA)

面向服务的体系结构 (SOA) 是一种用于构建 web 应用程序的体系结构。

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

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

SOA 非常适合 MVC 和声明式编程,在 MVC 和声明式编程中,可以轻松地使用数据,而不必担心如何使用。


Web Services

Web Service (Web 服务)是一个数据接口,由 URL 标识,就像网页一样。

Web Service 与网页的不同之处在于它传达信息的方式。

典型的 Web Service 只向网页提供数据。使用 AppML,HTML 是用户界面,Web 服务提供数据。

最初的 Web 服务设计为使用 SOAP、WSDL 和 UDDI 等 XML 标准。

像 AppML 这样的现代 Web 服务更易于使用。

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

Web Services 的好处

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

比如: 一个设计用于向其他应用程序提供股票交易价格的小程序。

比如: 航班时刻表和机票预订系统。

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


云计算

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

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

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

原因很明显:

  • 可以从任何地方获取数据
  • 与他人共享我的数据
  • 在硬件更改或故障时出问题

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