Рекомендация для обертки C++ для кросс-платформенной незавершенной динамической привязки библиотеки (т.е. легкий вес, высокопроизводительный COM или CORBA) [закрытый]

Я был бы второе @Zizzencs предположение, что Вы могли бы хотеть что-то, что это не полностью (R) центрально DB

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

я реализовал системы меток с помощью 3 таблиц для представления отношений Many-Many прежде (Теги Объекта ItemTags), но я предполагаю, что Вы будете иметь дело с тегами в большом количестве мест, я могу сказать Вам, которые с 3 таблицами, имеющими необходимость управляться/запрашиваться одновременно все время, определенно сделают Ваш код более сложным.

Вы могли бы хотеть рассмотреть, стоит ли добавленная сложность того.

9
задан Cœur 6 August 2017 в 11:16
поделиться

2 ответа

Думаю, это тоже может сработать: http://pocoproject.org/docs/Poco.SharedLibrary.html

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

Библиотека ACE содержит оболочки для загрузки динамических библиотек, работающих кросс-платформенных. Если вам нужен больший комфорт, чем обычная библиотека loadlibrary, посмотрите TAO The ACE ORB. Использование corba с TAO чрезвычайно производительно и, скорее всего, превосходит любую самостоятельно созданную инфраструктуру плагинов, особенно если вы используете их в вызовах процессов, поскольку TAO оптимизирует их.

Для использования кроссплатформенной оболочки динамической библиотеки используйте ACE_DLL . Он предоставляет базовую кроссплатформенную оболочку для loadlibrary (), о которой вы упомянули.

Между использованием ACE_DLL и использованием TAO находится структура конфигурации службы ACE, которая позволяет вам динамически загружать объекты. После загрузки вы можете получить указатель восходящего преобразования на загруженный объект, который вы реализовали, и можете вызвать любой метод для загруженного объекта.

Код для этого будет выглядеть следующим образом:

char const * const cpc_myClass = ACE_DYNAMIC_SERVICE_DIRECTIVE(
  "myclass",
  "dllname",
  "_make_MyClass",
  ""
);
result = ACE_Service_Config::process_directive(cpc_myClass);
MyClass * p_obj = ACE_Dynamic_Service<MyClass>::instance ("myclass");
p_obj->callAnyMethodYouLike();

Здесь объясняется, что TAO знает два типа оптимизации размещения (thru_poa и прямая):

При использовании прямой стратегии вызовы методов для совместно размещенных объектов становятся прямыми вызовами серванта без проверки статуса POA.

Вы можете быть удивлены, насколько эффективной может быть TAO при правильном использовании. Я предлагаю создать простое доказательство концепции и провести измерения.

4
ответ дан 4 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: