Могут ли 32-разрядные и 64-разрядные программы обмениваться данными с помощью MSMQ?

У меня есть «серверное» приложение, скомпилированное в 32-разрядной версии, и я хочу, чтобы оно взаимодействовало с 64-разрядным «клиентским» приложением с помощью MSMQ. Это возможно?

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

Спасибо.


person Lanaru    schedule 15.06.2012    source источник
comment
Вы можете получить дополнительные отзывы о SuperUser.SE или ServerFault.SE по этому конкретному вопросу.   -  person ildjarn    schedule 15.06.2012


Ответы (1)


Похоже, что интерфейс MSMQ соответствующим образом абстрагирован от базовой архитектуры, с которой 32-разрядные и 64-разрядные системы должны взаимодействовать. Это, безусловно, имело бы место, если бы они разговаривали через сетевой сокет, даже если механизм RPC более низкого уровня вышел из строя (чего не должно быть).

До тех пор, пока вы будете осторожны с маршалингом и демаршаллингом ваших типов данных, все будет в порядке.

person Rook    schedule 15.06.2012
comment
Я слегка удивлен, что предложение повышения не сработало. Однако я никогда не использовал его сам. Погуглив, можно предположить, что Boost 1.48 должен лучше справляться с разделением памяти между 32- и 64-битными приложениями; с какой версией буста вы работаете? - person Rook; 15.06.2012
comment
Имейте в виду, что это исправление общей памяти могло не решить проблему с очередями. - person Rook; 15.06.2012
comment
Я работаю с бустом 1.49. Существует явная вероятность того, что несовместимость между моими 32-битными и 64-битными приложениями могла быть вызвана моей собственной ошибкой, поэтому я счел необходимым упомянуть об этом в своем вопросе. Я скомпилировал оба своих приложения дважды - 32-битные версии работали друг с другом, а 64-битные версии работали друг с другом, но когда я попытался смешать 32- и 64-битные приложения, они, похоже, не смогли получить доступ к одной и той же очереди сообщений. . - person Lanaru; 15.06.2012
comment
Трудно сказать, связана ли проблема с вашей библиотекой или кодом сортировки на вашем конце. Вы можете попробовать опубликовать пример сбоя; Возможно, я не смогу сказать, действительно ли он сломан, но здесь есть много других пользователей Boost. - person Rook; 15.06.2012
comment
@Rook: вы можете подумать о Boost.MPI, у которого нет проблем с переносимостью; однако я думаю, что ОП имеет в виду Boost.Interprocess, который определенно не будет работать так, как он хочет. - person ildjarn; 16.06.2012