Refactoring WebAlbums ViewSession interfaces, and MVC stuff
Since a few years, WebAlbums architecture is based on a software pattern derivated from the model–view–controller (MVC): the model–view–presenter

The key idea of this design is that each part is independent from the implementation of the other. That’s how I could added easily a filesystem front-end, in addition to the web interface. Likewise, the album information are currently stored in a MySQL database, but if you re-write the DAO engine, you can easily switch to any other back-end, without affecting the rest of the application.

- The Model Business Object is implemented in the DAO JPA bean. It consits in table-to-class bindings as well as database query methods. These beans embed all the database specific knowledge, and offer (more-or-less) implementation independent services.
- The application logic is implemented in the Service beans. It contains the core engine of the application.
- The original *view/user-interface component* is implemented in as Java servlets and a HTML/XSLT/JS web interface.
- I recently added a another presentation component, based on a fuse filesystem: WebAlbumsFS. But more on that later.
The key idea of this design is that each part is independent from the implementation of the other. That’s how I could added easily a filesystem front-end, in addition to the web interface. Likewise, the album information are currently stored in a MySQL database, but if you re-write the DAO engine, you can easily switch to any other back-end, without affecting the rest of the application.
- The interface between the DAO and Service components is stored in the iDAO package,
- and the interface between the Presentation and Service components are stored in the iService package.