[B]Aktuelle Version: [/B]1.1.4882.38692 [B]Unterstützte Betriebssysteme: [/B]Windows XP - Windows 7 - Windows 8 [B]Benötigte .NET Framework Version: [/B]2.0 [B]Downloads bis zum letzten Update: [/B]93
Beschreibung:
Das PS.Remoting.Interface ist eine kleine Bibliothek, welche die Arbeit mit .NET Remoting vereinfachen soll. Ich habe sie erstellt, da ich es leid bin immer und immer wieder Server und Client Klassen zu erstellen / nach Copy&Paste zu ändern.
Die Funktionsweise ist relativ simpel. Zum öffnen einer Verbindung sind lediglich 3 Codezeilen notwendig:
RemotingServer<MyProvidedType> server = new RemotingServer<MyProvidedType>();
server.ConfigFile = "ConfigFile_Remoting.xml";
// opens the connection and marshalls the interface
server.Open();
MyProvidedType aus dem oben genannten Beispiel muss von RemotingObject<T> erben, wobei T MyProvidedType selbst ist. Dies hat den Hintergrund, dass MyProvidedType somit automatisch zum Singleton wird. MyProvidedType wäre die Klasse, über die der Client über das Interface Zugriff auf den Server erlangt.
Eine Beispielklasse, wie sie auch im Testprojekt enthalten ist:
[Serializable]
public class ServerBusinessClass : RemoteObject<ServerBusinessClass>
{
public void SaveToFile(string text, string file)
{
File.WriteAllText(file, text);
}
}
In meinem Beispiel soll der Server nach Aufruf lediglich einen Text in eine Datei schreiben.
Allerdings wollen wir ja auch eine Schnittstelle haben, über die der Client zugriff hat.
Auch dies gestaltet sich ziemlich einfach. Wir erstellen eine Interface Klasse, die die Zugriffe auf das RemoteObjekt vornimmt. Dieses erbt wiederum von einer generischen Klasse, dem RemotingInterface<T>.
Unsere Klasse sieht anschließend wie folgt aus:
[Serializable]
public class ServerInterface : RemotingInterface<ServerBusinessClass>
{
#region IServerInterface Member
public void Save(string text, string file)
{
this.RemotingObject.SaveToFile(text, file);
}
#endregion
}
Der Cloue ist, dass RemotingObject hier bereits vom Typ ServerBusinessClass ist. Somit können wir die SaveFile Methode aufrufen.
Nun würde der Server allein schon arbeiten. Um nun eine Verbindung mit dem Server herzustellen sind wiederum wenige Zeilen Code auf Clientseite notwendig:
RemotingClient<ServerBusinessClass> client = new RemotingClient<ServerBusinessClass>();
client.ServerUrl = "tcp://myserver:myPort/RemoteInterface.rem";
client.Connect();
Auf diese Weise können wir nun eine Verbindung mit dem Server herstellen, und haben auch schon Zugriff auf das Server-Interface.
Wir können nun die Methode "Save" wie folgt aufrufen:
ServerInterface iInterface = client.Interface as ServerInterface;
iInterface.Save("MyText", "MyFile.txt");
[B]Release Log:[/B] [pre] 21.10.2011 Version 1.0 veröffentlicht 14.05.2013 Version 1.1 Erweitert um Events zu ermöglichen [/pre]
Auch wenn ich es angekündigt habe, werde ich auf die Verwendung von Events nicht eingehen. Das Testprojekt wird dies ausreichend zeigen.
Schlagwörter: Remoting, Netzwerkprogrammierung, .NET Remoting, Client-Server-Verbindung, Client-Server