[VB.NET] .net remoting で RPC を行うサンプル

2017年4月18日

 サーバー側 tcp ポート 8000 番を使ってリモートプロシージャコールを行ってみた例のメモ。

 3つのプロジェクトを作ります。

  1. RemoteClass プロジェクト (呼び出される処理)
  2. RemoteServer プロジェクト (待ち受けをするサーバープロセス)
  3. RemoteClient プロジェクト (呼び出す側のプロセス)

 コード例は以下。詳細な説明は割愛(ぇ

  1.  RemoteClass プロジェクトの内容

    Public Class RemoteClass
        Inherits MarshalByRefObject
    
        Private Shared _count As Integer
    
        Public Function Method1(a As Integer) As Integer
            RemoteClass._count += a
    
            Console.WriteLine("Server side output: {0}", _count.ToString)
    
            Return _count
        End Function
    
    End Class
    
  2.  RemoteServer プロジェクトの内容。
     (RemoteClass プロジェクトと System.Runtime.Remoting を参照し、ルート名前空間の名前を同じ名前にします)

    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.Tcp
    
    Module Module1
    
        Sub Main()
            ChannelServices.RegisterChannel(New TcpChannel(8000), False)
    
            RemotingConfiguration.RegisterWellKnownServiceType(
                GetType(RemoteClass),
                "MyAPP",
                WellKnownObjectMode.SingleCall)
    
            Console.WriteLine("Server Start")
            Console.ReadLine()
            Console.WriteLine("Server Stop")
        End Sub
    
    End Module
    
  3.  RemoteClient プロジェクトの内容。
     (RemoteClass プロジェクトと System.Runtime.Remoting を参照し、ルート名前空間の名前を同じ名前にします)

    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.Tcp
    
    Module Module1
    
        Sub Main()
            ChannelServices.RegisterChannel(New TcpChannel(), False)
    
            Dim remoteClass = CType(Activator.GetObject(GetType(RemoteClass),
                                                "tcp://localhost:8000/MyApp"),
                            RemoteClass)
    
    
            Dim result = remoteClass.Method1(1)
            Console.WriteLine("Client side output {0}", result)
    
            Console.ReadLine()
        End Sub
    
    End Module
    





カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org