From: Tobias DiPasquale Date: 2001-12-08T13:21:11+09:00 Subject: [ruby-talk:27894] Re: App server for Ruby? Todd Gillespie wrote > Does anyone actually have a necessary and complete definition of > 'application server' that is not marketroid? > > This is a real question -- I have heard this thrown around in so many > places that I don't even know what it means anymore. If a person > wishes to write a Ruby application server, what would that actually > mean? > I cannot tell you what an app server is for sure. Dictionary.com didn't have a definition. ;-) As far as I know, from what they tell me in class, it could be a web server, a telco switching station or a remote-control car. It's sort of like legacy code: legacy code is any code you or someone else has written up to five seconds ago. However, RubiCTM (http://rubictm.linuxninja.net/) is not an "app server". Mostly I hear this term in reference to dynamic Web content generating something-or-others. My project is a "component transaction monitor", which has something of a more tight definition. A CTM is a combination of three technologies: message-oriented middleware (the ability to have components respond to asynchronous messages), a transaction monitor (which really means a DISTRIBUTED transaction monitor, since these days, most databases have transactional capabilities inherent) and a component broker. The component broker is usually what people don't get, and it is rather ethereal when you think about it. But my understanding of a component is that it is an object, or group of objects, that relies on each other and the underlying system (broker) to complete some basic task in the system as a whole, whether that system be the application you are working on, or the whole Internet itself. The OMG has pages and pages of material describing components, but that's basically what it is in a nutshell. Thus, a component broker's job is to provide certain basic services to components, such as persistence, security (mostly access control, via ACLs) and interaction with the transaction monitor and MOM pieces of the CTM, not to mention the actual ability to be accessed from remote. (whether it be via RPC, RMI, XML-RPC, IIOP, SOAP, whatever...) Some of the major "app servers" you are no doubt hearing about are actually CTMs in disguise, ported and updated from the salad days of CORBA. For instance, WebSphere is a Java-powered reincarnation of their CORBA-powered ComponentBroker, and is a full-fledged CTM (having all three of the pieces I mentioned above). The market leader, BEA's WebLogic is a similar story, being translated to use EJB and JSP technology from their original purchase, a CTM called M3 (which was powered by CORBA). Most of the major companies can afford to put the development time and effort into creating a full-fledged CTM, so they do, because features sell. However, something like Zope or Tomcat is severly limited when compared to these big boys, and cannot compete in the feature area, even though they might suit your needs perfectly fine! (Zope/Tomcat are cool, I use them both) However, the marketing is what is really making it hard to tell what these things are. Chances are, if it has MOM-capability, ORB-functionality and is TPM aware, it's a CTM. If not, it's a dynamic web server technology of some sort. That's basically what I can figure... Hope that helps. -- Tobias DiPasquale Solaris System Administrator Electrical and Computer Engineering Dept. Villanova University mailto: anany@ece.vill.edu tel: 610-519-5109