IPC: связь между процессами Qt и MONO (в Linux) - PullRequest
1 голос
/ 07 мая 2010

Мне нужно подключить приложение Qt4 к моно-приложению. Текущее подтверждение концепции использует сетевые сокеты (что приятно, я могу отлаживать, используя nc в командной строке).

Но я открыт для новых предложений. Каковы мои альтернативы?

Edit:

Исходный стек приложений разделен на две части: сервер + клиент. Клиент должен показать фотографии и видео. Поскольку мы обнаружили, что это невозможно в обычном режиме в Mono, мы разделили клиента на две части:

сервер -> клиент -> GUI

В исходной реализации клиент + графический интерфейс были одним и тем же приложением. Теперь клиент находится в C # (работает на Mono), а графический интерфейс - Qt4. Переписать клиента в Qt4 не вариант.

В настоящее время связь между клиентом и графическим интерфейсом осуществляется с помощью TCP-сокетов через localhost. Я ищу лучшие реализации.

Edit2: Хотя приложение в настоящее время работает на Linux, я хотел бы также установить эту систему на Windows. Клиент (у которого есть сокет прослушивания ...) работает на Win32, а Qt4 кроссплатформенный.

Ответы [ 2 ]

0 голосов
/ 07 июня 2010

Вы можете:

  1. Внедрите Mono в ваше приложение (предположительно C ++) Qt 4, используя API встраивания Mono .
  2. Инвертируйте (1), предоставляя C API из вашего GUI, чтобы вы могли управлять им из кода Mono с помощью P / Invoke.
  3. Используйте смесь (1) и (2) - встраивайте Mono, вызывайте его с помощью API встраивания, вызывайте его с помощью P / Invoke.
  4. Используйте другие механизмы IPC, такие как сокеты Unix или разделяемая память, которые могут быть быстрее и избежать блокировки порта IP.

Я бы порекомендовал (3).

0 голосов
/ 11 мая 2010

Вы можете написать законченный проект на C # с помощью Qyoto, вы не пишете код на двух разных языках, доступ к нативному API в C # является очень сложной задачей и занимает много времени.

Вы можете использовать Qyoto , который связывает C # для Qt. Существует дополнение Qyoto для MonoDevelop с именем 'QyotoDevelop' .

...