Skip to content

Survey: rapid application development

mdutoo edited this page Apr 26, 2012 · 32 revisions

Survey: rapid web application development (web RAD)

POTL use case requirements

TODO extract to its own project ; and first of all, user stories :

  • As a collaborator on a multi-company, temporary, variable geometry project or process (such as a commercial proposal by several companies), I want to have a publicly-accessible ("Doodle-like") collaborative TODO list (list of tasks to do by company or employee)
  • I want to create it easily : email / wiki syntax / online...
  • I want easy display & access : public, through emails, online...
  • I want to be notified, ex. of task completion by email...
  • If my company's own internal collaborative process and solution is compatible, I want to be able to use it to work with the TODO list (at least "view" & "done", less interesting are "list" and even less "create").
    • EasySOA will be used in order to ease such integration by : 1. modeling, documenting, publishing and easing test of the POTL API, 2. by allowing POTL to react on the company's internal service calls, notably using Proxy-emitted Events (see Monitoring).
  • As POTL project owner, I want it to be developed in an agile way so it can improve and find its audience, and notably using a RAD / RoR-like platform (auto deployment, MVC, convention over configuration, auto model design to persistence, UI scaffolding...).

Dedicated EasySOA Core requirements

a.k.a. web RAD for developing additional, specific EasySOA Core modules with UI & persistence, such as Service Exchange Event subscribers management.

Web RAD is not the first, all-around choice for this, but could be for small modules or to prototype new ones.

(optional) Dedicated EasySOA Light requirements

a.k.a. what brings web RAD to EasySOA Light

There are several use cases : use web RAD to

  • 0 - prototype web applications on top of existing SOA, be it :
  • 1 - prototype new services (definition & implementation) with a bonus easy UI (ex. Play! with JAXW/RS modules, even the CRUD way with resteasy, or traditional play templating)

JS/Node alternatives

Currently the tendency for JS/Node technologies is to use various modules or libraries according to our needs, and integrate them together manually. A few projects offer starting points for web applications by packaging some libraries together:

As of early 2012 we start to find more coherent and complete frameworks, among them GettyJS and RailwayJS (the first one seems a bit more mature, the other more feature-loaded), both largely inspired by Ruby on Rails. [Apr. 2012 update: See also Chaplin, released in February, based on Backbone]

  • Full MVC stack
  • Resource-based routing
  • ORM (mysql, mongodb, redis, neo4j)
  • Multi-locale support
  • Coffee-script support (howto)
  • Generators for model, controller, scaffold
  • Testing: nodeunit, cucumis, code coverage reporting
  • Debugging: railway console
  • Templating (EJS, Jade)
  • MVC
  • Resource-based routing
  • App and resource generators
  • Content-negotiation
  • Templating (EJS)
  • No ORM, but data validation
  • Basic testing
  • Split in independent components
  • Routing - component 'Director'
  • Templating - component 'Plates'
  • ORM (Mongo, CouchDB, Redis, etc). - component 'Resourceful'

Java alternatives

  • MVC (The same way like Symfony , CakePHP or Rails but in Java)
  • ORM (JPA, Hibernate, EJB... compatible)
  • Routing file which uses Url rewriting (for nice Url)
  • Templating (with Scala)
  • MultiDatabase support (MySQL, PostGreSQL...)
  • Authentication and Authorization (by roles)
  • Asynchronous calls and Internationalization
  • Maven compatible
  • Powerful Web Service client
  • More features (http://www.playframework.org/documentation/1.2/libs)

Others

RoR, Django...

Clone this wiki locally