From: Tobias DiPasquale Date: 2001-12-09T05:28:07+09:00 Subject: [ruby-talk:27975] Re: App server for Ruby? Todd, The term you are thinking of is a "Web application server", or "Internet application server". A prefix qualifier is necessary to truly discern the nature of the kind of app server you are talking about. If no qualifier is used, then truly, an OS *would* be an app server. But, lemme give it a shot: An app server such as you are referring to necessarily relies on the definition of the N-tier application architecture; that is what they all have in common. Here is its definition: 'N-tier application architecture provides a model for developers so they can create a flexible and reusable application. Because an application is broken down into tiers, developers only have to modify or add a specific layer, rather than rewriting the entire application over if they decide to upgrade or change technologies. In the term "N-tier," "N " implies any number (like 2-tier, or 4-tier or any number of tiers used in your architecture). Application architectures are part of Layer 7 of the OSI reference model.' Given this, we can now delineate the common services found in application servers that are distributed as such today: 1. They provide network services to allow for resolving object locations and determining/invoking the methods of said objects. This functionality relies on the use of interfaces to export methods to remote clients. These are invariably implemented via various RPC technologies. 2. They provide the capacity to persist objects over time, most often through the interaction with a DBMS, but also via XML or flat files. 3. They provide access control mechanisms for objects contained within, allowing object and container alike to manage access to services. 4. They provide the ability to allow objects to partake in transactions, either on a single or multiple resources. These resources may be located locally or remotely to the server itself. These commonalities apply to all "application servers" distributed as such today. Systems in this classification include all full implementations of the EJB specification, all full implementations of the CORBA ORB specification and implementors of the Open Group's DCE, such as Microsoft's COM+. The ability to exploit these features relies on the use of a specific API, which is usually vendor- or specification-dependent. The above is an attempt to clarify what the term "application server" means in context today, based on research I have done on component transaction monitors/application servers over the past four months. Also note that this definition would not cover such things as Tomcat, IIS, mod_ruby or the like, by themselves. Hope this helps, Todd. -- Tobias DiPasquale Solaris System Administrator Electrical and Computer Engineering Dept. Villanova University mailto: anany@ece.vill.edu tel: 610-519-5109