We recently faced a big challenge by migrating one of our biggest application from Client-Server to a Web architecture. We developed this app by adopting some EMF technologies (such as EMF Edit, Parsley, CDO, etc..) and some good practices like Inversion of Control (with Google Guice) and MVP pattern. And we were really surprised how easily we realized this porting, since we replaced both UI and persistence layers in a matter of a few days.
After this experience we spent some time asking ourselves how we got this result so easily and smoothlessly. The only answer we found was that our application was somehow pretty-well architectured :-)
In this talk we’ll present our favorite technological stack (with some samples), gained after several years of experience (and errors) developing UI using Eclipse and Modeling technologies.
We will talk about our architectural choices, with pros and cons and we will present (also with code samples) how you have taken advantages from:
- Model centric approach, using databinding to delegate all UI interactions to the model
- EMF Resource APIs, using all EMF Edit and runtime capabilities
- Dependency Injection, to manage at runtime your dependencies (and do more complicated stuff with bytecode manipulation)
- MVP Pattern, by separating the model, the View and the Presentation layer to achieve the best code readability
- UI Model and services layer interaction using the repository pattern
- Model Query Responsibility Segregation pattern.
Last but not least we will show how every single part of such an architecture can be tested and how all parts of the application can be covered with some useful testing frameworks.