How do we design and build the Presentation Tier of an application in an increasingly service oriented world? We believe there is a definite answer, although it is not a particular technology but rather an Architectural Style. We call this style SOFEA, for Service Oriented Fron tEnd Architecture.
The principles of SOFEA are:
0. Decouple the three orthogonal Presentation Tier processes of Application Download, Presentation Flow and Data Interchange. This is the foundational principle of SOFEA. (Interestingly, the most common Presentation Tier technology, i.e., traditional web technology or "Web 1.0", fails this principle.)
1. Explore various Application Download options to exploit usefully contrary tradeoffs around client footprint, startup time, offline capability and a number of security related parameters. (The key differences between "thin" and "rich" clients lie in these tradeoffs, and therefore SOFEA is a metamodel for both types of applications.)
2. Presentation Flow must be driven by a client side component and never by a server side component. Client state must be managed within the client. (We show that the Front Controller "pattern" represented by all server side web frameworks is in fact an antipattern, which is why there are so many variants of it and why none of them satisfies.)
3. Data Interchange between the Presentation Tier and the Service Tier must not become the weakest link in the end to end application chain of data integrity. The Presentation Tier must support equally rich data structures, data types and data constraints. (In this regard, the inherent weakness of "Web 1.0" makes it hard to integrate with the Service Tier. We recommend the use of XML as the common data denominator for the two tiers). Ideally also, the Data Interchange pattern between the two tiers should follow the peer to peer model rather than the client/server model to enable more natural event notification.
4. Model View Controller
(MVC) is a good pattern to use to build the Presentation Tier. (This is not to be confused with Front Controller, which is an antipattern.) The MVC Controller is the key frontend component which manages client state and drives both Presentation Flow and Data Interchange processes.
For more information see:
- Life above the service tier
- Does the rise of Service Oriented UI (SOUI) means the death of server-assisted MVC? (http://www.infoq.com/news/2007/11/soui-death-of-mvc2)
- Sofea / SOUI - Web future without web frameworks(http://www.slideshare.net/andre.neubauer/sofea-soui-web-future-without-web-frameworks-presentation)
Domain Driven Design
This Doman Driven approach helps ensure the correctness of the system, facilitates its enhancement, and reduces costs by ensuring that the delivered solution always conforms to the business requirements.
The framework is designed to help you maintain focus on business entities, relationships and data flows, instead of implementation artifacts.
For more information see:
- Domain-driven design (http://en.wikipedia.org/wiki/Domain-driven_design)
- Domain-model (http://en.wikipedia.org/wiki/Domain_model)
- How to create a good domain model. Top 10 advices
- Martin Fowler (2003) Patterns of Enterprise Application Architecture, Addison
- IBM Entity Relationship Modeling with UML
The framework includes:
1)Swing based front end application delivered via browser, templates with full navigational flow in client and full access to any swing based third party library.
2)Web Service SOAP based object brokering between server and client.
3)Fully DDD oriented front-end, Middle-Tier, with JPA based persistence tier.
4)_Real_ MVC with physical separation of View, Model and Controller.
5)Reporting and Charts.
7)NEW Full high availability clustering