LINUX.ORG.RU

Ice


0

0

Бывшие разработчики CORBA стандарта реализовали облегченную и упрощенную библиотеку для межпрограммного взаимодействия, так называемого middleware, Internet Communications Engine или ICE. Библиотеку можно использовать как под коммерческой лицензией, гарантирующей поддержку, так и на условиях открытой лицензии GPL.

Библиотека, как отмечается в интервью http://www.itwriting.com/monointervie..., используется во многих многопользовательских играх MMORPG, что говорит в пользу ее пригодности в практическом использовании.

>>> Подробности

anonymous

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

> А TAO проигрывает Ice из-за кривой CORBA (имею ввиде перегруженную ненужными сложностями спецификацию) т.к. Ice на проядок проще. (например отсутствие C биндингов не спроста ;) )

ну с этим можно в принципе согласиться. и связка CORBA+C мне даже в страшном сне не снится. хотя спецификация есть :)

идея сделать действительно облегченный фреймворк "по следам CORBA" учитывая при этом все ошибки и хвосты первой - интересная идея, несомненно. ну а что получилось каждый судит сам для себя.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

К стати, wmfo Ice используют... но только для одного сокета и только при коннектах... в ACE есть централизованный реактор (преключаемый к стати, можно даже свой без особых проблем написать) который все делает оптимально и сразу для всех сокетов в приложении... Но по этому в ACE есть 2 режима multi/single threaded и требуются реакторы для фреймворков (x11, qt, gtk), а Ice ничего не требуется, т.к. каждое соединение (пул точнее) автономен и живет в своем потоке.

#ifdef _WIN32
            WSAEVENT events[1];
            events[0] = event;
            long tout = (timeout >= 0) ? timeout : WSA_INFINITE;
            DWORD rc = WSAWaitForMultipleEvents(1, events, FALSE, tout, FALSE);
            if(rc == WSA_WAIT_FAILED)
            {
                int error = WSAGetLastError();

                WSACloseEvent(event);
                closeSocketNoThrow(fd);

                SocketException ex(__FILE__, __LINE__);
                ex.error = error;
                throw ex;
            }

            if(rc == WSA_WAIT_TIMEOUT)
            {
                WSACloseEvent(event);
                closeSocketNoThrow(fd);

                assert(timeout >= 0);
                throw ConnectTimeoutException(__FILE__, __LINE__);
            }
            assert(rc == WSA_WAIT_EVENT_0);
            
            WSANETWORKEVENTS nevents;
            if(WSAEnumNetworkEvents(fd, event, &nevents) == SOCKET_ERROR)
            {
                int error = WSAGetLastError();
                WSACloseEvent(event);
                closeSocketNoThrow(fd);

                SocketException ex(__FILE__, __LINE__);
                ex.error = error;
                throw ex;
            }

            //
            // Now we close the event, because we're finished and
            // this code be repeated.
            //
            WSACloseEvent(event);

            assert(nevents.lNetworkEvents & FD_CONNECT);
            val = nevents.iErrorCode[FD_CONNECT_BIT];
#else

anonymous
()
Ответ на: комментарий от klalafuda

Но у ACE есть плюс, можно приложение скомпилять -fno-exceptions, что иногда очень надо... Правда TAO уже так не скомпиляешь...

anonymous
()
Ответ на: комментарий от anonymous

> Но у ACE есть плюс, можно приложение скомпилять -fno-exceptions, что иногда очень надо... Правда TAO уже так не скомпиляешь...

C++ без исключений - это уже совсем не C++, это что-то a'la C with objects :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Иногда, на особо кастрированных системах такое нужно :). (для некоторых вообще невозможно использовать исключения ввиду архитектуры)

anonymous
()
Ответ на: комментарий от anonymous

> Иногда, на особо кастрированных системах такое нужно :).

...правда, тут же возникает вполне резонный IMHO вопрос - а на кой тогда в таких системах вообще нужна CORBA? :) да и ORBы есть значительно менее прожорливые, нежели TAO. не далее как сегодня видел очередной ORB for Embedded Designs траляля [забыл уже как зовут].

> (для некоторых вообще невозможно использовать исключения ввиду архитектуры)

