Wie schickt Remoting Daten übers Netz?
-
Wie schickt Net Remoting eigentlich die Daten übers Netz? Wird da einfach das HTTP Protokoll verwendet und alles in einen POST GET 200 OK verpackt oder wie funzt das?
-
Die Objekte werden serialisiert und per TcpClient übertragen.
-
ich möchte nur sicherstellen das mein Client immer zu meinem Server verbinden kann - egal welche Firewall, Proxy und Co dazwischen ist. Meistens ist ja das Netzwerk so konfiguriert, das ein User im Inet Surfen kann - deshalb habe ich meine Daten in das HTTP Protokol verpackt und schick sie über Port 80 raus
CLIENT ======POST=======> SERVER /\ || ||_________________________|| -----------200 OK-----------|
für die Firewall sieht das ganze aus wie ein normaler Browser. Der Proxy gibt das einfach so weiter an die Außenwelt, da er ebenfalls denkt es handelt sich um eine gewöhnliche Anfrage an eine Webseite...
Nun frage ich mich ob ich gleichs mit NetRemoting hinbekomme
So wies aussieht werde ich das weiterhin per Hand über Sockets erledigen müssen
-
Wieso? Soap Serialisierung ist das Zauberwort - wird über Http verschickt, daher kommts auch über Port 80 wenn gewünscht.
-
Soap bläht aber den Netzwerkverkehr ganz schön auf
-
Remoting ist nicht gedacht, um hocheffizient Daten zu übertragen und beim jeden Byte zu geizen. Remoting ist absolut high-level, es werden Klassen-Informationen abgeglichen, Anfragen für einen Methodenaufruf abgeschickt, jeder wird beim Server in einem eigenen Thread abgearbeitet, Parameter werden serialisiert und deserialisiert, Rückgabewerte (die auch Exceptions sein können) werden serialisiert und deserialisiert...
Was am Ende rauskommt ist, dass es für dich aussieht, als würdest du eine Methode bei dir aufrufen, in Wirklichkeit rufst du sie beim Server auf. Also höchst high-level. Genau richtig, wenn du eh schon lahmen Netzwerkverkehr über das Internet hast, das macht eh schon jede Performance kaputt.Außerdem musst du AFAIK nicht den SoapFormatter verwenden, der Server-Port lässt sich in jedem Fall konfigurieren. Auf nahezu jedem Rechner darf man eine Tcp-Verbindung mit der Außenwelt herstellen, bedenke, dass auch eine Http-Anfrage per Tcp verschickt wird.
-
Net Remoting ist doch nicht gleich SOAP oder?
irgendwie kommt mir das so vor als Net Remoting viel weniger Overhead produziert
scheint mir sogar sehr sparsam zu sein
-
Ich denke, dass es in der Standardeinstellung den BinaryFormatter verwendet, der ist ziemlich effizient. Du kannst halt damit keinen Austausch machen, wenn die Dateiversionen unterschiedlich sind oder die des Frameworks. Soap ist da wesentlich toleranter, aber meistens reicht der Binary wohl aus.