Originally posted by Darryl A. J. Staflund:
Here's how I tend to view the architecture of a J2EE application that supports multiple client technologies:
a. I'd distinguish the Client tier from the Presentation tier. Client tier applications are responsible for rendering business data according to some rendering technology (HTML, XML, etc.) Presentation tier code is responsible for managing presentation logic common to all client-tier applications of a given project and also for maintaining session state, security, etc. Users interact with client tier applications, client tier applications in turn interact with presentation tier code, and presentation tier code interacts with business tier code.
b. Java GUI client applications will probably use a Page Controller to manage flow because of their event-driven nature.
c. Servlet-based client applications could use a Page Controller (ex: ASP.NET, maybe JSF) or a Front Controller (ex: Struts) to manage flow.
d. Presentation-tier code will probably use an Application Controller to manage flow.
I hope I am not confusing things :-)
[ July 20, 2004: Message edited by: Darryl A. J. Staflund ]