-
Notifications
You must be signed in to change notification settings - Fork 8
Survey: rapid application development
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...).
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.
a.k.a. what brings web RAD to EasySOA Light.
There are several use cases : use web RAD to
- 0 - prototype web UI & logic on top of existing SOA CRUD (REST) services, by using them as persistence layer (ex. Play! : resteasy crud module)
- 1 - prototype new services (definition as well as implementation) with a bonus easy UI (ex. Play! with JAXW/RS modules, even the CRUD way with resteasy, or traditional play templating)
- 2 - prototype full web applications that need to use existing SOA RPC (SOAP) services, by using them in componentized, injected, remoted, business integration logic through injection (ex. Play : @Injected and (remote) services defined in Spring module http://www.playframework.org/documentation/1.0./releasenotes#ajavax.inject.Injectsupporta )
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]
RailwayJS (http://railwayjs.com/)
- 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)
GettyJS (http://geddyjs.org/)
- MVC
- Resource-based routing
- App and resource generators
- Content-negotiation
- Templating (EJS)
- No ORM, but data validation
- Basic testing
FlatironJS (http://flatironjs.org)
- Split in independent components
- Routing - component 'Director'
- Templating - component 'Plates'
- ORM (Mongo, CouchDB, Redis, etc). - component 'Resourceful'
Play Framework (http://www.playframework.org/)
- 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)
RoR, Django...