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.tw/w3css/4/w3.css">
<script src="https://w3schools.tw/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,將資料庫和應用程式都放入雲中非常容易。