Mega Code Archive

 
Categories / VB.Net by API / System Runtime Remoting Channels
 

ChannelServices RegisterChannel

///////////////////////////////////general.vb // Compile: vbc /target:library  general.vb Imports System Imports System.Runtime.Remoting.Messaging Public MustInherit Class BaseRemoteObject     Inherits MarshalByRefObject     Public MustOverride Sub setValue(ByVal newval As Integer)     Public MustOverride Function getValue() As Integer End Class ///////////////////////////////////test.vb // Compile: vbc /t:exe /r:general.dll test.vb Imports System Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels.Http Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Proxies Module Client     Delegate Sub SetValueDelegate(ByVal value As Integer)     Sub Main()         Dim start As DateTime = System.DateTime.Now         Dim channel As New HttpChannel()         ChannelServices.RegisterChannel(channel,false)         Dim obj As BaseRemoteObject = CType(Activator.GetObject( _             GetType(BaseRemoteObject), _             "http://localhost:1234/MyRemoteObject.soap"), BaseRemoteObject)         Dim svDelegate As New SetValueDelegate(AddressOf obj.setValue)         Dim svAsyncres As IAsyncResult = svDelegate.BeginInvoke(42, Nothing, _             Nothing)         svDelegate.EndInvoke(svAsyncres)         Dim tmp As Integer = obj.getValue()         Console.WriteLine(tmp)         Dim finished As DateTime = System.DateTime.Now         Dim duration As TimeSpan = finished.Subtract(start)              End Sub End Module ///////////////////////////////////server.vb // vbc /target:exe  /r:general.dll server.vb Imports System Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels.Http Imports System.Runtime.Remoting.Channels Imports System.Threading Class MyRemoteObject     Inherits BaseRemoteObject     Private myvalue As Integer     Public Sub New()     End Sub     Public Overrides Sub setValue(ByVal newval As Integer)         Console.WriteLine("old {0} new {1}", myvalue, newval)         Thread.Sleep(5000)         myvalue = newval     End Sub     Public Overrides Function getValue() As Integer         Return myvalue     End Function End Class Module ServerStartup     Sub Main()         Dim chnl As New HttpChannel(1234)         ChannelServices.RegisterChannel(chnl,false)         RemotingConfiguration.RegisterWellKnownServiceType( _             GetType(MyRemoteObject), "MyRemoteObject.soap", _             WellKnownObjectMode.Singleton)         Console.ReadLine()     End Sub End Module