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

Материал из VB Эксперт
Версия от 15:49, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

ChannelServices.RegisterChannel

<source lang="vbnet"> ///////////////////////////////////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


 </source>