The concept of SOFEA (Service-Oriented Front-End Architecture), outlined
in Life Above the Service Tier
is not new, but it is an important concept. If SOFEA is new to you, the
principles of it are as follows:
SOFEA is a metamodel for applications that are thick or thin
Download, presentation and data interchange are decoupled
Presentation flow and state are managed by the client
The presentation tier must feature data structures that are as
rich as the server
Model View Controller is a good pattern for the interface
SOFEA's doppelgänger is known as SOUI (Service Oriented
User Interface). It's common to see both terms listed together and the
reason is that both were defined at roughly the same period of time,
though Ganesh Prasad argued there was a difference in SOFEA and SOUI -
There is a Difference, After
(also see SOFEA: Also known as
essentially want the same thing -- to make services act more like
services regardless of the consumer.
The differences between the two proposals are not all that important.
What I took away from my initial encounter with the general approach is
that of responsibility. At that time, I had a growing internal conflict
with asking the application server (Rails, Django, etc.) to also concern
itself with generating everything necessary for presenting business
SOFEA/SOUI gave a name to my "psychosis" and suggested an alternative
Worry about how to present the information in the actual client
Talk to the application server by sending and receiving only the
essential nuggets of information.
this architecture. Frameworks like Sammy and Jaml are a step along
this path. We owe it to ourselves to try and push this technology
forward and to ease the burdens of our passions, allowing us more time
to focus on the things that are more important; or at least those that
are more interesting.