I know there are a number of articles on the Internet that talk about Windows Services, but unfortunately I didn't find any of the articles which we can call a complete Guide to Windows services. This made me come up with this series of articles.
In this series, we will explore and understand the architecture, working, installation, maintenance and issues of Windows services.
Before starting this article, let me present the whole outline which we are going to follow:
Windows services enable you toperform tasks that execute as different background processes. Itexecutes in its own process space until a user stops it or computershuts down. This kind of application does not have a user interface. Itis installed in the registry as an executable object.
Now let’s have a look at the Windows service architecture. The Windows service architecture consists of three components:
An application that consists of one or more services that provides the desired functionality.
An application that enables you to control the behavior of a service.
A utility that enables you to control the services that are installed on a computer.
The System.ServiceProcess
namespace contains classes that enable you to create, install, implement and control Windows service. After you create Windows services, you use ServiceInstaller
and ServiceProcessInstaller
classes to install Windows service. You can view all the registered service applications in the Windows registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services .
Windows services can be categorized on the basis of number of services running in process space. The service that uses a single process space is called Win32OwnProcess
service, whereas the services that share a process with other services are called win32ShareProcess
services.
The Windows services can be either in start, stop, paused and continue states. In addition, the services can be in pending state. A pending state indicates that a command was issued but not completed.
You create a Windows service application by using the classes of the System.ServiceProcess
namespace.
You override the methods in the ServiceBase
class to create services. The methods of this class enable you to specify the behavior of your service application.
These classes enable you to define the process of installing and uninstalling your service application.
The methods of this class enable you to manipulate the behavior of your service. You can use its methods to start, stop and control service.
To create a Windows service, you create a class that extends the System.ServiceProcess.ServiceBase
class. You override the functions of ServiceBase
to customize the behavior of your service application.
public class DBWriter : System.ServiceProcess.ServiceBase
I am summarizing these methods as follows:
You override this method to specify the tasks your service performs when it starts. You can set your service to start when the computer on which it is installed reboots. To do this, you set the StartType
property of the service. You use the members of the servicestartmode enumeration to define whether the service automatically starts when the computer starts, starts when a user manually starts it or is disabled.
/// <summary>
/// Set things in motion so your service can do its work.
/// </summary>
protected override void OnStart(string[] args)
{
//Create Transaction File and Close it
FileStream fsTramsaction = File.Create ("c:\\Transaction.tmp");
fsTramsaction.Close();
//Create Customers DB File if it does not Exist
if (! File.Exists("c:\\customers.db"))
{
FileStream fsCustomers = File.Create ("c:\\customers.db");
fsCustomers.Close();
}
//Write to Transaction Log
myLog.WriteEntry("DBWriter Service Started Successfully on " +
System.DateTime.Now.ToString() , EventLogEntryType.Information );
}
You override this method to specify the tasks your service performs when it pauses.
You override this method to specify the tasks your service performs when it stops. When the stop event occurs, the service control manager checks the value of the CanStop
property and passes the Stop command to the onstop
method on the basis of its value.
/// <summary>
/// Stop this service.
/// </summary>
protected override void OnStop()
{
// Delete the Transaction.tmp File
File.Delete("c:\\Transaction.tmp");
//Set the Performance Counter value to 0
this.myPerformanceCounter.RawValue = 0;
//Write Entry to Event Log
this.myLog.WriteEntry("Service Stopped Successfully on " + DateTime.Now ,
EventLogEntryType.Information);
}
You override this method to specify how your service behaves when it restarts after pausing.
You override this method to specify the tasks your service performs when computer is running on shuts down.
You override this method when you want a service to accept custom commands. The method takes an integer parameter on the basis of which a particular action is taken.
protected override void OnCustomCommand(int command)
{
base.OnCustomCommand (command);
switch (command)
{
case(201) : Commit();break;
case (200) : RollBack();break;
}
}
You override this method to specify how your service performs when it receives a power management event such as low battery.
In the next article, we will see how to Install and Uninstall Windows service, and Control Windows Service. We will also explore the security contexts of this type of application.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
聯(lián)系客服