Если получатель запроса может быть представлен независимым от адресного пространства способом, вы можете передать объект команды для запроса другому процессу и выполнить запрос там.
от : http://www.worldcat.org/isbn/9780201633610
Как объект может быть представлен в адресном пространстве независимо от C ++?
редактирование: Как объект может быть представлен в адресном пространстве независимым способом в c ++, чтобы позволить передачу объектов команды другому процессу и быть в состоянии выполнить запрос?
Я думаю, что приведенный вами абзац взят из шаблона Command.
Описание шаблона также можно найти в Интернете на различных сайтах. Например. https://en.wikipedia.org/wiki/Command_pattern.
Наиболее распространенными проявлениями шаблона Command, в которых данные, соответствующие команде, передаются независимым способом в адресном пространстве, являются:
Я уверен, что есть еще много технологий, которые позволяют вам выполнить команду на удаленном компьютере или в другом процессе. Они могут работать только потому, что команда может быть представлена в адресном пространстве независимо и передаваться через сеть или через границы процесса.
Как объект может быть представлен в адресном пространстве независимо от C ++?
Если отправитель и получатель команды могут договориться о представлении данных для основных типов, таких как char
, int
, long
, float
, double
они обычно могут использовать их в качестве строительных блоков, чтобы разрешить отправку и получение объектов более высокого уровня.
У меня этого нет Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения Книга под рукой, но я предполагаю, что автор подразумевает, что алгоритмы не должны зависеть от фактических значений адресов объектов.
Поэтому, если вы используете некоторую хеш-таблицу для какого-либо ключа, вы не будете использовать адрес ключа для хеширования, но некоторый хэш будет связан с содержанием ключа.
Вы не хотите, чтобы наблюдаемое поведение вашей программы зависело от ASLR.
Чтобы общаться с другими процессами, вам лучше использовать сериализация методы и форматы (например, JSON) и вы не хотите, чтобы этот формат зависел от реальных адресов (в частности, он никогда не должен изменяться из-за ASLR).
Это не означает, что на самом низком уровне объекты не содержат адресов или указателей (поскольку указатели повсеместны в C ++). Это просто означает, что вам не нужны конкретные числовые значения этих адресов.
Что касается обновлений вашего вопроса:
Как объект может быть представлен в адресном пространстве независимым способом в C ++, чтобы включить передачу командных объектов в другой процесс и сможете выполнить запрос?
Это делается с использованием де- / сериализации для связи любого командные объекты к другому процессу и соответствующей технологии IPC (самая простая для транспорта — IMHO, основанная на сокете).
Стандартных идиоматических решений для С / С не существует, но гугл протобуф или же повышение :: сериализации оказать хорошую помощь