I’ve always found it very tough to explain what is an application server and
what is a component even to people that are familiar with software development.Here is the trick ... In modern software applications, when you want to write a reusable piece of code, it is often called a module or a component. It is also called a “Business component” when it represents a concept of the business domain (e.g. a CardHolder or an Account for a banking system, a Patient or a MedicalAct for health systems, etc.). When you write such a piece of code, you cannot spend 100% of your time just writing “Business code”. You also have to write “Technical code” for many technical aspects :
- Communication (Synchronous or asynchronous) with other pieces of code
- Registration or searching in a directory so that the other components can find you or for you to find the other components you want to communicate with.
- Security management (Who’s who, Access Controls, Encryption, ...)
- Transaction management
- Data persistency (storing or retrieving data from a database).
Even if you rely upon reusable services offered by a framework, you still have to write at least all the lines of codes needed to call the services, check the results, pilot the workflow, etc. All these technical lines of code could represent more than 80% of your total code. Only 20% are just dealing with the real business aspects. Even more painful is that all the other developers that are writing business components also have to write 80% of THE SAME TYPE of technical lines of code. They may not be the exact same lines of code, but it is very likely that we can find some patterns and templates in them.This is where the component approach and the idea of application server come into play.
An application server integrates a set of standard reusable services and provides the developers with some standard and pre-written code (we call that programming model) to drive these services leaving the developers with the task to write only the 20% of business code. The code that drives the services is called the Container. The only thing you have to do is to configure the container to pilot the services the way you want by choosing among predefined options.

Even for long time software developers this is not something easy to understand. Here is the metaphor I use :
Lets say you want to start your own business (e.g. You want to be a software architect consultant). Do you think you will be able to spend 100% of your time just doing the service you want to sell ? Of course not. You will have to do some marketing, sales activities, invoicing, accounting, cleaning, photocopies, etc. You will probably only be able to spend 20% of your time doing your real business, all the remaining 80% being used to execute administrative and technical tasks but as well as mandatory for your business to run properly.
What can you do to improve your working ratio ?
- Subcontracting is an option. But you’ll still have to spend time to send requests to your sub-contractors, check what they have done and coordinate all of them. Maybe you will now be able to spend 50% of your time doing your core business. Subcontracting is just like reusing non integrated technical services. It is better than rewriting everything but you still have to pilot them.
Another option is to jump into a “Business Center” such as Regus for example. In these Business centers you will rent an office for you to work, but you will also find all the services you need in the building. The front desk will receive your visitors and drive them to your office and so they will for all the other visitors of all the other companies of the business center. At the first floor there is a Marketing service that you can use.At the second floor there is an accounting service available for all the companies hosted in the building.When you will integrate such a business center, you will be offered to choose among a set of predefined options for all the services. For example, regarding the Security service, you may choose between :No control: send all my visitors directly to my officeIdentity control : check my visitors IDs and record the informationHigh level Security : Check Ids, record everything, and have a guard accompany my visitors to and from my office.Even more important, you will be assigned a manager that has the responsibility to make all the services run smoothly according to your needs (options). Of course, if you want to start your business in such a Business center, you need :To have standard needs (otherwise the technical services will not be able to serve you)To respect some standards (e.g. you need to use standard forms to communicate your data to the accounting service).





