IIOP - .NET to .NET (Кусок лабы доделать)
От: KassadShrike Украина  
Дата: 04.01.08 18:11
Оценка:
Нужно сделать пункт Два варианта распределенных СУБД (с реализацией клиентов и серверов), используя по своему выбору две технологии из нижеперечисленных: Java RMI/JRMP, Java RMI/IIOP, EJB, Net Remoting, IIOP Net.
СУБД написана... как видно из списка истинный .NET-чик выберет Net Remoting и IIOP Net. Но код на Net Remoting — работает а на IIOP Net нет.


сервер:

//Net
            IDictionary props = new Hashtable();
            props["name"] = "tcp";
            props["port"] = 7777; 
            BinaryServerFormatterSinkProvider bsf = new BinaryServerFormatterSinkProvider();
            bsf.TypeFilterLevel = TypeFilterLevel.Full; 

            TcpChannel chan = new TcpChannel(props, null, bsf);
            ChannelServices.RegisterChannel(chan, false);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingServer), "RemotingServer", WellKnownObjectMode.Singleton);
//IIOP
            IiopChannel chan = new IiopChannel(7778);
            ChannelServices.RegisterChannel(chan, false);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingServer), "RemotingServer", WellKnownObjectMode.Singleton);


клиент:

            TcpChannel chan = new TcpChannel();
            ChannelServices.RegisterChannel(chan);
            RemotingConfiguration.RegisterWellKnownClientType(typeof(RemotingServer), "tcp://localhost:7777/RemotingServer");
            m_serverNet = new RemotingServer();

            IiopChannel chan = new IiopChannel();
            ChannelServices.RegisterChannel(chan, false);
            RemotingConfiguration.RegisterWellKnownClientType(typeof(RemotingServer), "tcp://localhost:7778/RemotingServer");
            m_serverIIOP = new RemotingServer();


При первом обращении IIOP — бахает (.NET remoting работает идеально (странно почему ))
Как понимаю не соответствует "магическое число"
            if (!((readBuffer[0] == m_giop_magic[0]) && (readBuffer[1] == m_giop_magic[1]) &&
                (readBuffer[2] == m_giop_magic[2]) && (readBuffer[3] == m_giop_magic[3])))
            {
                // no GIOP
                Trace.WriteLine("received non GIOP-Message");
//BABAH
                throw new omg.org.CORBA.MARSHAL(19, omg.org.CORBA.CompletionStatus.Completed_No);
            }
Best regards
col. Fadman Kassad AKA Shrike
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.