Я новичок в DDS... пока у меня мало опыта в OpenDDS и CycloneDDS
Можно ли определить класс внутри файла бездействия и иметь переменные-члены и методы-члены? или в стандартах DDS поддерживаются только структуры и примитивные типы данных?
Я новичок в DDS... пока у меня мало опыта в OpenDDS и CycloneDDS
Можно ли определить класс внутри файла бездействия и иметь переменные-члены и методы-члены? или в стандартах DDS поддерживаются только структуры и примитивные типы данных?
Язык IDL определен в спецификации OMG IDL. Он состоит из ряда строительных блоков, включающих основные типы данных, такие как упомянутые вами структуры и примитивные типы данных, и интерфейсы, включающие методы, о которых вы спрашивали.
Однако только часть этих строительных блоков используется DDS. Для текущей версии 4.2 раздел 9.3 Профили DDS определяет, какие из них относятся к трем различным уровням поддержки DDS: Простой DDS, Расширяемый DDS и DDS поверх RPC.
Вы увидите, что последний действительно включает в себя интерфейсы стандартных блоков — базовые, как и следовало ожидать от RPC. Однако не все реализации DDS поддерживают RPC. Простой DDS и Расширяемый DDS поддерживаются чаще, и интерфейсы не являются частью этих функций.
Поскольку вы спрашивали об этом в другом вопросе: обратите внимание, что функциональность интерфейса, описанная в DDS через RPC, предназначена не для распространения объектов с их методами, а для удаленного вызова методов объектов — как подразумевается удаленный вызов процедур.
Другой ответ на ваш вопрос заключается в том, что вы, возможно, задаете дополнительный вопрос, как если бы он был первоначальным. Существует много разных способов построения распределенных систем, и, учитывая ваш вопрос, кажутся подходящими три примера:
Ваш вопрос предполагает, что вы ищете промежуточное программное обеспечение для выполнения распределенных объектных вычислений. Если это действительно то, что вы ищете, DDS — очень неоптимальный выбор. Да, RPC можно построить поверх него (RPC-over-DDS просто делает это немного проще), и в системе, построенной преимущественно на распределенном состоянии, это имеет смысл.
Если вы можете сериализовать объекты с их методами, то, конечно, вы можете использовать DDS для их распространения в сети (есть забавные вещи, которые вы можете делать таким образом). Однако это больше зависит от используемого вами языка программирования, чем от промежуточного программного обеспечения, и IDL вам в этом не поможет.