mmm... можно пример? просто любопытно.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Мне очень интересно, почему все вдруг решили, что ICE быстрее TAO в частности и CORBA вообще на том лишь основании, что результаты тестирования опубликованы на сайте одной из заинтересованных сторон? А как вам это: http://www.omg.org/docs/mars/04-02-08.pdf Вообще говоря, IMHO, мне совершенно не понятно, зачем надо было изобретать велосипед, когда есть спецификация на RT CORBA от OMG? Есть очень хорошее высказывание относительно CORBA: CORBA хороша настолько, насколько хороша ее реализация. Так вот, все, что надо было сделать Zero-вцам - это сделать хорошую и быструю реализацию RT CORBA, а не плодить еще один полустандарт (который, с большой вероятностью, не получит достаточного распространения).

Что же касается сравнения ACE/TAO и ICE, то их, строго говоря, сравнивать не имеет смысла, так как они имеют разные "весовые категории". Основной упор, который делает команда Шмидта - это переносимость при приемлемой скорости (достаточной для реализации RT CORBA, между прочим), отсюда и недостаток некоторых вещей, вроде C++ исключений (BTW использование исключений отнюдь не ускоряет производительность). Есть отличная книга по ACE, рекомендую почитать всем интересующимся: http://www.rsdn.ru/res/book/cpp/ace1.xml http://www.rsdn.ru/res/book/cpp/ace2.xml Цель же, которую преследуют разработчики ICE - это "быстрый ORB", скорость которого, как выясняется, достаточно спорна.

anonymous
()
Ответ на: комментарий от klalafuda

> не далее как сегодня видел очередной ORB for Embedded Designs траляля [забыл уже как зовут].

в сущьности вот он http://www.ois.com/products/prod-1.asp#3
ps: лично я это не смотрел/пробовал. просто попалось на глаза.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

>> (для некоторых вообще невозможно использовать исключения ввиду архитектуры)

> mmm... можно пример? просто любопытно.

Надеюсь, автор не будет в обиде за то, что я отвечу за него. Я так понимаю, автор имел в виду невозможность использования исключений по причине отсутствия их поддержки у компилятора. А таких - хоть отбавляй. К тому же, как я уже упоминал, наличие исключений, хоть и очень удобно в использовании, достаточноно сильно тормозит производительность.

pepper
()
Ответ на: комментарий от pepper

> Надеюсь, автор не будет в обиде за то, что я отвечу за него. Я так понимаю, автор имел в виду невозможность использования исключений по причине отсутствия их поддержки у компилятора. А таких - хоть отбавляй.

согласен, когда-то было предостаточно и в обиходе. а еще есть убл^W^W^W реализации без поддержки пространства имен и пр. радостей.

пардон, но если в 2006м году вам приходится использовать подобные раритеты в повседневной разработке - мои искренние вам соболезнования :)
ps: мне прихолилось. ругался долго.

> К тому же, как я уже упоминал, наличие исключений, хоть и очень удобно в использовании, достаточноно сильно тормозит производительность.

можно пример дизайна системы, которая бы сильно проигрывала скажем по производительности от введения исключений? :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от anonymous

посмотрел:
http://www.omg.org/docs/mars/04-02-08.pdf

как всегда - есть ложь, очень большая ложь, а есть тестирование в интернет
очень похоже, что ребята из ice просто откровенно передергивают
- не зря всетаки насторожился :)

yeolahim
()
Ответ на: комментарий от klalafuda

> ...правда, тут же возникает вполне резонный IMHO вопрос - а на кой тогда в таких системах вообще нужна CORBA? :)

Я про ACE ;), ТАО без exceptions не скомпилицца.

Про применения ответили... добавлю что еще надо ексепшионы выключать, когда либа вызывается из С приложений. Про производительность с ексепшинами - есть официальные измерения (где-то были, найду запостю, дык там и скорость и размер до 30% сжираются, но производительность съедается при раскручивании... при обычном выполнении это почти незаметно)

А по поводу компиляторов, дык не все же под интель с оффтопиком или линаксом программят... есть более экзотические наприр соляра с Марс-ом :), то еще глюкалово (хотя сам не писал, эксепшины только из-за совместимости со старым кодом отрубал)

> Мне очень интересно, почему все вдруг решили, что ICE быстрее TAO в > частности и CORBA вообще на том лишь основании, что результаты > тестирования опубликованы на сайте одной из заинтересованных сторон? Возьми тесты у них с сайта и проверь :).

А RT корбу они не стали делать, потому, как сама спецификация кобры сложна. Туда пихают что ни попадя и в итоге имеет туеву хучу разных сервисов и еще больше расширений не совместимых между собой (BiDir например).

Далее, корба за счет ужасной системы идентификации методов и объектов через файрволы вообще не пролазит (кроме как через коммерческие прехватчики, которые колупаются в IIOP и правят рефы)

> отсюда и недостаток некоторых вещей, вроде C++ исключений (BTW использование исключений отнюдь не ускоряет производительность) Упрощает программирование... вместо лапши из if (errcode == ... красивые catch где-то вверху... при этом за счет разворачивания стека все еще само и чистицца. Но скорость страдает.

> Цель же, которую преследуют разработчики ICE - это "быстрый ORB", скорость которого, как выясняется, достаточно спорна Если почитать, то еще одна из целей - простота!. И они этого с лихвой достигли... Ice vs CORBA это как Java c C.

anonymous
()
Ответ на: комментарий от klalafuda

(Сорри за неправильное форматирование)

>пардон, но если в 2006м году вам приходится использовать подобные раритеты в повседневной разработке - мои искренние вам соболезнования :) А мне и не приходится - приходится многим другим, для кого Шмидт продолжает поддержку ACE/TAO

>можно пример дизайна системы, которая бы сильно проигрывала скажем по производительности от введения исключений? :)

Прямо так пример не приведу, но это общеизвестный факт - достаточно изучить механизм генерации и обработки исключений. Не будете же Вы отрицать, что возврат кода ошибки гораздо быстрее, чем рекурсивное разворачивание стека и поиск мест отлова исключений. Конечно же, современные компиляторы в достаточной степени могут оптимизировать такие вещи, но, все же, они не настолько умны, чтобы сделать код настолько же быстрым. Опять же - поддержка более старых компиляторов с их устаревшими оптимизаторами ;) За деталями могу Вас отослать все к той же книге по ACE, ссылку на которую я дал выше.

pepper
()
Ответ на: комментарий от anonymous

>где-то были, найду запостю, дык там и скорость и размер до 30% сжираются, но производительность съедается при раскручивании... при обычном выполнении это почти незаметно

Если не считать того, что каждый блок try{} отъедает часть времени и ресурсов даже при обычном выполнении

> Возьми тесты у них с сайта и проверь :)

А кто говорит, что они врут? Я не думаю, что ребята эти настолько глупы, чтобы помещать заведомо ложные результаты тестов. Только можно сказать, что "на нашем автомобиле самые быстрые колеса", при этом забыть упомянуть о плохой аэродинамике самого автомобиля. Надеюсь, метафора всем понятна. Недаром же я разместил ссылку на результаты тестов другой стороны.

>А RT корбу они не стали делать, потому, как сама спецификация кобры сложна

Не согласен. Спецификация minimumCORBA достаточно проста и понятна. К тому же основная сложность для программиста - пользователя среды может быть скрыта за дополнительным архитектурным слоем.

>Далее, корба за счет ужасной системы идентификации методов и объектов через файрволы вообще не пролазит

Не знаю, как с этим обстоит дело у ICE, но что-то мне подсказывает, что и там не все так гладко...

>Если почитать, то еще одна из целей - простота!. И они этого с лихвой достигли... Ice vs CORBA это как Java c C.

Вообще говоря, разговоры о сложности относительно CORBA, так же как и относительно C++, мне всегда были непонятны. На то мы и программисты, чтобы понимать сложные вещи. Я предпочитаю иметь под рукой мощное средство, пусть и несколько более сложное, чем мучаться с недоделанными технологиями с кучей ограничений. Но это - мое мнение.

pepper
()
Ответ на: комментарий от pepper

>Не согласен. Спецификация minimumCORBA достаточно проста и понятна. К >тому же основная сложность для программиста - пользователя среды может >быть скрыта за дополнительным архитектурным слоем. Правильно, лишний слой абстракции никогда не помешает ;). Посмотри внимательно на Ice (что-то мне подсказывает, что ты его даже не скачивал). Очень грамотно сделано именно с упором на простоту.

