Feedback

C# - IPCRemoting Channel

Veröffentlicht von am 09.08.2006
(3 Bewertungen)
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

 

Logge dich ein, um hier zu kommentieren!