New Multi-Client Example For AeroGear
jbalunas Feb 9, 2012 9:17 AMNow that I'm over the flu, or whatever it was that tore me up earlier this week, I finally have the time to post about our next example idea. The JBoss AS quickstart was just the beginning, and to be honest a fairly modest one (although being a quickstart I think that is fine).
We wanted to create a more complete, and detailed example that anyone can build a true enterprise application from. Not only a a great starting point, but also a showcase for handling common enterprise concerns across clients. The trick is making an example that is easy enough to consume, while showing the recommended ways of handling complex enterprise concerns like security, and local storage. Here are some initial thoughts for it.
The Core Services
- Support full CRUD
- Quickstart was really just "C"
- More advanced entity model
- At least two entities with complex relationships
- Likely supporting the concepts of user/groups
- Full application based security, access for services, and views to follow
- JAX-RS services
- JSON/XML support
- Support bean validation
The Client Options
One of the main goals of this application will be to showcase multiple client types, and support based on a single backend. We also want to make sure the UI's have great styling and showcase some of the power of the clients. Here are some of the thoughts:
- Desktop/ Mobile Web / POH5
- jQuery Mobile + others
- Similar to the quickstart, but vastly updated UI
- Backbone, Zepto, etc...
- Alternative approach, and good to showcase differences
- jQuery Mobile + others
- Desktop / Mobile Web / Other
- TorqueBox/Ruby based client with client side libraries as needed
- RichFaces/JSF based client
- Errai/Gwt based client
- Hybrid
- Apache Cordova
- Take best of compatible mobile web approaches and convert to Apache Cordova example
- Minimum of iOS, and Android support, WP would be good too
- Appcelerator
- TBD
- Apache Cordova
- Native
- TBD
Project Structure
The project structure must be flexible enough to allow for a separate service layer, and multiple clients. Using maven as our base a structure like the one below will be used at first. However this may not work for all clients, so we'll have to be open to change.
/services /jax-rs /core /clients /poh5-jq /poh5-alt /richfaces /cordova /ios /android /www /etc...
Futures & Thoughts
Other options once we get a good core example in place would include:
- Offline/Local storage support
- PhoneGap build integration
- Automatic openshift deployment through CI
- More advanced workflows
- Likely better for a follow-on demo
- TBD, but the sky's the limit
We also need to make sure that any updates follow our coding standards, and practices as outlined Contributing To AeroGear
If anyone has any comments, thoughts, etc... please speak up!! I think this example will be an important showcase moving forward, and will provide us a great deal of flexibility, and a great starting point for anyone wanting to write their own enterprise based application.