An application server is a server which service is to launch applications?
What kind of applications? How is an application server different than a shell, or a cron program, or any of the other ways that one can start an application?
Like a shell or a cron program, an application server can deliver services around an application. But an application server has a manageable database of applications and can spread applications' execution across a network, sending back the result of the execution to the caller.
It seems easy to design an application server for Tcl scripts:
I've seen such a server (for binary applications) in the 80's.
james garrison (Qualcomm) 2003-08-21:
Interesting, we have developed a 3-Tier architected system (all in Tcl) where we have a thin client residing on the desktop that contacts a Service Provider Server and requests a application, from which the Service Provider will deliver the files to the client and the client runs the application...
The application's components (scripts, images, libraries, etc.) are stored and managed in a database (called a framework). We even provide the user with multiple environments (production, test, and development) to try out the application early in the design phase.
Each application (if required) contacts the Service Provider for services (database access, upload/download files, etc.), so the client does not need to have ODBC, Oracle, etc. to be installed or configured.
Brent Welch 2003-08-26:
TclHttpd is an application server for Tcl. It is a web server that is easily extended by adding Tcl code to it. You have the freedom to implement whatever semantics you want for the URL space it implements. As one example, its "direct URL" feature maps a URL onto a Tcl Procedure call, and maps the CGI form values onto the procedure's parameters. The resulting page is simply whatever the return value of the procedure is. No muss, no fuss. There are many other ways to extend the server, and you can use it as a vanilla web server as well.
It is worth noting that you can easily embed TclHttpd inside some other application. This flips around the traditional relationship of Apache and its plugins/CGI. Instead of having a big complex web server that you plug into, you have a simple, lightwight web server you can hook into your existing application to get a web interface to it.
I think that TclHttpd is not an application server but a traditional server: it executes scripts onto the server, not the client.
An application server sends the script to the client where the script is executed.
In turn, the script can ask the server or the client to execute some service and so balance the resources load between the client and the server.
But it's true that a HTML page can contain code that is executed on the client side...
TV: Not being uninterested, I too wonder what the idea of an application server would refer to, though I agree decoupling various parts of an application makes sense. Looking at unix/linux, you'd have rsh or currently ssh, where you can execute programs on remote machines. We have the X server of course, and probably more than a few programs which separate user interface parts from application core code.
That is implicit when one runs a distributed application, which means that the computations or anyway parts of the program are running on more than one machine. Under unix, and currenly under I guess most os-es one can also have multiple processes as part of a single application, sometimes unnoticable, which can communicate through a parent process or using general IPC facilities (pipes, shaed memory, streams/sockets), for the reasons of duplicating behaviour, process scheduling indepencence or maybe security. Also complex setups of communicating processes can be advantages as program model. I used at least two graphical programming environments which applied that principle at the process level, where graphs of connected processes can do data/image processing tasks: Khoros and AVS.
MR: The definition used by ulis is contrary to standard industry terminology, where an application server provides a set of services to build server-side apps with; it has nothing to do with sending scripts to the client to run. These app servers are typically an httpd server plus additional functionality to make certain common things (e.g. security, logins, persistence) easier for app developers. Thus according to the standard terminology, TclHttpd would certainly qualify. Just to clear up the confusion here.
ulis: I think that an application server is not a standard server. Maybe better to use an other word that server. Dispatcher or scheduler?
ulis: Down around the Web, the definition of an application server is far away from mine: it's an application development and deployment platform for Web applications (http://www.stweb.org/ , http://www.oracle.com/appserver/index.html?content.html , http://www.theserverside.com/reviews/matrix.jsp )
Let me try to be more precise about what is an application server as the one I seen.
An application server accepts requests of the form:
"Please, launch me an application with the following constraints (some can be left undefined):
The Tcl interest of such a server is that it can be easily designed with Tcl, for Tcl scripts. The technical interest is that the load can be balanced between the server and the client. The economical interest is that one can imagine low-cost access to up-to-date sophisticated applications thru such application servers.