Forum: C# |
Thema:
AW: AW: Remoting in Microsoft .net -- Teil I |
Von:
Sebastian Lange (
22.06.2007 16:21) |
Leider hat das [Serializable] Attribut nichts verändert.
Die beiden folgenden Funktionen stammen aus meinen Modulen
und erledigen das bereitstellen und beziehen des Objects, vielleicht
habe ich da einen Fehler gemacht, Remoting ist neu für mich da ich eigentlich immer ein VB-Junkie war bisher.
// Die Funktion in der Server Anwendung auf localhost
// MyRemoteObject ist einer ausgelagerten DLL definiert
private int RegisterRemotingService(string sName, int lPort)
{
try
{
TcpChannel myChannel = new TcpChannel(lPort);
ChannelServices.RegisterChannel(myChannel);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(MyRemoteObject), sName, WellKnownObjectMode.Singleton);
myObj = (MyRemoteObject)Activator.GetObject(
typeof (MyRemoteObject),"tcp://localhost:" +
lPort.ToString() + "/" + sName);
myObj.Initialize("meinInitWert");
// für das beispiel her unrelevant aber
// dieser aufruf findet statt und funktioniert.
GlobalRef = myObj; // Eine InstanzRefrenz wird in
//einer glob.Variable beibehalten.
return lPort;
}
catch (Exception eArgument)
{
Console.WriteLine(eArgument.Message);
return -1;
}
}
// Die Funktion in der Client Anwendung auch auf localhost
// MyRemoteObject ist einer ausgelagerten DLL definiert
private MyRemoteObject GetRemotingService(string sName, int lPort)
{
try
{
MyRemoteObject myRObj =null;
myRObj = (MyRemoteObject )Activator.GetObject(
typeof(MyRemoteObject ),"tcp://localhost:" +
lPort.ToString() + "/" + sName);
return myRObj ;
}
catch(Exception e)
{
throw(e);
}
}
// Im Client passiert nun wie gesagt:
MyRemoteObject myR = GetRemotingService("MyRemote", 2098);
myR.HelloMethod("Hallo Welt");
// Eine Methode des Objects aufrufen klappt super.
myR.myCustomClassObject.HelloMethod("Hallo Welt");
// Hier greife ich auf ein Klassenobject zu das Member
// meines RemotingObjects ist und erhalte
// die Fehlermeldung bzgl. des Channels.
Kann sein das myCustomClassObject ebenfalls einen
eigenen Channel braucht?
Viele Grüsse
Ich hoffe mein Posting ist nicht zu gross und zu unübersichtlich.
Sebastian
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!