Laden...

2 Remoteobjekte auf verschiedenen Ports - Kann Object 1 auf Port von Object 2 Abrufen

Erstellt von inflames2k vor 13 Jahren Letzter Beitrag vor 13 Jahren 941 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 13 Jahren
2 Remoteobjekte auf verschiedenen Ports - Kann Object 1 auf Port von Object 2 Abrufen

Hallo,

ich find das im folgenden geschilderte Verhalten ziemlich merkwürdig, und wollte wissen ob das so sein sollte oder ein Fehler vorliegt.

Ich stelle auf einem Remoting-Server 2 Objekte für die Clients zur verfügung. Zum einen nennen wir es "ConfigInterface" und zum anderen "ClientInterface".

ConfigInterface habe ich auf Port 8010 freigegeben die Url wäre bspw.:
tcp://servermaschine:8010/ConfigInterface.rem

ClientInterface hat den Port 8000 erhalten und die Url wäre:
tcp://servermaschine:8000/ClientInterface.rem

Soweit so gut, so funktioniert auch alles. - Nun ist mir aber beim Testen aufgefallen, dass wenn ich ConfigInterface auf Port 8000 abrufe dennoch meine Daten erhalte, welche ich konfigurieren kann.

Ist das richtig? Soll das so sein?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 13 Jahren

Kann mir keiner sagen ob das Verhalten korrekt ist?

Eventuell als zusätzliche Information:
Ich konfiguriere die beiden Remoting-Channels jeweils durch eine Konfigurationsdatei.

Die Konfigurationsdatei für das ConfigInterface sieht wie folgt aus:


<configuration>
  <system.runtime.remoting>
    <application>
      <channels>
        <channel name="ConfigurationChannel" ref="tcp" port="8010" />
      </channels>
      <service>
        <wellknown mode="Singleton" type="MyNameSpace.ConfigInterface, MyAssembly"
                        objectUri="ConfigInterface.rem" />        
      </service>
    </application>
  </system.runtime.remoting>
</configuration>

Die Konfigurationsdatei für den Client hat die folgenden Inhalte:


<configuration>
  <system.runtime.remoting>
    <application>
      <channels>
        <channel name="ClientChannel" ref="tcp" port="8000" />       
      </channels>
      <service>
        <wellknown mode="Singleton" type="MyNameSpace.ClientInterface, MyAssembly"
                        objectUri="ClientInterface.rem" />        
      </service>
    </application>
  </system.runtime.remoting>
</configuration>

Auch die Klassen die die beiden Channels bereitstellen sind unterschiedliche und kennen das jeweils andere Objekt garnicht.

Aber dennoch kann ich über den jeweils anderen Port auf das Objekt zugreifen.

Ich habe also sowohl auf Port 8000 wie auch auf Port 8010 Zugriff auf ClientInterface und ConfigInterface.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
48 Beiträge seit 2010
vor 13 Jahren

WKOs und Channels stehen ja in keiner direkten Beziehung.

z.B.:


TcpChannel c = new TcpChannel(12345);
ChannelServices.RegisterChannel(c, false);

RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(SimpleRemotingAsm.RemoteMessageObject),
                "RemoteMsgObj.rem",
                WellKnownObjectMode.Singleton);

Kennt der Kanal c das RemoteMessageObject? Nein
Kennt der registrierte Service den Kanal c? Auch nicht.

Es wird einfach ein (oder mehrere) Kanal registriert, aber nicht direkt an bestimmte Typen gebunden. Dass Du das ganze in config-Files erledigt hast, wirkt sich nicht darauf aus.

Ich bin was Remoting betrifft etwas grün hinter den Ohren und hoffe das ist soweit richtig. Aber da ja sonst niemand antwortet....