Tutorials References Menu

AppML Architecture


Modern Web Architecture

AppML combines the most up-to-date techniques and ideas of modern web development.

AppML focus on speed, simplicity, and low cost:

  • Low Cost
  • Rapid and Agile Web Develoment
  • Optimized for Cloud Computing
  • High Speed and Low Bandwidth Consumption
  • MVC (Model Viev Controller) Architecture
  • Full Separation of Content from Presentation
  • Highly Scalable and Testable
  • Easy Configuration and Reconfiguration
  • Reconfiguration while applications are running
  • Smart Support for User Accounts and Roles

MVC Architecture

 

AppML uses an MVC Architecture

MVC stands for Model, View, Controller

The Model describes your application.

The View displays your data.

The Controller controls your application (of course).

 

Wikipedia: Model, View, Controller

        MVC

The MODEL - Just JSON

The model describes the application.

The model is reusable on different hardware and software platforms (Server, PC, iPhone, Tablets, etc.).

The model is not concerned with presentation or user interface (UI).

The model is written in JSON:

Model

{
"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"}
]
}

The VIEW - Just HTML

The view is the UI (User Interface) for displaying (and input) data.

The view is written in HTML and CSS:

HTML View

<!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>
Try It Yourself »

The CONTROLLER - Client and/or Server Scripts

A client script in the web page can control the application:

  • AppML can display data as defined in the model
  • AppML can display data as defined by HTML attributes.
  • AppML applications can run independent of HTML (hidden)
  • (Optionally) AppML can request model data from a web server (SQL server)
  • (Optionally) AppML users can edit data
  • (Optionally) AppML can send data to a web server

A server script can control the application by:

  • Receiving requests from the client (browser)
  • Returning data to the client
  • Receiving data from the client
  • Updating data on the server
  • Taking care of authentication and security

The Art of Programming

Keeping application size and complexity low, is the main problem of all programming.

Controlling computer application complexity, is the true art of programming.


Declarative Programming

Software development often breaks deadlines and budgets. Finished software is often full of coding errors. This is because computer code is difficult to develop, test, and maintain.

Coding is Out. You should describe more What to do, less How to do it.

With AppML you Declare your application in the Model and in the View.

With AppML there is less (sometimes nothing) to code.

Wikipedia: Declarative Programming


Rapid and Agile Application Development

Controlling computer application complexity is the true art of programming.

Keeping application size and complexity under under control is the main problem of all programming.

RAD is a software development method that uses minimal planning in favor of rapid prototyping.

AppML delivers super-fast prototyping, up to 100 times faster than traditional development methods.

Application prototypes can run directly from the application model, without any coding.

Wikipedia: Rapid Application Development

Agile software development is a method based on step-by-step development, where solutions are created by users and developers in collaboration.

With AppML, applications can be written step by step, in small increments, from prototypes to full applications.

Wikipedia: Agile Software Development


Code First

A web application can be developed in two different ways:

1. Code First: Using pre-programmed, pre-tested code, adding only new application descriptions.

2. Contract First: Coding the application from scratch using the full application requirement description.

AppML uses the most rational concept: Code First.


Service Oriented Architecture (SOA)

Service Oriented Architecture (SOA) is an architecture for building web applications.

SOA offers low development costs and high flexibility.

With SOA, applications can be created from scratch, or from existing IT infrastructures, and be used, by different applications, on different hardware and software.

SOA is a perfect fit for MVC and Declarative Programming, where data can be easily consumed without the concern about how.


Web Services

A Web Service is an interface to data, identified by a URL, just like a web page.

A Web Service differs from a web page, only in the way it communicates information.

A typical Web Service only provides data to a web page.

With AppML, HTML is the user interface, a Web Service provides the data.

Original Web Services were designed to use XML standards like SOAP, WSDL, and UDDI.

Modern Web Services like AppML are much easier to use.

  • Simpler to understand - Can be read by humans
  • Lightweight - no unnecessary code or markup
  • Easy to implement - no development tools required

Benefits of Web Services

  • Web services are small units of code
  • Web services are designed to handle a limited set of tasks
  • Web services use HTTP based communicating protocols
  • Web services are independent of operating systems
  • Web services are independent of programming languages
  • Web services can connect different applications, systems, and devices
  • Web Services makes it easy to distribute information
  • Web Services favors rapid application development

Example: A small program designed to supply other applications with the stock exchange prices.

Example: Flight schedules and ticket reservation systems.

Since web services use HTTP, they are independent of both operating systems and programming languages.


Cloud Computing

Cloud Computing is an extension of SOA: Application-as-a service, Storage-as-a-service, Data-as-a-service.

For most people, Cloud Computing is about storing data on the web:

  • Emails and calendars
  • Documents and spreadsheets
  • Books, notes, and to do lists
  • Music, pictures and movies
  • Databases and applications

The reasons are pretty obvious:

  • To have access to data from everywhere
  • To share my data with others
  • To survive hardware changes or crashes

With AppML, it is very easy to put both databases and applications in the cloud.