AppML 架構(gòu)

2018-09-20 07:33 更新

<AppML> 架構(gòu)


MVC 架構(gòu)

?

<AppML> 采用了 MVC 架構(gòu)

MVC全名是Model View Controller,是模型(Model)-視圖(View)-控制器(Controller)的縮寫(xiě),一種軟件設(shè)計(jì)典范。

模型(Model) 描述你的應(yīng)用。

視圖(View) 顯示你的數(shù)據(jù)。

制器(Controller) 控制你的應(yīng)用。

?

Wikipedia: Model, View, Controller

?

??????? MVC

模型(MODEL) - 僅僅是一個(gè)簡(jiǎn)單的XML文件

模型描述了您的應(yīng)用程序,并且可在不同的硬件 和軟件平臺(tái)(PC,iPhone,Tablets,等)重復(fù)使用。它不關(guān)心用戶(hù) 界面(UI)或表現(xiàn)形式。

模型采用xml編寫(xiě),存儲(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ù)。它還允許通過(guò)Customer, City, 和 Country查詢(xún)數(shù)據(jù)很排序。


視圖(VIEW) - 僅僅是一個(gè)普通的HTML文件

視圖即是 UI (User Interface:用戶(hù)界面)。它通常是一個(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è)面使用通過(guò)執(zhí)行腳本語(yǔ)言創(chuàng)建一個(gè) AppML 對(duì)象,并將數(shù)據(jù)顯示在id="Place01"的div中。

采用了 "appml.js" 腳本文件。


CONTROLLER(控制器) - 僅僅是一個(gè)瀏覽器很服務(wù)端的腳本

服務(wù)端腳本通過(guò)以下方式控制應(yīng)用:

  • 從瀏覽器中接收請(qǐng)求數(shù)據(jù)
  • 將模型很數(shù)據(jù)返回給瀏覽器
  • 從瀏覽器中接收更新數(shù)據(jù)
  • 在服務(wù)器上更新數(shù)據(jù)
  • 數(shù)據(jù)通信過(guò)程,請(qǐng)進(jìn)行數(shù)據(jù)安全驗(yàn)證。

瀏覽器腳本通過(guò)以下方式控制應(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用戶(hù)修改數(shù)據(jù)。
  • (可選) <AppML> 可以向服務(wù)器發(fā)送修改請(qǐng)求。

典型的 Web 文件和文件夾:

Folders


web文件夾: Demo

數(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)用開(kāi)發(fā)

快速應(yīng)用開(kāi)發(fā)(Rapid Application Development、RAD)不僅是一種需求抽取方法,它還是是軟件開(kāi)發(fā)為一體的方法。 快速應(yīng)用開(kāi)發(fā)目的是快速發(fā)布系統(tǒng)方案,而技術(shù)上的優(yōu)美相對(duì)發(fā)布的速度來(lái)說(shuō)是次要的。

<AppML> 提供超快速的原型設(shè)計(jì),比傳統(tǒng)的軟件 開(kāi)發(fā)方法高100倍的速度。

應(yīng)用程序原型可以直接從應(yīng)用程序模型運(yùn)行,無(wú)需任何編碼。

Wikipedia: Rapid Application Development

敏捷軟件開(kāi)發(fā)是基于用戶(hù)和開(kāi)發(fā)者相互協(xié)作的基礎(chǔ)上一步一步的基發(fā)展而來(lái)的方法。

<AppML>應(yīng)用從原型到完整的應(yīng)用可以通過(guò)遞增的方式一步步來(lái)編寫(xiě)實(shí)現(xiàn)。

Wikipedia: Agile Software Development


聲明式編程

軟件開(kāi)發(fā)往往無(wú)法按照預(yù)期的時(shí)間和預(yù)算完成。軟件編碼錯(cuò)誤也是經(jīng)常出現(xiàn)。 這是因?yàn)橛?jì)算機(jī)代碼是很難開(kāi)發(fā),測(cè)試,維護(hù)。

編碼已經(jīng) 過(guò)時(shí)了。你應(yīng)該更多描述做什么,而不是如何實(shí)現(xiàn)它。

使用 <AppML> 你需要在模型中聲明 你的應(yīng)用 。

使用 <AppML> 可以 少寫(xiě)或者不用編寫(xiě)代碼

Wikipedia: Declarative Programming


代碼先行(Code First)

Web應(yīng)用程序開(kāi)發(fā)可以使用以下兩種不同的方式:

1. 代碼先行(Code First):使用預(yù)編程,預(yù)先測(cè)試的代碼,只增加新的應(yīng)用程序說(shuō)明。

2. 契約優(yōu)先(Contract First):從頭開(kāi)始使用完整的應(yīng)用程序的說(shuō)明要求 編寫(xiě)應(yīng)用程序。

<AppML>采用最合理的概念: 代碼先行(Code First).


面向服務(wù)的體系結(jié)構(gòu)(service-oriented architecture,SOA)

Web Service 是一個(gè)數(shù)據(jù)接口, 通過(guò)URL指定,就像一個(gè)web頁(yè)面。 但它有別與web頁(yè)面, 它只是一種傳達(dá)信息的方式。

一個(gè)典型的 Web Service 為頁(yè)面提供了數(shù)據(jù)。

使用 <AppML>, HTML 顯示為用戶(hù)界面, <AppML>提供數(shù)據(jù)。

Original Web Services 設(shè)計(jì)使用了 XML 標(biāo)志如 SOAP, WSDL, 和 UDDI。

Modern Web Services 比如 <AppML> 應(yīng)用更加簡(jiǎn)單。

  • 更容易理解 - 可以被我們閱讀
  • 輕量級(jí) - 沒(méi)有不必要的代碼或標(biāo)記
  • 易于實(shí)施 - 沒(méi)有所需的開(kāi)發(fā)工具

面向服務(wù)的體系結(jié)構(gòu)(service-oriented architecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱(chēng)為服務(wù))通過(guò)這些服務(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的優(yōu)勢(shì)

  • 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)用程序開(kāi)發(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)

云計(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ù):

  • 郵寄很日歷
  • 文檔和電子表格
  • 書(shū)籍,筆記,待辦事項(xiàng)列表
  • 音樂(lè),圖片和電影
  • 數(shù)據(jù)庫(kù)和應(yīng)用程序

原因很明顯:

  • 有來(lái)自世界各地的訪問(wèn)數(shù)據(jù)
  • 與他人分享我的數(shù)據(jù)
  • 硬件升級(jí)或者崩潰

<AppML> 可以很輕松地將數(shù)據(jù)庫(kù)和應(yīng)用程序放在云中。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)