1 / 28

Wallace B. McClure Scalable Development, Inc.

Scalable Development, Inc. Building systems today that perform tomorrow. Designing & Building Windows Services with VB.NET. Wallace B. McClure Scalable Development, Inc. .NET Experiences. PDC 2000 Build (July 2000). Visual Studio 1.0 Beta 1 (November 2000). Book began (January 2001).

paul2
Download Presentation

Wallace B. McClure Scalable Development, Inc.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Scalable 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

  4. What 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.

  5. Design Guidelines • Consistency. • No popup messages. • Information/Errors need to be written to somewhere. • EventLog. • Database. • Be careful blocking.

  6. Types 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).

  8. Languages Support • C++ (Managed & Unmanaged). • Visual Basic. • C#. • Other .NET Languages.

  9. Parts of a .NET Windows Service • Service Control Manager (SCM). • System.ServiceProcess.ServiceBase class • Events. • Installation. • Process Installation. • Service Installation.

  10. Events in ServiceBase • OnStart(). • OnStop(). • OnPause(). • OnContinue(). • OnShutdown(). • OnPowerEvent(). • OnCustomCommand().

  11. OnStart() Event • Called when the Service is issued the start command. • VB Syntax:Protected Overridable Sub OnStart ( _ByVal args() as String ) • Hard to Debug By Default.

  12. Debugging 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.

  13. OnStop() Event • Called when the Service is issued the stop command. • Protected Overridable Sub OnStop().

  14. OnPause() Event • Called when the Service is issued the pause command. • Protected Overrideable Sub OnPause().

  15. OnContinue() Event • Called when the Service is issued the continue command. • Protected Overrideable Sub OnContinue().

  16. OnShutdown() 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().

  17. OnPowerEvent() Event • Called when the computer’s 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.

  18. OnCustomCommand() 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.

  19. Security 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).

  20. Custom Commands /ServiceController • Use the ServiceController class. • ExecuteCommand( ByVal command as Integer ) method. • Start, Stop, Pause, Continue. • MachineName, ServiceName, Status properties.

  21. Installation • Each executable must have a process installer. • Each service within a process must have a service installer. • Command line utility (installutil.exe)

  22. App.Config • XML Format. • Excellent for read only information.

  23. Great, 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.

  24. Example • 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.

  25. What’s 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)

  26. Monitoring a Windows Service • Need something that won’t 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.

  27. Things to look at / Last Thoughts • Event Processing vs. Blocking. • EventLog. • Multiple Threads of Execution. • Weak References. • Performance Monitor Integration. • Nothing wrong with Interop.

  28. Questions? Scalable Development, Inc. Building systems today that perform tomorrow. • Scalable Development, Inc. • Consulting & Development Services. • http://www.scalabledevelopment.com • 865-693-3004. • wallym@scalabledevelopment.com END

More Related