?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
MVC 架構(gòu)
<AppML> 采用了 MVC 架構(gòu) MVC全名是Model View Controller,是模型(Model)-視圖(View)-控制器(Controller)的縮寫,一種軟件設(shè)計(jì)典范。 模型(Model) 描述你的應(yīng)用。 視圖(View) 顯示你的數(shù)據(jù)。 制器(Controller) 控制你的應(yīng)用。
Wikipedia: Model, View, Controller
| ![]() |
模型描述了您的應(yīng)用程序,并且可在不同的硬件 和軟件平臺(tái)(PC,iPhone,Tablets,等)重復(fù)使用。它不關(guān)心用戶 界面(UI)或表現(xiàn)形式。
模型采用xml編寫,存儲(chǔ)于web服務(wù)器中。
<appml>
<datasource>
<database>
<connection>Northwind</connection>
<sql>SELECT CustomerName,ContactName,City,Country FROM Customers</sql>
</database>
</datasource>
<filters>
<query>
<field label="Customer">CustomerName</field>
<field>City</field>
<field>Country</field>
</query>
<order>
<field label="Customer">CustomerName</field>
<field>City</field>
<field>Country</field>
</order>
</filters>
</appml>
以上實(shí)例定義了數(shù)據(jù)源來(lái)自Northwind數(shù)據(jù)庫(kù)。
該模型允許 使用預(yù)定義的SQL獲取數(shù)據(jù)。它還允許通過Customer, City, 和 Country查詢數(shù)據(jù)很排序。
視圖即是 UI (User Interface:用戶界面)。它通常是一個(gè)顯示和輸入數(shù)據(jù)(可選)HTML頁(yè)面:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="appml.css" />
</head>
<body><h1>My First Web Application</h1>
<div id="Place01"></div><script src="appml.js"></script>
<script>
customers=new AppML("appml.html","Customers.xml");
customers.run("Place01");
</script></body>
</html>
以上HTML頁(yè)面使用通過執(zhí)行腳本語(yǔ)言創(chuàng)建一個(gè) AppML 對(duì)象,并將數(shù)據(jù)顯示在id="Place01"的div中。
采用了 "appml.js" 腳本文件。
服務(wù)端腳本通過以下方式控制應(yīng)用:
從瀏覽器中接收請(qǐng)求數(shù)據(jù)
將模型很數(shù)據(jù)返回給瀏覽器
從瀏覽器中接收更新數(shù)據(jù)
在服務(wù)器上更新數(shù)據(jù)
數(shù)據(jù)通信過程,請(qǐng)進(jìn)行數(shù)據(jù)安全驗(yàn)證。
瀏覽器腳本通過以下方式控制應(yīng)用:
當(dāng)頁(yè)面加載時(shí),你可以加載<AppML> 控制器到頁(yè)面上。
使用控制器,你可以在頁(yè)面創(chuàng)建 <AppML> 對(duì)象。
當(dāng)執(zhí)行 <AppML> 對(duì)象時(shí), 它會(huì)向服務(wù)器請(qǐng)求數(shù)據(jù)。
<AppML> 對(duì)象從服務(wù)器接受數(shù)據(jù)(使用數(shù)據(jù)模型) 。
<AppML> 對(duì)象 (或者你的代碼) 在頁(yè)面中顯示你的數(shù)據(jù)。
(可選) web用戶修改數(shù)據(jù)。
(可選) <AppML> 可以向服務(wù)器發(fā)送修改請(qǐng)求。
數(shù)據(jù)文件夾: Data 圖片文件夾: Images 模型文件夾: Models 應(yīng)用: Demo.htm 樣式: Demo.css <AppML> 配置文件: appml_config.php (或者 .htmlx) <AppML> 樣式文件: appml.css <AppML> 瀏覽器控制器: appml.js <AppML> 服務(wù)器控制器: appml.php (或者 .htmlx) |
快速應(yīng)用開發(fā)(Rapid Application Development、RAD)不僅是一種需求抽取方法,它還是是軟件開發(fā)為一體的方法。 快速應(yīng)用開發(fā)目的是快速發(fā)布系統(tǒng)方案,而技術(shù)上的優(yōu)美相對(duì)發(fā)布的速度來(lái)說(shuō)是次要的。
<AppML> 提供超快速的原型設(shè)計(jì),比傳統(tǒng)的軟件 開發(fā)方法高100倍的速度。
應(yīng)用程序原型可以直接從應(yīng)用程序模型運(yùn)行,無(wú)需任何編碼。
Wikipedia: Rapid Application Development
敏捷軟件開發(fā)是基于用戶和開發(fā)者相互協(xié)作的基礎(chǔ)上一步一步的基發(fā)展而來(lái)的方法。
<AppML>應(yīng)用從原型到完整的應(yīng)用可以通過遞增的方式一步步來(lái)編寫實(shí)現(xiàn)。
Wikipedia: Agile Software Development
軟件開發(fā)往往無(wú)法按照預(yù)期的時(shí)間和預(yù)算完成。軟件編碼錯(cuò)誤也是經(jīng)常出現(xiàn)。 這是因?yàn)橛?jì)算機(jī)代碼是很難開發(fā),測(cè)試,維護(hù)。
編碼已經(jīng) 過時(shí)了。你應(yīng)該更多描述做什么,而不是如何實(shí)現(xiàn)它。
使用 <AppML> 你需要在模型中聲明 你的應(yīng)用 。
使用 <AppML> 可以 少寫或者不用編寫代碼。
Wikipedia: Declarative Programming
Web應(yīng)用程序開發(fā)可以使用以下兩種不同的方式:
1. 代碼先行(Code First):使用預(yù)編程,預(yù)先測(cè)試的代碼,只增加新的應(yīng)用程序說(shuō)明。
2. 契約優(yōu)先(Contract First):從頭開始使用完整的應(yīng)用程序的說(shuō)明要求 編寫應(yīng)用程序。
<AppML>采用最合理的概念: 代碼先行(Code First).
Web Service 是一個(gè)數(shù)據(jù)接口, 通過URL指定,就像一個(gè)web頁(yè)面。 但它有別與web頁(yè)面, 它只是一種傳達(dá)信息的方式。
一個(gè)典型的 Web Service 為頁(yè)面提供了數(shù)據(jù)。
使用 <AppML>, HTML 顯示為用戶界面, <AppML>提供數(shù)據(jù)。
Original Web Services 設(shè)計(jì)使用了 XML 標(biāo)志如 SOAP, WSDL, 和 UDDI。
Modern Web Services 比如 <AppML> 應(yīng)用更加簡(jiǎn)單。
更容易理解 - 可以被我們閱讀
輕量級(jí) - 沒有不必要的代碼或標(biāo)記
易于實(shí)施 - 沒有所需的開發(fā)工具
面向服務(wù)的體系結(jié)構(gòu)(service-oriented architecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。
Web services 只需要少量的代碼
Web services 被設(shè)計(jì)來(lái)處理一組有限的任務(wù)
Web services 使用基于HTTP的通信協(xié)議
Web services 獨(dú)立于操作系統(tǒng)
Web services 獨(dú)立于編程語(yǔ)言
Web services 可以連接不同的應(yīng)用程序,系統(tǒng)和設(shè)備
Web Services 可以很容易地發(fā)布信息
Web Services 有利于快速應(yīng)用程序開發(fā)
例如一個(gè)Web services,可以設(shè)計(jì)一個(gè)小程序,提供其他 最新的股票的交易價(jià)格的應(yīng)用程序。
Web services使用HTTP協(xié)議與其他系統(tǒng)進(jìn)行通信, Web服務(wù)是獨(dú)立于操作系統(tǒng)和編程 語(yǔ)言。
調(diào)用Web services的應(yīng)用程序?qū)⑹冀K使用 HTTP協(xié)議發(fā)送請(qǐng)求。調(diào)用應(yīng)用程序?qū)⒂肋h(yuǎn)不會(huì) 關(guān)心其他計(jì)算機(jī)運(yùn)行的操作系統(tǒng)或編程語(yǔ)言 。
Web services可以為更多的企業(yè)創(chuàng)造新的可能性,因?yàn)樗峁┝艘环N簡(jiǎn)單的方法的方式 分發(fā)了大量的信息。
比如:航班時(shí)刻表和機(jī)票預(yù)定系統(tǒng)。
云計(jì)算(Cloud Computing)是SOA的擴(kuò)展: 應(yīng)用即服務(wù)(Application-as-a service), 存儲(chǔ)即服務(wù)(Storage-as-a-service),數(shù)據(jù)即服務(wù)(Data-as-a-service)。
對(duì)于大多數(shù)人,云計(jì)算是在web上存儲(chǔ)數(shù)據(jù):
郵寄很日歷
文檔和電子表格
書籍,筆記,待辦事項(xiàng)列表
音樂,圖片和電影
數(shù)據(jù)庫(kù)和應(yīng)用程序
原因很明顯:
有來(lái)自世界各地的訪問數(shù)據(jù)
與他人分享我的數(shù)據(jù)
硬件升級(jí)或者崩潰
<AppML> 可以很輕松地將數(shù)據(jù)庫(kù)和應(yīng)用程序放在云中。