Transcript
Page 1: From Web App Model Design to Production with Wakanda

From Web App Model Design

to production with Wakanda

Alexandre Morgaut - 4D @amorgaut@wakandasoft

Page 2: From Web App Model Design to Production with Wakanda

PresentationW3C AC member

Web Architect

JS Expert

REST Lover

NoSQL Fanboy

@amorgaut

http://about.me/amorgaut

Page 3: From Web App Model Design to Production with Wakanda

Agenda

Wakanda Architecture

How a Project start!

Model vs Mockup

Test-Driven Development

Team Work & Source Control

Debugging

Deployment & Administration

Evolutions & Refactoring

Page 4: From Web App Model Design to Production with Wakanda

wakanda

Page 5: From Web App Model Design to Production with Wakanda

Open Source Cross-platform development and deployment system

for model-driven web-based applications

Page 6: From Web App Model Design to Production with Wakanda

wakanda.org

@wakandasoft

JSeverywhere.org

@JSeverywhere

Page 7: From Web App Model Design to Production with Wakanda

Wakanda

Wakanda Server(aka WakandaDB)

Wakanda Application Framework

Wakanda Studio

DataStore Model Editor

Code Editor

GUI Designer

Debugger

Users & Groups

AdministrationExtensions

REST/JSON

JSON-RPC

Page 8: From Web App Model Design to Production with Wakanda

WakandaDB

Wakanda Server(aka WakandaDB)

Your Development ToolsVisual Studio, XCode, NetBeans, Eclipse,

Maqueta, Codio, Cloud9, Orion, Sencha Architect+

Chrome Web Inspector

Your Server FrameworkJava, .NET, node.js PHP, Python, Ruby...

REST/JSON

Webkit debugger protocol 1.0& Firebug Crossfire protocol

Your Web app Client FrameworkExtJS, Sencha Touch, Kendo UI, Backbone.js...

Your native app Client FrameworkiOS, Androïd, .NET...

REST/JSON, Git

Page 9: From Web App Model Design to Production with Wakanda

Standard BasedW3C

- XMLHttpRequest, WindowTimer,

- Web Storage, Web Worker, File, FileSystem, Blob, ...

CommonJS

- Modules, Package, Unit Test

Other

- Console, JSON, JSON-RPC, REST

(+ some node.js support)

Page 10: From Web App Model Design to Production with Wakanda

Webkit JavaScriptCore

Open Source, multi-threaded, preemptive, thread-safe, 64bits

Fast (2 JIT), strict mode (ES5), well structured & documented

aka SquirrelFish Extreme & Nitro Extremehttp://trac.webkit.org/wiki/JavaScriptCore

Page 11: From Web App Model Design to Production with Wakanda

Wakanda Circle of Friends

Page 12: From Web App Model Design to Production with Wakanda

How a project starts

Page 13: From Web App Model Design to Production with Wakanda

“Expression of a requirement”

“Birth of an innovative idea”

“First usage of an innovative technology”

Page 14: From Web App Model Design to Production with Wakanda

Model vs Mockup

Page 15: From Web App Model Design to Production with Wakanda
Page 16: From Web App Model Design to Production with Wakanda

Mockup

Fast representation of a “vision”

Human friendly shared idea

Page 17: From Web App Model Design to Production with Wakanda

Model-driven

GUI is too platform specific

Removes distraction from GUI

Focus on requirements

Page 18: From Web App Model Design to Production with Wakanda

Test-Driven Development

Page 19: From Web App Model Design to Production with Wakanda

Test Service

var testCase = {

name: "testCaseName", testFails: function() { Y.Assert.isFalse(true); }, testPasses: function() { Y.Assert.isFalse(false); } };

http://doc.wakanda.org/Technical-Notes/Advanced/Writing-Unit-Tests-in-Wakanda.300-959974.en.html

YUI Test

Client or Server JS tests

Page 20: From Web App Model Design to Production with Wakanda

CommonJS Unit Testvar! assert,! accountSvc;

assert = require('assert');TwilioScript = require('wakanda-twilio/core/twiml').TwilioScript;

exports['test response'] = function Twilio_Test_Twiml_response() { var script = new TwilioScript();

var twiml = '<?xml version="1.0" encoding="UTF-8"?>\n'; twiml += '<Response>\n'; twiml += '</Response>' assert.strictEqual(script.toString(), twiml, 'simple response ok');};};

exports['test hangup()'] = function Twilio_Test_Twiml_hangup() { var script = new TwilioScript(); script.hangup();

var twiml = '<?xml version="1.0" encoding="UTF-8"?>\n'; twiml += '<Response>\n'; twiml += '<Hangup />\n'; twiml += '</Response>' assert.strictEqual(script.toString(), twiml, 'hangup response ok');};

http://wiki.commonjs.org/wiki/Unit_Testing/1.0

Page 21: From Web App Model Design to Production with Wakanda

Team Work& Source Control

Page 22: From Web App Model Design to Production with Wakanda
Page 23: From Web App Model Design to Production with Wakanda

Team WorkServer

- Model split in SSJS modules

- Service & RPC modules, Shared Workers

Client

- Web pages & Web Components

- Custom Widgets

- Themes, application.css

Tool

- Studio Extensions

Page 24: From Web App Model Design to Production with Wakanda

Source Control

Commit

Log / History

Pull / Push on Github

Pull / Push on Server

Page 25: From Web App Model Design to Production with Wakanda

Debugging

Page 26: From Web App Model Design to Production with Wakanda

Wakanda Internal Debugger

Page 27: From Web App Model Design to Production with Wakanda

Web Inspector

Page 28: From Web App Model Design to Production with Wakanda

Deployment & Administration

Page 29: From Web App Model Design to Production with Wakanda

Server Administration

Page 30: From Web App Model Design to Production with Wakanda

Data Browser

Page 31: From Web App Model Design to Production with Wakanda

Experimental Tool

Deployment

Gandi VPS

Page 32: From Web App Model Design to Production with Wakanda

Evolutions& Refactoring

Page 33: From Web App Model Design to Production with Wakanda

Application Evolutions

Sandboxed Modules (libs, RPC, Services)

Sandboxed Web Components

Updatable DataModel

- auto type conversion

- Extended Models

- openRemoteCatalog()

Page 34: From Web App Model Design to Production with Wakanda

Wakanda Evolutions

Short releases cycle

More and more Standard support

Open Source & Enterprise Editions

Page 35: From Web App Model Design to Production with Wakanda

Q & A

San Francisco, CA - Oct. 25th

http://jseverywhere.org

Wakanda

http://wakanda.org

@jseverywhere

@wakandasoft

Client and Server JavaScript APIs Community Group

http://www.w3.org/community/jseverywhere/


Recommended