Service Applications vs. Other Visual Studio .NET Applications
Service applications function differently from many other project types in several ways:
The compiled executable file that a service application
project creates must be installed on the server before the
project can function in a meaningful way. You cannot debug
or run a service application by pressing F5 or F11; you
cannot immediately run a service or step into its code.
Instead, you must install and start your service, and then
attach a debugger to the service's process. For more
information, see Debugging Windows Service Applications.
Unlike some types of projects, you must create
installation components for service applications. The
installation components install and register the service
on the server and create an entry for your service with
the Windows Services Control Manager. For more
information, see Adding Installers to your Service
Application.
The Main method for your service
application must issue the Run command for the services
your project contains. The Run method loads the services
into the Services Control Manager on the appropriate
server. If you use the Windows Services project template,
this method is written for you automatically. Note that
loading a service is not the same thing as starting the
service. See Service Lifetime below for more information.
Windows Service applications run in a different
window station than the interactive station of the
logged-on user. A window station is a secure object that
contains a clipboard, a set of global atoms, and a group
of desktop objects. Because the station of the Windows
Service is not an interactive station, dialog boxes raised
from within a Windows Service application will not be seen
and may cause your program to stop responding. Similarly,
error messages should be logged in the Windows event log
rather than raised in the user interface.
The
Windows Service classes supported by the .NET Framework do
not support interaction with interactive stations, that
is, the logged-on user. The .NET Framework also does not
include classes that represent stations and desktops. If
your Windows Service must interact with other stations,
you will need to access the unmanaged Windows API. For
more information, see Window Stations and Desktops in the
Platform SDK documentation.
The interaction of the Windows Service with the user or other stations must be carefully designed to include scenarios such as there being no logged on user, or the user having an unexpected set of desktop objects. In some cases, it may be more appropriate to write a Windows application that runs under the control of the user.
Windows Service applications run in their own security
context and are started before the user logs into the
Windows computer on which they are installed. You should
plan carefully what user account to run the service
within; a service running under the system account has
more permissions and privileges than a user account.
Cheers..
Suresh Behera