Singleton Objects using VB.NET

In this article I will explain you about Singleton Objects using VB.NET.
  • 2170

Singleton objects ensure that a class has only one instance and provide a global point of access to it. Some classes must have exactly one and only one instance in a system. A global variable makes an object accessible, but it does not keep you from instantiating multiple new objects. A better solution is to make the class itself responsible for keeping track of its sole instance. The class can ensure that no other instance is created by intercepting requests to create new objects, and it can provide a way to access the instance. The Singleton patterns are adequate when there must be exactly one instance of a class and it must be accessible from a well-known access point. They are adequate as well when the sole instance should be extensible by subclassing and clients should be able to use an extended instance without modifying their code.

The term singleton is a concept where a global object services all requests. The Singleton concept is a taken from Design Patterns. It is similar to CWinApp in Microsoft Foundation Classes-the one and only application object. Although there can be many printers in a system, there should be only one printer spooler. There should be only one file system and one window manager. The Singleton object server is activated only once, and its destructor is never called unless we kill the server object explicitly. Notice that the variable returned by the server is not reset between different invocations of the client. This behavior demonstrates that the server does indeed preserve its state during its lifetime. Let's develop a sample Singleton application. Listing 23.11 shows the remote, singleton object to be created

Listing 23.11: Object Code2 (Listing23.11.vb)

// compile with:
// csc /t:library /out:object2.dll Listing23.11.vb
Namespace ExampleRemoting
    Public Class DateTimeServer
        Inherits MarshalByRefObject
        Private Shared iSayac As Integer = 0
        Public Sub New()
            Console.WriteLine("DateTime server activated")
        End Sub
        Protected Overrides Sub Finalize()
            Try
                Console.WriteLine("DateTime server Object Destroyed...")
            Finally
                MyBase.Finalize()
            End Try
        End Sub
        Public Function MyMethod(ByVal name As [String]) As [String]
            Dim strMessage As [String] = "Hi " & name & ". Here is the current DateTime: " &
            DateTime.Now
            Console.WriteLine(strMessage)
            Return strMessage
        End Function
 
        Public Function BeniSay() As Integer
            ' lock this object to prevent concurrent updates
            ' to single instance lock(this)
            If True Then
                Console.WriteLine("Counter: " & System.Threading.Interlocked.Increment(iSayac))
                Return iSayac
            End If
        End Function
    End Class
End Namespace

Conclusion

Hope this article would have helped you in understanding Singleton Objects using VB.NET. The next article will explain to you the how we use Singleton Objects with SOAP.

Categories

More Articles

© 2013 dotNetheaven. All rights reserved.