Application architecture

EAServer applications are composed of clients and one or more application servers to host business-logic components and Web components. The clients can run on different machines; the components execute on the server machine as part of the EAServer process. Some components, in turn, connect to databases on other machines.

Building EAServer applications is different from building standard client/server applications in that the parts of the application communicate with each other across network lines in a three-tiered architecture.

EAServer three-tiered architecture

In this figure, the client resides on the first tier, the application server and components reside on the second tier, and databases reside on the third tier. Executing methods on a component from the client or another component, retrieving data from databases, and other communications are managed by the application server. Because EAServer handles the details of transactions, threads, security, database connections, and network communication, you can concentrate on writing the business logic and user interface for the components and clients.

Figure 1-1: Jaguar’s 3-tier architecture

As in traditional client/server applications, the client contains the user interface. Unlike client/server applications, however, business logic (such as stored procedures) is separate from both the clients and the database server. Instead, business logic resides in the second tier as components that analyze data, perform computations, or retrieve information from data sources and process it. You design an EAServer application by coding these tasks into an interface and into method prototypes.

A primary benefit of this model is that you can include pre-built components in the EAServer application. If these components have been built outside EAServer, you can import them using EAServer Manager. The client and components are built from the same interface and method prototypes. You can build the client and components concurrently, as long as the client and component development teams notify each other if either of them changes the interface or method prototypes.