SOFEA stands for Service-Oriented Front-End Architecture. Many software engineers employed by the LDS Church are proposing SOFEA as the recommended solution for Community Development at the church.
There are several benefits to using a SOFEA Architecture.
- The client is application like and does not require communicating with the server to change the view. This increases application response time
- The services can be accessed via a web browser application, mobile device, desktop application, as we are always passing the data using RESTful Web services
- Limited Bandwidth Requirements
- The LDS Church is worldwide and frequently an area may not have broadband internet access.
- Potential Offline Use
- Using HTML5 or Adobe Air there is the possibility of wrapping these type of applications so that they can be used offline and synchronized when a network is detected, yet still be a Web based application.
The principles of SOFEA
- Have the client, rather than the server, control Application Download, Presentation Flow and Data Interchange. This is the foundational principle of SOFEA.
- Explore various Application Download options to exploit usefully contrary trade-offs 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 trade-offs, and therefore SOFEA is a metamodel for both types of applications.)
- 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 anti-pattern, which is why there are so many variants of it and why none of them satisfies.)
- 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.
- 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 anti-pattern.) The MVC Controller is the key front-end component which manages client state and drives both Presentation Flow and Data Interchange processes.
This is a list of the recommended technologies and techniques to use when developing SOFEA applications.