Skip to content

Survey: rapid application development

mdutoo edited this page May 22, 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, or HTML / CSS / js app using backbone
  • 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), or Swagger (running on Java, Play, or node ; see http://swagger.wordnik.com )
  • 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:

Play framework is based on some practices which are used by all the latest programming languages. It tries to be powefull by covering all the parts a web framework must do. It provides many of the POTL requirements except one of them. The only one is the IDE, there is no IDE specially for Play framework so we must adapt others(Eclipse, Netbeans ...). Pla framework provides: Web Services's calls, persistence by ORM, design patterns, templating... So it's a great choice for the POTL's requirements.

  • EasySOA Core :

Play framework also provides all of the EasySOA Core's requirements. It's Maven compatible, wrote in Java, this framework will be very usefull for use Nuxeo's data which is hundred par cent Java oriented. It is also FraSCAti compatible which is also Java oriented. Another point which matters is that Play framework's business logic is very simple to configure, it's all in Java methods and it's very easy builded and managed.

  • EasySOA Light :

Play framework is an agile famework. It separates the code in many folders in function of their roles(MVC). Then many people who work on the same project can work individually respecting the agile method which improves programming quality. This framework give us te possibility to build a backend interface for manage the application and a frontend interface for the users. So there is no inconvenience working with Play framework on the EasySOA Light layer.

Others

RoR, Django...

Clone this wiki locally