How to create a remote server by using Visual Basic .NET (300951)
The information in this article applies to:
- Microsoft Visual Basic .NET (2003)
- Microsoft Visual Basic .NET (2002)
This article was previously published under Q300951
For a Microsoft Visual C# .NET version of this article, see 307445.
For a Microsoft Visual Basic
6.0 version of this article, see 266717.
IN THIS TASKSUMMARY This article illustrates how to create a simple, remote
server that another application can access. The application that accesses this
server can be located on the same computer, on a different computer, or on a
different network. The remote server is broken into two parts: the server
object and the server application. The server object is the object with which
the client communicates, and the server application is used to register the
server object with the Remoting runtime.
back to the top
Requirements The following list outlines the recommended hardware, software,
network infrastructure, and service packs that you need:
This article assumes that you are familiar with the following
topics:
- Visual Studio .NET
- Visual Basic .NET
- Networking
back to the top
Create a remote server object The first step to creating the server application is to create
the server object. The server object is what the client application
instantiates and communicates with on the server computer. The client
application does this through a proxy object that is created on the client. In
this sample, the server object resides in a Class Library (DLL) and is called myRemoteClass.
- Create a new Class Library application in Visual Basic
.NET. Class1 is created by default.
- In Solution Explorer, rename the code file Class1.vb to
ServerClass.vb.
- Open ServerClass.vb, and rename Class1 to myRemoteClass. myRemoteClass should inherit from the MarshalByRefObject class. This class should appear as follows:
Public Class myRemoteClass
Inherits MarshalByRefObject
End Class
- Add a public method to myRemoteClass that takes a string, displays a message to the console with a
value of the string, and returns True if the string is not empty.
Public Class myRemoteClass
Inherits MarshalByRefObject
Public Function SetString(sTemp As String) As Boolean
Try
Console.WriteLine("This string '{0}' has a length of {1}", sTemp, Len(sTemp))
Return (sTemp <> "")
Catch
Return (False)
End Try
End Function
End Class
- Build the project to create the ServerClass.dll
assembly.
- Save and close the project.
back to the top
Create a remote server application After you create the server object with which the client will
communicate, you must register this object with the Remoting framework. When
you register the object, you must also start the server and have the server
listen on a port for clients to connect to that port. To do this, you need a
project type that creates an executable. The server object is included in a
separate project so that you can easily reference the server object from the
client project. If you include the server object in this project, you cannot
reference it because references can only be set to DLL files.
- For simplicity's sake, create a new Console Application in
Visual Basic .NET to start the remote server. Module1 is created by
default.
- In Solution Explorer, rename the file Module1.vb to
ServerObject.vb.
- Add a reference to the System.Runtime.Remoting namespace.
- Add a reference to the ServerClass.dll assembly that you
created in the previous section.
- Use the Imports statement on the Remoting, Remoting.Channels, and Remoting.Channels.Tcp namespaces so that you are not required to qualify declarations
in those namespaces later in your code. You must use the Imports statement prior to any other declarations.
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
- Declare the appropriate variable. To do this, declare and
initialize a TcpChannel object that listens for clients to connect on a certain port,
which is port 8085 in this example. Use the RegisterChannel method to register the channel with the channel services. Add the
following declaration code in the Main procedure of the default module:
Dim chan As TcpChannel = New TcpChannel(8085)
ChannelServices.RegisterChannel(chan)
- Call the RegisterWellKnownType method of the RemotingConfiguration object to register the ServerClass object with the remoting framework, and specify the following
parameters in the code:
- The full type name of the object that is being
registered (which is ServerClass.myRemoteClass in this example), followed by the assembly name ServerClass. Specify both the name of the namespace as well as the class
name. Because you did not specify a namespace in the previous section, the
default root namepace is used.
- Name the endpoint where the object is to be published
as RemoteTest. Clients need to know this name in order
to connect to the object.
- Use the SingleCall object mode to specify the final parameter. The object mode
specifies the lifetime of the object when it is activated on the server. In the
case of SingleCall objects, a new instance of the class is created for each call
that a client makes, even if the same client calls the same method more than
once. On the other hand, Singleton objects are created only once, and all clients communicate with
the same object.
RemotingConfiguration.RegisterWellKnownServiceType( _
GetType(myRemoteClass), _
"RemoteTest", _
WellKnownObjectMode.SingleCall)
- Use the ReadLine method of the Console object to keep the server application running.
Console.WriteLine("Press <ENTER> to exit...")
Console.ReadLine()
- Build your project.
- Save and close the project.
back to the top
Test the server object To create a client application that communicates with the server
object that you just created, see the following Microsoft Knowledge Base
article:
300943 How to create client access to remote server by using Visual Basic .NET
back to the top
REFERENCES
For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
301116
How to marshal an object to a remote server by value by using Visual Basic .NET
301112 How to marshal an object to a remote server by reference by using Visual Basic .NET
For more information about the TcpChannel class, see the following .NET Framework Class Library Web site: For more information about the RegisterWellKnownServiceType method, see the following .NET Framework Class Library Web site: For more information, see the .NET Quickstart Tutorials at the
following Microsoft Web site: For an overview of .NET Remoting, see the .NET Framework
Developer's Guide documentation.
back to the top
Modification Type: | Major | Last Reviewed: | 11/8/2005 |
---|
Keywords: | kbHOWTOmaster KB300951 kbAudDeveloper |
---|
|