Skip to content

Survey: rapid application development

mkalam-alami 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 :
      1. rapid code to deployment cycle, with ex. auto deployment, scripting language & templates
      1. convention over configuration (light setup using established design patterns)
      1. automatic model persistence (ex: ORM)
      1. default / backoffice UI (scaffolding : static or dynamic generated)
      1. simple UI MVC ex. with routes and templates
      1. (optional, required for development in the Cloud, less so for companies having their own IT & tools) all-in-one, online development, ex. embedded development environment, development framework command line shell, code editor
      1. (for using EasySOA to ease POTL integration in entreprises) define, implement & deploy web services (REST or SOAP)

R2 Dedicated EasySOA Core requirements

See also [@mkalam-alami fork](Rapid application development reqs draft)

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

  • As EasySOA module owner, I want to develop a module's UI & business logic, or even persisted model, and integrate with EasySOA's Core display, query and populate SOA model repository & service registry, make my module useful in Service Use Portal, or use further EasySOA features (use Light proxies...). However, service logic (new Light features...) have to be done elsewhere (ex. on FraSCAti).
      1. UI & its configuration
      1. logic & its configuration
      1. Integration with EasySOA Core i.e. Nuxeo (document services, UI, authentication), but also FraSCAti
      1. maven integration etc.
      1. model & its persistence

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

R3 (optional) EasySOA Light dedicated requirements

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

There are several use cases : use web RAD to

  • 1 - prototype web UI & logic on top of existing SOA CRUD (REST) services, by using them as persistence layer. Note that FraSCAti Studio allows it, but here it provides better UI and is more palatable for web RAD developers.
      1. CRUD REST services as persistence layer. ex. Play! : resteasy crud module
  • 2 - prototype new services (definition as well as implementation) with a bonus easy UI
      1. define, develop and deploy REST or SOAP services. ex. Play! with JAXW/RS modules, even the CRUD way with resteasy, or traditional play templating)
  • 3 - prototype full web applications that need to use existing SOA RPC (SOAP) services

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)

Analysis:

  • POTL:
  • EasySOA Core :
  • EasySOA Light :

Others

RoR, Django...

Clone this wiki locally