>>Далее, корба за счет ужасной системы идентификации методов и объектов >>через файрволы вообще не пролазит >Не знаю, как с этим обстоит дело у ICE, но что-то мне подсказывает, >что и там не все так гладко... Я реально работал с Ice и скажу - там все _гораздо_ проще чем в ACE/TAO.

>Вообще говоря, разговоры о сложности относительно CORBA, так же как и >относительно C++, мне всегда были непонятны. На то мы и программисты, >чтобы понимать сложные вещи. Я предпочитаю иметь под рукой мощное >средство, пусть и несколько более сложное, чем мучаться с >недоделанными технологиями с кучей ограничений. Но это - мое мнение. Угу.. а есть еще понятие рынок. Почти всегда хорошо работают простые решения (по этому рулять php, java, c#, а не C++, asm или lisp). Можно сколько угодно вставать в позу и говорит "рулез С++, остальные быдлокодеры", но порули сам проектом... сразу станет понятно, языки типа С++ - для одиночек либо очень специфических вещей с небольшой группой разработчиков (пример игры: маленькая коретим + куча скриптописателей со скриптом типа луа или питона).

Я лично, работал и с корбой и с айсом... дык вот, после работы с айсом, я на корбу не вернусь... со всем ее якобы совместимостью и переносимостью... глюкалово толстенное... Ice - в данном случае проще и главное логиченее, не перегружено всякой фигней и биндингами к С, которые накладывают как немеренный рантайм, так и сложности и ограничения для других языков.

anonymous
()
Ответ на: комментарий от anonymous

>Не согласен. Спецификация minimumCORBA достаточно проста и понятна. К >тому же основная сложность для программиста - пользователя среды может >быть скрыта за дополнительным архитектурным слоем.

Правильно, лишний слой абстракции никогда не помешает ;). Посмотри внимательно на Ice (что-то мне подсказывает, что ты его даже не скачивал). Очень грамотно сделано именно с упором на простоту.

>>Далее, корба за счет ужасной системы идентификации методов и объектов >>через файрволы вообще не пролазит
>Не знаю, как с этим обстоит дело у ICE, но что-то мне подсказывает,
>что и там не все так гладко...

Я реально работал с Ice и скажу - там все _гораздо_ проще чем в ACE/TAO.

