解析:
.Net Remoting是一种跨Application Domain的通信机制。
.Net Remoting核心概念:Remotable Object,Channel,Host Application
.Net Remoting程序的三个组成部分:
- A remotable object.
- A host application domain to listen for requests for that object.
- A client application domain that makes requests for that object.
示例:
1、// 定义RemotableType
using System;
namespace RemotingLib
{
public class RemotableType : MarshalByRefObject { public string SayHello() { Console.WriteLine("RemotableType.SayHello() was called!"); return "Hello, world"; } }
}
2、// Server端
namespace RemotingServer
{
class Program
{
static void Main(string[] args)
{
TcpServerChannel channel = new TcpServerChannel(8086);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemotingLib.RemotableType), "Hi", WellKnownObjectMode.Singleton);
Console.WriteLine("press return to exit.");
Console.ReadLine();
}
}
3、// Client端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace RemotingClient
{
class Program
{
static void Main(string[] args)
{
ChannelServices.RegisterChannel(new TcpClientChannel(), false);
RemotingLib.RemotableType hello = (RemotingLib.RemotableType)Activator.GetObject(typeof(RemotingLib.RemotableType),
"tcp://localhost:8086/Hi");
if (hello == null) {
Console.WriteLine("can't locate server.");
return;
}
try
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine( hello.SayHello() );
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
}