Erstellung eines IPCRemoting Channel
/*
Kurze Erklärung: Das RemoteObjekt muß als Klassenbibliothek erstellt werden und unter Verweise beim Server sowie beim Client hinzugefügt sein.
*/
//Hier wird der Server Beschrieben
using System;
using System.Runtime.Remoting.Channels.Ipc;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting;
using System.Security.Permissions;
public class Servers
{
[SecurityPermission(SecurityAction.Demand)]
public static void Main(string[] args)
{
// Erstellen eines Channel
IpcChannel serverChannel = new IpcChannel("localhost:9091");
// Registriert denn Channal zum Server
ChannelServices.RegisterChannel(serverChannel);
// Stellt das Objekt für denn registrierten Channal bereit.
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "RemoteObject.rem",
WellKnownObjectMode.Singleton);
Console.WriteLine("Drück ENTER zum Beenden des Server.");
Console.ReadLine();
Console.WriteLine("Server schließt.");
}
}
//Hier wird der Client beschrieben.
using System;
using System.Runtime.Remoting.Channels.Ipc;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting;
public class Client
{
[SecurityPermission(SecurityAction.Demand)]
public static void Main(string[] args)
{
IpcChannel channel = new IpcChannel();
// Registrieren des Channel.
ChannelServices.RegisterChannel(channel);
// Registrieren als Client für das Remote Objekt.
WellKnownClientTypeEntry remoteType = new WellKnownClientTypeEntry(
typeof(RemoteObject),
"ipc://localhost:9091/RemoteObject.rem");
RemotingConfiguration.RegisterWellKnownClientType(remoteType);
// Anlegen einer Instance für das Remote Objekt.
RemoteObject service = new RemoteObject();
Console.WriteLine("Das Objekt wurde {0} mal aufgerufen.", service.GetCount());
Console.ReadLine();
}
}
// Remote Objekt.
using System;
public class RemoteObject : MarshalByRefObject
{
private int callCount = 0;
public int GetCount()
{
Console.WriteLine("GetCount wurde aufgerufen.");
callCount++;
return(callCount);
}
}
Kommentare zum Snippet