Published Object .NET Remoting formatter: soap binary wdsl, channel: http tcp ipc

23/05/2008 - 19:08 von Klaus Unterberg | Report spam
Hallo,

es geht um published remote objects in .net Remoting. Ursprüngliches
Ziel war es, published objects über dem IPC channel zu realisieren mit
dem Formatter binary. Schlußendlich hat sich gezeigt, dass nur die
Variante mit dem HTTP channel und dem soap formatter funktioniert. Bei
dem TCP channel (mit soap) kommt beispielsweise die Exception: {"Der
Server hat eine Protokollverletzung ausgeführt..
Section=ResponseStatusLine"}

Es funktioniert leider nichts anders als http mit soap. Dabei spielt es
keine Rolle ob RemotingConfiguration.Configure() mit app.config verwendt
wird, oder hardcoded im source.

client:

//RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,false);


//HttpChannel ch = new HttpChannel();
TcpChannel ch = new TcpChannel();
ChannelServices.RegisterChannel(ch, false); /**/
IRemoteManager rm =
(IRemoteManager)Activator.GetObject(typeof(IRemoteManager),
"http://localhost:1234/RemoteManager.soap");
Console.WriteLine(rm.GetSomeInt());
rm.SetSomeInt(5);
Console.WriteLine(rm.GetSomeInt());
Console.ReadLine();


server:

public class RemoteManager : MarshalByRefObject, IRemoteManager
{
private int aValue = 0;
//[..]
public void SetSomeInt(int value)
{
aValue = value;
Console.WriteLine("new val: " + aValue);
}

public int GetSomeInt()
{
Console.WriteLine("get val: " + aValue);
return aValue;
}
}

//RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,false);


//HttpChannel ch = new HttpChannel(1234);
TcpChannel ch = new TcpChannel(1234);
ChannelServices.RegisterChannel(ch, false); /**/
RemoteManager rm = new RemoteManager();
RemotingServices.Marshal(rm, "RemoteManager.soap");
Console.WriteLine("server side value: " + rm.GetSomeInt());
Console.ReadLine();


remote interface:

public interface IRemoteManager
{
void SetSomeInt(int value);
int GetSomeInt();
}

Kann mir jemand erklàren warum das so ist bzw. ob ich doch etwas
übersehen/lesen habe? Vielen Dank für jede Hilfe und Aufklàrung!

mfg, Klaus
 

Lesen sie die antworten

#1 Frank Dzaebel
24/05/2008 - 12:15 | Warnen spam
Hallo Klaus,

es geht um published remote objects in .net Remoting. Ursprüngliches Ziel
war es, published objects über dem IPC channel zu realisieren mit dem
Formatter binary. Schlußendlich hat sich gezeigt, dass nur die Variante
mit dem HTTP channel und dem soap formatter funktioniert. Bei dem TCP
channel (mit soap) kommt beispielsweise die Exception: {"Der Server hat
eine Protokollverletzung ausgeführt.. Section=ResponseStatusLine"}



Generell würde ich das heute mit WCF machen, aber gut,
prinzipiell sollten TcpChannel und IpcChannel da aber auch
funktionieren. Hier ein paar Beispiele:

[Interfaces] http://Dzaebel.NET/Downloads/Remoti...proach.zip
[TCP] http://Dzaebel.NET/Downloads/RemotingTCP.zip
[IPC] http://Dzaebel.NET/Downloads/Remoti...Client.zip


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen