In IIS7, there are numerous things you can do that seem to restart the website. I am unclear about exactly how they are all related.
- run iisreset from the command line
- refresh a website
- recycle an app pool
- restart a website
Can someone explain exactly what each one does please?
iisreset will stop and start the World Wide Web Publishing Service. This, of course, applies to all of your application pools. I'm sure you noticed a process being created for each application pool. This process will handle requests for all websites associated with it. When you recycle an application pool, IIS will create a new process (keeping the old one) to serve requests. Then it tries to move all requests on the new process. After a timeout the old process will be killed automatically. You usually recycle your application pool to get rid of leaked memory (you might have a problem in your application if this needs to be a regular operation, even though it is recommended to have a scheduled recycle). As for restarting a website, it just stops and restarts serving requests for that particular website. It will continue to serve other websites on the same app pool with no interruptions.
If you have a session oriented application, all of the above will cause loss of session objects.
Refreshing a website has no effect on the service/process/website and is merely a UI command to refresh the treeview (maybe you added a directory you don't see in the management console).
To answer your two other questions:
iisreset stops and starts the whole webserver. That's everything - all your users lose their connections while this is happening.
Recycling an application pool stops and started the processes associated with the application(s) that are in that pool. Strictly speaking, it doesn't have anything to do with the website (except for the active content from those applications.)
@Vlad Mucescu gave a good answer but it seem the part where he describes recycle of an application he speaks about Overlapped Recycling. There are two recycling types: Process Recycling and Overlapped Recycling (source MSDN):
Process Recycling
Worker process isolation mode offers process recycling, in which IIS automatically refreshes Web applications by restarting their worker processes. Process recycling keeps problematic applications running smoothly, and is an especially effective solution in cases where it is not possible to modify the application code.
Process recycling, which follows the occurrence of a recycling event, can happen in two ways.
If the worker process currently serving the application pool terminates, then the WWW Service (W3SVC), acting as the parent process to the worker processes, restarts a new process in its place.
When the worker process terminates, a new one is started simultaneously. This type of recycling is called overlapped recycling. It is the default for all application pools.
Overlapped Recycling
In an overlapped recycling scenario, the process targeted for a recycle continues to process all remaining requests while a replacement worker process is created simultaneously. The new process is started before the old worker process stops, and requests are then directed to the new process. This design prevents delays in service, since the old process continues to accept requests until the new process has initialized successfully, and is instructed to shut down only after the new process is ready to handle requests.