สถาปัตยกรรมAppML
สถาปัตยกรรมเว็บสมัยใหม่
AppML ผสมผสานเทคนิคและแนวคิดที่ทันสมัยที่สุดในการพัฒนาเว็บสมัยใหม่
AppML มุ่งเน้นไปที่ความเร็ว ความเรียบง่าย และต้นทุนต่ำ:
- ราคาถูก
- การพัฒนาเว็บที่รวดเร็วและคล่องตัว
- ปรับให้เหมาะสมสำหรับการประมวลผลแบบคลาวด์
- ความเร็วสูงและการใช้แบนด์วิดท์ต่ำ
- สถาปัตยกรรม MVC (ตัวควบคุม Model Viev)
- การแยกเนื้อหาจากการนำเสนอทั้งหมด
- ปรับขนาดได้สูงและทดสอบได้
- กำหนดค่าและกำหนดค่าใหม่ได้ง่าย
- การกำหนดค่าใหม่ในขณะที่แอปพลิเคชันกำลังทำงานอยู่
- การสนับสนุนที่ชาญฉลาดสำหรับบัญชีผู้ใช้และบทบาท
สถาปัตยกรรม MVC
AppML ใช้สถาปัตยกรรม MVC MVC ย่อมาจาก Model, View, Controller โมเดลจะอธิบายการใช้งานของคุณ มุมมองจะแสดงข้อมูลของคุณ ตัวควบคุมจะควบคุมแอปพลิเคชันของคุณ (แน่นอน)
วิกิพีเดีย: แบบจำลอง ดู ตัวควบคุม |
รุ่น - Just JSON
โมเดลอธิบายการใช้งาน
โมเดลนี้ใช้ซ้ำได้บนแพลตฟอร์มฮาร์ดแวร์และซอฟต์แวร์ต่างๆ (เซิร์ฟเวอร์, พีซี, 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.w3schools.com/w3css/4/w3.css">
<script src="https://www.w3schools.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>
The CONTROLLER - สคริปต์ไคลเอนต์และ/หรือเซิร์ฟเวอร์
สคริปต์ไคลเอนต์ในหน้าเว็บสามารถควบคุมแอปพลิเคชัน:
- AppML สามารถแสดงข้อมูลตามที่กำหนดใน model
- AppML สามารถแสดงข้อมูลตามที่กำหนดโดยแอตทริบิวต์ HTML
- แอปพลิเคชัน AppML สามารถทำงานโดยไม่ขึ้นกับ HTML (ซ่อน)
- (ทางเลือก) AppML สามารถขอข้อมูลโมเดลจากเว็บเซิร์ฟเวอร์ (เซิร์ฟเวอร์ SQL)
- (ทางเลือก) ผู้ใช้ AppML สามารถแก้ไขข้อมูลได้
- (ทางเลือก) AppML สามารถส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์
สคริปต์เซิร์ฟเวอร์สามารถควบคุมแอปพลิเคชันได้โดย:
- รับคำขอจากลูกค้า (เบราว์เซอร์)
- คืนข้อมูลให้ลูกค้า
- รับข้อมูลจากลูกค้า
- กำลังอัปเดตข้อมูลบนเซิร์ฟเวอร์
- ดูแลการตรวจสอบและความปลอดภัย
ศิลปะแห่งการเขียนโปรแกรม
การรักษาขนาดและความซับซ้อนของแอปพลิเคชันให้ต่ำ เป็นปัญหาหลักของการเขียนโปรแกรมทั้งหมด
การควบคุมความซับซ้อนของแอปพลิเคชันคอมพิวเตอร์เป็นศิลปะที่แท้จริงของการเขียนโปรแกรม
การเขียนโปรแกรมประกาศ
การพัฒนาซอฟต์แวร์มักจะทำลายเส้นตายและงบประมาณ ซอฟต์แวร์สำเร็จรูปมักเต็มไปด้วยข้อผิดพลาดในการเข้ารหัส เนื่องจากรหัสคอมพิวเตอร์นั้นยากต่อการพัฒนา ทดสอบ และบำรุงรักษา
การเข้ารหัสหมด คุณควรอธิบายเพิ่มเติม ว่าต้องทำ อะไร ให้น้อยลงทำอย่างไร
ด้วย AppML คุณประกาศแอปพลิเคชันของคุณใน Modelและ ในView
ด้วยAppML โค้ด . _
Wikipedia: การเขียนโปรแกรมการประกาศ
การพัฒนาแอปพลิเคชันที่รวดเร็วและคล่องตัว
การควบคุมความซับซ้อนของแอพพลิเคชั่นคอมพิวเตอร์เป็นศิลปะที่แท้จริงของการเขียนโปรแกรม
การรักษาขนาดและความซับซ้อนของแอปพลิเคชันภายใต้การควบคุมเป็นปัญหาหลักของการเขียนโปรแกรมทั้งหมด
RAD เป็นวิธีการพัฒนาซอฟต์แวร์ที่ใช้การวางแผนน้อยที่สุดเพื่อสนับสนุนการสร้างต้นแบบอย่างรวดเร็ว
AppML นำเสนอการสร้างต้นแบบที่เร็วมาก เร็วกว่าวิธีการพัฒนาแบบเดิมถึง 100 เท่า
ต้นแบบแอปพลิเคชันสามารถรันได้โดยตรงจากโมเดลแอปพลิเคชัน โดยไม่ต้องเขียนโค้ดใดๆ
Wikipedia: การพัฒนาแอปพลิเคชันอย่างรวดเร็ว
การพัฒนาซอฟต์แวร์แบบ Agile เป็นวิธีการที่มีพื้นฐานมาจากการพัฒนาแบบเป็นขั้นเป็นตอน โดยที่ผู้ใช้และนักพัฒนาร่วมกันสร้างโซลูชันขึ้นมา
ด้วย AppML คุณสามารถเขียนแอปพลิเคชันได้ทีละน้อยทีละน้อย ตั้งแต่ต้นแบบไปจนถึงแอปพลิเคชันเต็มรูปแบบ
Wikipedia: การพัฒนาซอฟต์แวร์ Agile
รหัสก่อน
เว็บแอปพลิเคชันสามารถพัฒนาได้สองวิธี:
1. รหัสก่อน: ใช้รหัสที่ทดสอบไว้ล่วงหน้าซึ่งตั้งโปรแกรมไว้ล่วงหน้า เพิ่มเฉพาะคำอธิบายแอปพลิเคชันใหม่เท่านั้น
2. ทำสัญญาก่อน: เข้ารหัสแอปพลิเคชันตั้งแต่เริ่มต้นโดยใช้คำอธิบายข้อกำหนดการสมัครแบบเต็ม
AppMLใช้แนวคิดที่มีเหตุผลที่สุด: Code First
สถาปัตยกรรมเชิงบริการ (SOA)
สถาปัตยกรรมเชิงบริการ (SOA)เป็นสถาปัตยกรรมสำหรับการสร้างเว็บแอปพลิเคชัน
SOAให้ต้นทุนการพัฒนาต่ำและมีความยืดหยุ่นสูง
ด้วยSOAแอปพลิเคชันสามารถสร้างได้ตั้งแต่เริ่มต้น หรือจากโครงสร้างพื้นฐานด้านไอทีที่มีอยู่ และใช้งานโดยแอปพลิเคชันต่างๆ บนฮาร์ดแวร์และซอฟต์แวร์ที่แตกต่างกัน
SOAเหมาะอย่างยิ่งสำหรับMVCและDeclarative Programmingซึ่งสามารถใช้ข้อมูลได้อย่างง่ายดายโดยไม่ต้องกังวลว่าจะทำอย่างไร
บริการเว็บ
บริการเว็บเป็นส่วนต่อประสานกับข้อมูลซึ่งระบุโดย URL เช่นเดียวกับหน้าเว็บ
Web Service แตกต่างจาก หน้าเว็บ เฉพาะในวิธีการสื่อสารข้อมูลเท่านั้น
Web Serviceทั่วไปให้ข้อมูลกับหน้าเว็บเท่านั้น
ด้วย AppML HTML เป็นส่วนติดต่อผู้ใช้บริการเว็บให้ข้อมูล
Original Web Servicesออกแบบมาเพื่อใช้มาตรฐาน XML เช่น SOAP, WSDL และ UDDI
Modern Web Servicesเช่น AppML ใช้งานง่ายกว่ามาก
- เข้าใจง่ายขึ้น - มนุษย์สามารถอ่านได้
- น้ำหนักเบา - ไม่มีโค้ดหรือมาร์กอัปที่ไม่จำเป็น
- ใช้งานง่าย - ไม่ต้องใช้เครื่องมือในการพัฒนา
ประโยชน์ของบริการเว็บ
- บริการเว็บเป็นหน่วยเล็ก ๆ ของรหัส
- บริการเว็บออกแบบมาเพื่อจัดการกับชุดงานที่จำกัด
- บริการเว็บใช้โปรโตคอลการสื่อสารที่ใช้ HTTP
- บริการเว็บเป็นอิสระจากระบบปฏิบัติการ
- บริการเว็บไม่ขึ้นกับภาษาโปรแกรม
- บริการเว็บสามารถเชื่อมต่อแอปพลิเคชัน ระบบ และอุปกรณ์ต่างๆ ได้
- Web Services ทำให้ง่ายต่อการเผยแพร่ข้อมูล
- บริการเว็บสนับสนุนการพัฒนาแอปพลิเคชันอย่างรวดเร็ว
ตัวอย่าง: โปรแกรมขนาดเล็กที่ออกแบบมาเพื่อจัดหาแอปพลิเคชันอื่นๆ ด้วยราคาหุ้น
ตัวอย่าง: ตารางเที่ยวบินและระบบจองตั๋ว
เนื่องจากบริการเว็บใช้ HTTP จึงไม่ขึ้นกับทั้งระบบปฏิบัติการและภาษาโปรแกรม
คลาวด์คอมพิวติ้ง
Cloud Computingเป็นส่วนขยายของ SOA: Application-as-a service, Storage-as-a-service, Data-as-a-service
สำหรับคนส่วนใหญ่ Cloud Computing เกี่ยวกับการจัดเก็บข้อมูลบนเว็บ:
- อีเมลและปฏิทิน
- เอกสารและสเปรดชีต
- หนังสือ บันทึกย่อ และรายการสิ่งที่ต้องทำ
- เพลง รูปภาพ และภาพยนตร์
- ฐานข้อมูลและแอปพลิเคชัน
เหตุผลค่อนข้างชัดเจน:
- เพื่อเข้าถึงข้อมูลจากทุกที่
- เพื่อแบ่งปันข้อมูลของฉันกับผู้อื่น
- เพื่อความอยู่รอดของฮาร์ดแวร์ที่เปลี่ยนแปลงหรือล่ม
ด้วย AppML มันง่ายมากที่จะใส่ทั้งฐานข้อมูลและแอปพลิเคชันในคลาวด์