>Вообще говоря, разговоры о сложности относительно CORBA, так же как и
>относительно C++, мне всегда были непонятны. На то мы и программисты,
Блин... ну что здесь за дураццкая система форматирования :(

>чтобы понимать сложные вещи. Я предпочитаю иметь под рукой мощное
>средство, пусть и несколько более сложное, чем мучаться с
>недоделанными технологиями с кучей ограничений. Но это - мое мнение.

Угу.. а есть еще понятие рынок. Почти всегда хорошо работают простые решения (по этому рулять php, java, c#, а не C++, asm или lisp). Можно сколько угодно вставать в позу и говорит "рулез С++, остальные быдлокодеры", но порули сам проектом... сразу станет понятно, языки типа С++ - для одиночек либо очень специфических вещей с небольшой группой разработчиков (пример игры: маленькая коретим + куча скриптописателей со скриптом типа луа или питона). И обычно есть куча других сложных вещей в программе, кроме как еще и со сложной спецификацией вспомогательной части этой программы разбираться...

Я лично, работал и с корбой и с айсом... дык вот, после работы с айсом, я на корбу не вернусь... со всем ее якобы совместимостью и переносимостью... глюкалово толстенное... Ice - в данном случае проще и главное логиченее, не перегружено всякой фигней и биндингами к С, которые накладывают как немеренный рантайм, так и сложности и ограничения для других языков.

anonymous
()
Ответ на: комментарий от anonymous

>Правильно, лишний слой абстракции никогда не помешает

Вообще говоря, я не имел в виду абстракцию. Я имел в виду фреймворк, который можно было бы сделать на основе CORBA. При этом вполне можно было добиться удобной работы с одновременной совместимостью с CORBA. К примеру, у нас в команде примерно так и сделано - наработана куча готовых шаблонов и генераторов кода, которые значительно упрощают нам жизнь.

>Посмотри внимательно на Ice (что-то мне подсказывает, что ты его даже не скачивал)

Абсолютно в дырочку - не скачивал. Но читал спецификации - и совершенно не отрицаю всех прелестей ICE. Но, как мы уже выяснили, скорострельность ICE - вопрос спорный, а, чтобы оценить удобство работы, недостаточно ее скачать. Нужно как минимум сделать на ней мало-мальски весомый проект.

> со всем ее якобы совместимостью и переносимостью... глюкалово толстенное

Твой выпад может быть применен ко многим реализациям CORBA, но я перепробовал массу ORB прежде, чем перешел на TAO, и должен сказать, что этот не про него. Повторюсь, CORBA хороша настолько, насколько хороша ее реализация. Мне это напоминает известный анекдот: "Ерунда вся эта ваша опера! А что, ты в оперу ходил? Да нет, мне Петрович напел". Если тебе приходилось работать с "глюкаловом толстенным", то это не значит, что такова вся CORBA априори.

pepper
()
Ответ на: комментарий от anonymous

Основным архитектором и кодером Ice был и остается Michi Henning. Те, кто делал что нибудь более серьезное чем "Hello World" с использованием CORBA - личность легендарная (легендарная - это Doug Schmidt так его определяет), так что относительно коментов относительно дизайна ... хотя что это я ... на лоре ублюдков как мух на говне ...

>Один об'ект - одно TCP соединение. Как кто-то еще умудряется использовать это в онлайн-игрушках для меня - загадка. Либо используется единственный об'ект абсолютно для всего, либо не больше сотни-другой клиентов на сервер.

При первой операции над объектом, runtime ищет ищет УЖЕ УСТАНОВЛЕННОЕ соединение в пуле и если его нет, то ЕСТЕСТВЕННО создает новое, ну а если уже есть, то конечно использует ГОТОВОЕ! Чтобы на каждый объект создавалось новое соединение - надо изрядно потрахаться.

>При передаче callback должна быть обеспечена возможность установки обратного соединения (следствие п. 1). Костыли в виде Glacier убивают саму идею отказа от CORBA ради упрощения, но не решают проблему.

Сударь ваша тупость незнает границ. callback - это вызов кодом сервера кода клиента. 2 альтернативы - либо сервер НЕ УСТАНАВЛИВАЕТ дополнительный коннект к клиенту и по истечению некоторого времени при бездействии клиента рантайм закрывает коннект и сервер сосет *уй, либо сервер имеет возможность в любое время позвать клиента.

>дресация и способы разрешения конфликтов версий. К примеру, почти невозможно дать свой адрес, если у вас в /etc/hosts прописано 127.0.0.1 localhost myhostname Кто им сказал, что там должно быть что-то еще, кроме 127.0.0.1? Зачем пытаться определять свой адрес, если, в общем случае, это просто невозможно, поскольку хост может быть за NAT-ом, он может иметь больше, чем один адрес... Короче, фигня полнейшая. И это прибито гвоздями, от этого не избавится, не переписав все заново.

Урод мля! Ну НАПИШИ в ЦИФРОВОЙ ФОРМЕ! Вместо "myhostname" поставь цифири! Только не пи*ди что этого нельзя зделать!

лор не перестает удивлять!

anonymous
()
Ответ на: комментарий от anonymous

>Пока что у ICE вижу приимущество в документации, в стабильной и версии, а не #define API_TO_CHANGE, в биндингах в C++ и работе под виндой

Разуй зенки и увидь IceGrid, IceStorm, IceBox, Glacier2, Freeze, IcePatch2.

anonymous
()
Ответ на: комментарий от smalex

>Да уж. Неплохой рекламный ход. Но и только. Всё что написано про CORBA так скажем не совсем правда, направлено на тех кто CORBA никогда не использовал или использовал, но очень мало.

Ну а ты опровергни. http://www.zeroc.com/iceVsCorba.html вот отсюда и по пунктам. Есть конечно спорные вещи - про Scalability например и про еvictor смешно (зделать с нуля 5 минут).

anonymous
()
Ответ на: комментарий от int19h

>Судя по данному списку - сие просто заточено под локалку, by design. А вот кто игры на этом додумался делать, действительно, непонятно...

Судя по списку - писателя недавно выпустили из дома для умственно неполноценных.

anonymous
()
Ответ на: комментарий от anonymous

>Цель же, которую преследуют разработчики ICE - это "быстрый ORB", скорость которого, как выясняется, достаточно спорна.

Дурь. Цель совсем другая.

anonymous
()
Ответ на: комментарий от pepper

>А мне и не приходится - приходится многим другим, для кого Шмидт продолжает поддержку ACE/TAO

Шмидт в рассылке давно поговаривает о том, что ACE нужно переписывать. Код ACE уже приводят как пример того, как ненужно писать.

anonymous
()
Ответ на: комментарий от anonymous

>>Цель же, которую преследуют разработчики ICE - это "быстрый ORB", скорость которого, как выясняется, достаточно спорна.

>Дурь. Цель совсем другая.

Конечно, другая. И нам, простым смертным не понять, какая, и продолжать "городить дурь". Автор, по видимому, знает ее, но нам о ней не скажет.

pepper
()
Ответ на: комментарий от anonymous

> Судя по списку - писателя недавно выпустили из дома для умственно неполноценных.

Неплохо бы услышать аргументы в поддержку подобных заявлений, если таковые вообще имеются.

anonymous
()
Ответ на: комментарий от anonymous

> Про применения ответили... добавлю что еще надо ексепшионы выключать, когда либа вызывается из С приложений. Про производительность с ексепшинами - есть официальные измерения (где-то были, найду запостю, дык там и скорость и размер до 30% сжираются, но производительность съедается при раскручивании... при обычном выполнении это почти незаметно)

дык, ключевое слово тут - при раскручивании. вполне согласен. но исключения - это способ сигнализации ошибочных ситуаций. и по-идее в правильном дизайне системы их количество в сравнении с нормальными циклами работы программы минимально. ну а если же исключения используются как штатный механизм передачи управления вверх тут и там - пардон, в этом случае виноваты отнюдь не исключения, это уже broken design :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от pepper

> Прямо так пример не приведу, но это общеизвестный факт - достаточно изучить механизм генерации и обработки исключений. Не будете же Вы отрицать, что возврат кода ошибки гораздо быстрее, чем рекурсивное разворачивание стека и поиск мест отлова исключений.

вот так с ходу не соглашусь но и не опровергну. думать нужно.

> Конечно же, современные компиляторы в достаточной степени могут оптимизировать такие вещи, но, все же, они не настолько умны, чтобы сделать код настолько же быстрым. Опять же - поддержка более старых компиляторов с их устаревшими оптимизаторами ;)

безотносительно: девиз "legacy наше все" вот уже где сидит :-/

> За деталями могу Вас отослать все к той же книге по ACE, ссылку на которую я дал выше.

AFAIR комрадо Шмидт сам же и говорил, что в самом механизме исключений нет ничего плохого. наоборот, лишь польза. но, "есть платформы, которые их не поддерживают но на которых поддерживается ACE". c est la vie и это вопрос приоритетов проекта плюс исторически сложившиеся установки. но IMHO отнюдь не вопрос производительности скажем ACE.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от anonymous

>мужика зовут Шмидт.
Да... это я попутал :), солнцем напекло...

>Твой выпад может быть применен ко многим реализациям CORBA, но я
>перепробовал массу ORB прежде, чем перешел на TAO, и должен сказать,
>что этот не про него. Повторюсь, CORBA хороша настолько, насколько
>хороша ее реализация. Мне это напоминает известный анекдот: "Ерунда
>вся эта ваша опера! А что, ты в оперу ходил? Да нет, мне Петрович напел
>". Если тебе приходилось работать с "глюкаловом толстенным", то это не >значит, что такова вся CORBA априори.

Работал и с Omni (урезенная она) и с TAO. CORBA реально сильно перегруженный стандарт, к тому же найти орб, который поддерживает нормально все спецификации - это нереально :). Т.е. спецификация есть, реализаций нет.

Про неуклюжесть и толстость я говорил в сравнении с Ice. Третий проект был на Ice. Очень мне понравилось, элегантно, просто и как следствие быстро (после правки соотвествующих Network.cpp и TcpCOnnection.cpp под поддержку нативных /dev/poll kevent и wmfo). Есть косяки (например с поддрежкой ssl, но это тоже поправили).

Разговор идет о том, что если нужна супер производительность с возможностью заточки под себя - это Ice, при том что при заточке протокол не страдает. Если нужно легаси (который давить) то тут корба...
реализации на чем угодно от С до жавы...

>При этом вполне можно было добиться удобной работы с одновременной
>совместимостью с CORBA. К примеру, у нас в команде примерно так и
>сделано - наработана куча готовых шаблонов и генераторов кода, которые
>значительно упрощают нам жизнь.
Вершь нет, но в Ice ничего такого писать не потребовалось... Как писал выше только платформенно зависимые вещи, хотя было желание (и деже вопрос разрабам задавал) прикрутить ACE ;), но помешал мой уход из С++.

anonymous
()
Ответ на: комментарий от anonymous

>> на windows ice медленне чем TAO
> нужна скорость - используйте omni.

омни выигрывает в скорости только если не использовать верификацию
при этом он как бы это - не совсем стандарту соответствует

yeolahim
()
Ответ на: комментарий от anonymous

>Неплохо бы услышать аргументы в поддержку подобных заявлений, если таковые вообще имеются.

Аргументы были приведены выше и попунктно.

anonymous
()
Ответ на: комментарий от yeolahim

>омни выигрывает в скорости только если не использовать верификацию 
при этом он как бы это - не совсем стандарту соответствует


О чем речь? omni выигрывает ВСЕГДА. Сам конечно не мерял, однако -

<quote>

omniORB is widely considered as one of the fastest ORBs around.  I 
recommend you check out 

http://www.atl.external.lmco.com/projects/QoS/compare/dist_oo_compare... 
http://nenya.ms.mff.cuni.cz/~bench/ 

for lots more information, benchmarks, and performance comparisons of 
various middleware. 

Thanks, 

        Doug 

-- 
Dr. Douglas C. Schmidt                       Professor and Associate 
Chair 
Electrical Engineering and Computer Science  TEL: (615) 343-8197 
Institute for Software Integrated Systems    WEB: 
www.dre.vanderbilt.edu/~schmidt 
Vanderbilt University, Nashville TN, 37203   NET: 
d.schm...@vanderbilt.edu

</quote>

anonymous
()
Ответ на: комментарий от yeolahim

>при этом он как бы это - не совсем стандарту соответствует

Да про стандарт - omni полностью соответствует CORBA 2.6 там нет "только" OBV и и portable interceptors (interceptors там есть - только они не portable). Хотя 4.1, которая полностью соответствует 2.6 спекам (и С++ мапинг версии 1.1!) уже в beta 2.

anonymous
()
Ответ на: комментарий от anonymous

>О чем речь? omni выигрывает ВСЕГДА. Сам конечно не мерял, однако -

>omniORB is widely considered as one of the fastest ORBs around. I >recommend you check out

widely considerated _AS ONE OF_ не переводится как ВСЕГДА ;)

anonymous
()
Ответ на: комментарий от anonymous

>Работал и с Omni (урезенная она)

Реально - отсутствует только OBV. Неприятно - но не смертельно.

>CORBA реально сильно перегруженный стандарт

Хм... кто бы спорил!

>тому же найти орб, который поддерживает нормально все спецификации - это нереально :). Т.е. спецификация есть, реализаций нет.

Дурь. Любая реализация от Iona например. TAO - полностью соответствует 2.6. Mico - полностью 2.6. Интересно КАК человек говорит о проектах с CORBA и незнает таких вещей? Хотя может тестером был ...

>Про неуклюжесть и толстость я говорил в сравнении с Ice.

Это правда. Пересаживаться с CORBA на Ice - одно удовольствие.

>Есть косяки (например с поддрежкой ssl, но это тоже поправили)

C ssl проблем непомню. Даже если и были ( как известно кода без ошибок не бывает) - форум у них очень дружественный и реагируют мгновенно (особенно на ошибки).

>Вершь нет, но в Ice ничего такого писать не потребовалось... Как писал выше только платформенно зависимые вещи, хотя было желание (и деже вопрос разрабам задавал) прикрутить ACE ;),

А кто такие разрабы? Пихать ACE в Ice - это круто! Поздравляю.

>но помешал мой уход из С++.

У меня смутное подозрение что С++ от этого только выиграл.

anonymous
()
Ответ на: комментарий от anonymous

>widely considerated _AS ONE OF_ не переводится как ВСЕГДА ;)

Ты чурка или где? Цитата была приведена ради ссылок на тесты.

anonymous
()
Ответ на: комментарий от anonymous

