Why a new architecture?


Overview

Proposed architecture is multi tier, based in a Model View Controller 2 implemented by Apache Struts. The core of the architecture is Spring Framework, using the inversion of control concept. Ibatis Sql Maps persistence framework is also used to provide data access.

Complementing Struts, we propose the use of AJAX to avoid the application being refreshed in every user change. J2EE solves the problem of cost and complexity in developing multi-tiered services that are scalable, highly available, secure and reliable. It achieves this by providing an open standard architecture through the J2EE Platform and the J2EE Application Model.

This platform allows developers to focus on the business logic while J2EE handles all the low level details. With J2EE, services are easily enhanced and rapidly deployed, allowing business to quickly react to competitive changes. J2EE is an open environment for developing and deploying multi-tiered services where thin-client applications invoke business logic that executes on an application server. It comprises of a set of services, application programming interfaces and protocols. The Java programming language, the Java Virtual Machine and Java Bean components are the foundation of J2EE.

This Platform can be used by your developers to implement your desired applications using the appropriate IDE for code association and simple drag and drop features or we can offer our development expertise to develop and implement your business requirements.


Spring framework

Spring is described as a lightweight framework for java application development, understanding java applications in its broad meaning; you can use Spring to develop Web applications, applets and stand-alone applications.
Spring is based on the principle of Inversion of Control (IoC), IoC is a technique that externalizes the creation and management of components dependencies and delegate the responsibility of code execution to the framework instead of the application.
With the Spring approach the object relationships are defined in an external XML file and the framework create and manage the objects and its dependencies.


Client tier

Related to the client tier in the proposed architecture, HTML / XHTML / DHTML along with JavaScript is generated to provide a rich user interaction without using heavyweight components like applets or ActiveX. The architecture keeps lightweight client philosophy. It submits the data when necessary and uses AJAX to perform smalls updates in the application. With this technology the application can send requests to the server in asynchronous mode, avoiding page reloading. The pages look & feel are implemented using Cascade Style Sheets (CSS). With CSS it is possible to add new styles and modify the existing ones in a quick and easy way.


Presentation tier

Presentation tier architecture is based in Apache Struts. Struts is a framework for Web Application development. This framework provides a good implementation of the Model View Controller Paradigm. In general terms, struts has a single servlet controller that receive and dispatch all the requests in the presentation tier. Depending on certain conditions stored in a XML file, Struts invokes a set of actions. These actions contain calls to the application business logic. Page navigation is defined in the same XML configuration file.


Business tier

Spring Framework makes easy the use of POJO's (Plain Old Java Objects) to implement the business logic in your application. POJO's are simple java classes that implements neither components specification nor special interfaces of any framework.

With regard to local business logic, using this type of object facilitates implementation and they are lighter than EJB, being the latter weightier and harder to code. AOP infrastructure implemented by Spring, combined with other modules provides to POJO the same features than the EJB, with the exception of remoting (example: transaction management in declarative way). In case of having distributed business logic, Spring provides support for EJB' through Spring Context module.


Integration tier

Data access tier is supported by Ibatis Sql Maps, an SQL statement mapper under Apache license. Spring provides an abstraction layer over Ibatis API classes making easier the use of this library.

To access this integration layer, we will use DAO design pattern, with the goal of have the application tiers decoupled. We have interfaces to define the methods and attributes; below these interfaces we have the concrete implementation with IBatis calls. The interfaces layer will be the one that is linking application business logic with data access tier.


Web Services

"Web services provide a standard means of interoperating between different software applications, running on a variety of platforms and/or frameworks."
The term Web services describes a standardized way of integrating Web-based applications using the XML, SOAP, WSDL and UDDI open standards over an Internet protocol backbone.

Why Web Services?


Characteristics

Client-side Ajax

In SmartClient, all presentation duties, and all HTML generation, takes place in the browser. No HTML generation or presentation duties are handled by the server. Once a SmartClient application has loaded, only data is transmitted between the browser and server.
By minimizing server contact, this architecture boosts responsiveness and scalability far beyond what is possible with server-side architectures.

Incremental upgrade

SmartClient components can be easily embedded in existing applications. Grids, forms, trees, dialogs, wizards and other SmartClient components can be added without making architectural changes.
When embedded in this fashion, SmartClient components are fully functional, still capable of drag and drop, dynamic data binding, data paging and adaptive client-side operations.

Object-oriented

SmartClient provides object-oriented, JavaScript APIs with a true class system. SmartClient components are created via XML or JavaScript, and exist as JavaScript objects that manage presentation automatically.
Using standard object-oriented approaches, you can extend, customize and create new SmartClient components without ever learning low-level Ajax techniques or doing cross-browser testing and debugging.