Server technology started with transaction-processing systems in the sixties. Database Management Systems (DBMS) soon adopted
mechanism like multi-process and multi-threading. In distributed systems, the remote procedure call also needed process structures
at the server side. The same is true for file servers, object servers (CORBA), Web servers, application servers, EJB containers,
and Web
... [Show full abstract] Services. All these systems support a request-response behavior, sometimes enhanced with a session concept. They are
facing thousands of requests per second and must manage thousands of session contexts at the same time. While programming
the applications that run on the servers and actually process the requests should be as simple as possible, efficiency must
still be very high. So a general programming environment should be defined that is easy to use and, on the other hand, allows
for the efficient execution of thousands of program instances in parallel. This contribution will identify mechanisms that
have been developed in the context of transaction processing and database management. It will then generalize them to server
processing of any kind. This includes program structures, context management, multi-tasking and multi-threading, process structures,
program management, naming, and transactions. The driving force behind the discussion is to avoid the re-invention of the
wheel that far too often occurs in computer science, mostly in ignorance of older and presumably outdated systems.