> Ты чурка или где? Цитата была приведена ради ссылок на тесты.

Сам ты чурка придурок...

Можешь глянуть на OrbRiver/C++ чтобы понять чне не ВСЕГДА а именно _ПОЧТИ ВСЕГДА_...

"Сам не читал, но осуждаю"(c)... а еще померь для своей конкретной задачи и будет понятнее, что тесты и реальный мир отличаются... умник.

anonymous
()
Ответ на: комментарий от anonymous

во первых - терпеть немогу анонимных фанатиков
во вторых - 3.0 уже давно как ...
в третих - portable interceptors достаточно что-бы ...
в четвертых - там не совсем так все просто
в пятых - я ничего не имею против omni - но строить проект на орбе
исходя только из "считается многими" - жутький дебилизм

yeolahim
()
Ответ на: комментарий от anonymous

> callback - это вызов кодом сервера кода клиента. 2 альтернативы - либо сервер НЕ УСТАНАВЛИВАЕТ дополнительный коннект к клиенту и по истечению некоторого времени при бездействии клиента рантайм закрывает коннект и сервер сосет *уй, либо сервер имеет возможность в любое время позвать клиента.

вот именно! представь ситуацию, когда клиент не может иметь "правильного" адреса (случаи с nat я бы не назвал редкостью). я разбирался с деталями реализации и хорошо помню, что callback отдается серверу ввиде адреса, который известен клиенту. ну, и куда сервер будет коннектиться для вызова такого callback? а в ice для java вообще засада получалась - они брали имя хоста и получали адрес из gethostbyname, что в случае с dhcp, например, приводило к казусам типа callback на 127.0.0.1 или что там было прописано.

а свою дыру в башке тебе лучше держать закрытой - воняет, знаешь ли...

anonymous
()
Ответ на: комментарий от anonymous

>>Вершь нет, но в Ice ничего такого писать не потребовалось... Как >>писал выше только платформенно зависимые вещи, хотя было желание (и >>деже вопрос разрабам задавал) прикрутить ACE ;),

>А кто такие разрабы? Пихать ACE в Ice - это круто! Поздравляю. Разработчики... так сократил. Ты видел, чего они наваяли? Если так подходить, то система с 100-ней соединений просто умрет из-за дебильного select(). ACE вполне себе нормальный слой абстракции для работы с сетью и не вижу ничего в этом плохого... Зачем писать ifdef WIN32 и придумывать свои извраты?

>>но помешал мой уход из С++.

>У меня смутное подозрение что С++ от этого только выиграл. Ну началось... красноглазые меня не перестают удивлять... почему любую дискуссию надо сводить к личностям? После 12 лет в С++ мне он элементарно надоел... пущай уже спокойно сдохнет. По этому это благо, чем больше народу из него уйдет, тем лучше для него же... останутся хорошие воспоминания, а не то что из него сейчас делают boost и сотоварищи... ага. (на последний выпад просьба не отвечать, ибо в ответ все равно ниче писать не буду, ибо не по теме)

anonymous
()
Ответ на: комментарий от anonymous

>>Вершь нет, но в Ice ничего такого писать не потребовалось... Как
>>писал выше только платформенно зависимые вещи, хотя было желание (и
>>деже вопрос разрабам задавал) прикрутить ACE ;),

>А кто такие разрабы? Пихать ACE в Ice - это круто! Поздравляю.

Разработчики... так сократил. Ты видел, чего они наваяли? Если так подходить, то система с 100-ней соединений просто умрет из-за дебильного select(). ACE вполне себе нормальный слой абстракции для работы с сетью и не вижу ничего в этом плохого... Зачем писать ifdef WIN32 и придумывать свои извраты?

>>но помешал мой уход из С++.

>У меня смутное подозрение что С++ от этого только выиграл.

Ну началось... красноглазые меня не перестают удивлять... почему любую дискуссию надо сводить к личностям? После 12 лет в С++ мне он элементарно надоел... пущай уже спокойно сдохнет. По этому это благо, чем больше народу из него уйдет, тем лучше для него же... останутся хорошие воспоминания, а не то что из него сейчас делают boost и сотоварищи... ага. (на последний выпад просьба не отвечать, ибо в ответ все равно ниче писать не буду, ибо не по теме)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.