Title: Overview of ADO.NET Whidbey
1Scalable Development, Inc. Building systems today
that perform tomorrow.
Designing BuildingWindows Serviceswith VB.NET
- Wallace B. McClure
- Scalable Development, Inc.
2.NET Experiences
- PDC 2000 Build (July 2000).
- Visual Studio 1.0 Beta 1 (November 2000).
- Book began (January 2001).
- Visual Studio 1.0 Beta 2 (June 2001).
- First Production ASP.NET App (July 2001).
- Production Windows Service (November 2001). Runs
today. - 4 Production Applications by shipment.
- Multiple running applications.
3.NET Resources
- ASP.NET www.asp.net
- AspAdvice www.aspadvice.com
- Windows Forms www.windowsforms.net
- Architecture msdn.microsoft.com/architecture
- .NET News www.dotnetwire.com
4What are Windows Services?
- Applications (Database, Web Server, ).
- Good for long running / complicated operations.
- Run all the time.
- No User Interface.
- Run within their own security context.
- Limited access to local resources.
- Limited access to remote resources.
- Debugging.
- Non-interactive.
5Design Guidelines
- Consistency.
- No popup messages.
- Information/Errors need to be written to
somewhere. - EventLog.
- Database.
- Be careful blocking.
6Types of .NET Applications
- ASP.NET.
- Web Services.
- WinForms.
- Components.
- Windows Services.
- Others.
7.NET Support for Services
- System.ServiceProcess namespace.
- Inherit from the ServiceBase Class.
- Installation.
- ServiceController Class Allows communication from
authorized user (WinForms, ASP.NET, or other) to
a Service (thru SCM).
8Languages Support
- C (Managed Unmanaged).
- Visual Basic.
- C.
- Other .NET Languages.
9Parts of a .NET Windows Service
- Service Control Manager (SCM).
- System.ServiceProcess.ServiceBase class
- Events.
- Installation.
- Process Installation.
- Service Installation.
10Events in ServiceBase
- OnStart().
- OnStop().
- OnPause().
- OnContinue().
- OnShutdown().
- OnPowerEvent().
- OnCustomCommand().
11OnStart() Event
- Called when the Service is issued the start
command. - VB SyntaxProtected Overridable Sub OnStart
- ( _ByVal args() as String )
- Hard to Debug By Default.
12Debugging the OnStart() Event
- Create a dummy service that is a part of your
process. - Start the dummy service to start the process.
- Attach to running process.
- Place breakpoint.
- Start real service.
13OnStop() Event
- Called when the Service is issued the stop
command. - Protected Overridable Sub OnStop().
14OnPause() Event
- Called when the Service is issued the pause
command. - Protected Overrideable Sub OnPause().
15OnContinue() Event
- Called when the Service is issued the continue
command. - Protected Overrideable Sub OnContinue().
16OnShutdown() Event
- Called when the System sends the shutdown command
to all Applications specifying that a system
shutdown is inprogress. - Similar to the OnStop() event.
- Protected Overrideable Sub OnShutdown().
17OnPowerEvent() Event
- Called when the computers power status has
changed. Typically, this applies to a laptop
computer when it goes into a suspended state. - Not the same as a system shutdown.
- Protected Overrideable Function OnPowerEvent(
ByVal powerStatus as PowerBroadcastStatus ) as
Boolean - Boolean return value is a response to a
QuerySuspend broadcast. - True Application is in a state where a suspend
is ok. False suspend is not ok. - PowerBroadcastStatus is an enumertion with 9
values.
18OnCustomCommand() Event
- Executed when a custom command is passed from the
SCM to the service. - Protected Overridable Sub OnCustomCommand( ByVal
command as Integer ) - Command values between 128 255.
19Security Context
- Service runs within a defined security context
(UserId/PassWord). - What you do not necessarilyhave access to
- Desktop.
- Remote Resources.
- Mapped Drives.
- What you do have access to
- Local FileSystem.
- Network Protocols (TCP/IP, ).
- Database (ODBC, OleDb, MP).
20Custom Commands /ServiceController
- Use the ServiceController class.
- ExecuteCommand( ByVal command as Integer )
method. - Start, Stop, Pause, Continue.
- MachineName, ServiceName, Status properties.
21Installation
- Each executable must have a process installer.
- Each service within a process must have a service
installer. - Command line utility (installutil.exe)
22App.Config
- XML Format.
- Excellent for read only information.
23Great, Now What canYou do with a Service?
- Listen for events to occur.
- Network requests.
- Timer countdown.
- Messages arriving in a message queue.
- File system changes.
- Other.
24Example
- Timer.
- When the Timer counts down to zero, an event
fires and our application performs an operation. - No continual polling occurs, no blocking, and no
extra processing occurs on the system.
25Whats Not to Like?
- Requires the .NET Framework.
- If a framework exception occurs when the
framework stops, the Windows Service stops.and
there is nothing within the framework to restart
that Windows Service. - Problem is rare, but possible. (ODP.NET
9.2.0.2.100.0 users, problem has been resolved)
26Monitoring a Windows Service
- Need something that wont stop.
- Can do it with .NET and a Console application.
- Drop back to COM/API.
- Use WMI Scheduled Tasks.
- Use ServiceController class.
- Run every few days/hours/minutes to monitor the
status of your Service.
27Things to look at / Last Thoughts
- Event Processing vs. Blocking.
- EventLog.
- Multiple Threads of Execution.
- Weak References.
- Performance Monitor Integration.
- Nothing wrong with Interop.
28Questions?
Scalable Development, Inc. Building systems today
that perform tomorrow.
- Scalable Development, Inc.
- Consulting Development Services.
- http//www.scalabledevelopment.com
- 865-693-3004.
- wallym_at_scalabledevelopment.com
END