OK, here's my attempt at answering your question:
AppServer allows you to create 3-tier (or n-tier) applications where the client does not have (or require) a database connection.
The client runs a Progress procedure on the AppServer and this procedure returns the result to the client by means of parameters (the 'normal' kind and/or static or dynamic temp-tables).
This means that, for instance, when a user wants to browse some customers:
- The user runs a procedure on the client that contains the browse
- The client procedure runs a procedure on the AppServer that performs the actual query. This AppServer procedure stores the results in a (dynamic or static) temp-table (output parameter).
- When the AppServer procedure is finished, the results are returned in the temp-table, after which the client procedure can open a query on this temp-table and show the results in the browse
Of course the above is just the most simple example (it gets more complicated when adding, updating and deleting data).
Main things to remember are:
- The client (which is just some Progress session) does not require a database connection. Therefore the client is completely unaware of any data, validations etc and all communication between client-side and server-side procedures is done by means of (temp-table) parameters
- You will have to think a bit different when programming with/for the AppServer because you have to separate the User Interface from the business logic and make sure the business logic contains no UI interaction - not even a simple message statement
- Your client can run programs on the AppServer, but the AppServer cannot run anything on your client
- Unless you want to start using TCP sockets, there is no other way for the Client and AppServer to communicate than via RUN statements with input/output parameters and initiated from the client
- You can use the Progress WebClient or any other normal Progress client(Runtime, Provision, Character client, WebSpeed etc) when using AppServer.
- WebClient is a free - yes, it really is

Progress runtime that you can download from the Progress website (or install from your Progress installation CDs). Some people tend to think that WebClient will run in a Web Browser (as the name implies)... but it doesn't. It is a normal GUI Progress client with the following restrictions:
1. You cannot use it to connect databases
2. It is only available for 32 bit MS Windows
3. It does not include any of the normal tools you may have (Editor, Dictionary, AppBuilder etc - logical, it's just a bare bone runtime)
If you are thinking about starting to use AppServer, have a look at the documentation (available in PDF format on the Progress website:
http://www.progress.com/v9/documentation/index.htm). Especially "Building Distributed Applications Using the Progress AppServer" is an interesting read.
If you like, you can use the "smart stuff" to program, or if like me you are not into that, you can do without. Alternatively Progress has "Dynamics", which is (supposed to be) a development platform for creating dynamic applications (which uses smart objects).
I hope the above makes some sence and that I have not forgotten to mention anything or given you any false information. I am sure if I have someone out there will slap me on the wrist :awink: