Межплатформенная альтернатива COM

Определенно, да, вы должны использовать Zend \ Session \ Container

Контейнер расширяет ArrayObject и создает экземпляр с флагом ARRAY_AS_PROPS, что означает, что вы можете легко перебирать свойства и читать / писать их, например,

use Zend\Session\Container as SessionContainer;

$this->session = new SessionContainer('post_supply');
$this->session->ex = true;
var_dump($this->session->ex);

Первый аргумент - это пространство имен сессии, а второй - Manager . Manager является фасадом для Storage и SaveHandler и настроен на ConfigInterface для сохранения данных сеанса в БД или на сервере Memcache.

9
задан Ian Boyd 7 June 2009 в 14:49
поделиться

8 ответов

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

3
ответ дан 4 December 2019 в 15:25
поделиться

ICE от ZeroC http://www.zeroc.com/ - еще одна альтернатива.

Для тех старожилов CORBA Мичи Хеннинг был одним из гуру. дня. Сейчас он с ZeroC. Это кроссплатформенная система с открытым исходным кодом, включающая все ваши целевые системы (включая Linux).

C ++ - только один из языков, и привязки ICE к C ++ значительно лучше, чем привязки CORBA C ++.

3
ответ дан 4 December 2019 в 15:25
поделиться

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

Определенной альтернативой может быть XPCOM http://en.wikipedia.org / wiki / XPCOM - отсутствие MSVC не означает отсутствие кроссплатформенности.

Удачи

2
ответ дан 4 December 2019 в 15:25
поделиться

Как вы думаете, почему CORBA недостаточно быстра? Вы в последнее время что-нибудь измеряли?

Современные реализации CORBA могут выполнять удаленные вызовы менее чем за 150 мксек. Намного меньше вашего бюджета в 2 мсек. Современные реализации CORBA могут оптимизировать внутрипроцессные вызовы в основном для двух вызовов виртуальных функций, хотя обычно для этого требуется, чтобы приложение отказывалось от некоторых функций (например, перехватчиков). Даже полнофункциональные локальные вызовы в худшем случае представляют собой пару поисков + некоторые виртуальные звонки, у меня нет удобных номеров, но я уверен, что они ниже 50 мкс.

Проверьте это, чтобы узнать некоторые показатели производительности:

http://www.dre.vanderbilt.edu/Stats/performance .shtml

1
ответ дан 4 December 2019 в 15:25
поделиться

Взгляните на Архитектуру AF :

«Af-Arch - это полный набор библиотек и инструментов, который позволяет разрабатывать распределенную систему, специально разработанную для решения проблем. о бизнес-приложениях »

Я знаю, что это работает с Linux и Windows. Я также знаю, что у него очень быстрый C API и привязки к C #.

0
ответ дан 4 December 2019 в 15:25
поделиться

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

1
ответ дан 4 December 2019 в 15:25
поделиться

Думаю, вам стоит заглянуть в VortexLibrary .

Это полная реализация BEEP, которая обеспечивает хорошую основу для разработки любого протокола однорангового приложения. Он уже объединяет аутентификацию (с использованием SASL) и безопасные соединения (с использованием TLS), оба варианта.

Vortex также включает в себя реализацию профиля XML-RPC с компилятором IDL, который должен предоставить вам достаточную основу для маршалинга ... и самое лучшее, что вы можете позже предоставить более конкретный протокол поверх того же сеанса, чтобы выполнить двоичную передачу без ограничений XML-RPC.

Он запрограммирован на C, но также работает с C ++. В настоящее время он работает, и регрессионные тесты обеспечивают его работу под Linux, Windows и MAC.

Ура!

0
ответ дан 4 December 2019 в 15:25
поделиться

Взгляните на D-Bus (да, для окон тоже ), который является современным духовным наследником различных компонентных фреймворков (CORBA, Gnome Bonobo, DCOM для KDE).

Если межпроцессный маршаллинг приводит к проблемам с производительностью, постарайтесь перенести тяжелую работу на разделяемую память ( boost.interprocess поможет сохранить кроссплатформенность. ).

1
ответ дан 4 December 2019 в 15:25
поделиться