Каков наилучший механизм взаимодействия между процессами в Windows CE? - PullRequest
2 голосов
/ 03 июня 2009

Мне нужно передать событие, которое может быть обнаружено любым приложением, работающим на устройстве Windows CE 5.

Раньше я этого не делал, поэтому мне было бы интересно узнать, какие методы люди предложили бы увидеть, если есть что-то, что я не рассматривал.

Все приложения, которые должны получить это событие, основаны на .NET Compact Framework, поэтому можно рассматривать решения "только для управления".

Ответы [ 2 ]

6 голосов
/ 04 июня 2009

Клянусь, я где-то ответил на это - здесь, группы новостей, блог, что-то - но я не могу найти это, так что вот снова:

У вас действительно есть 4 варианта IPC под Windows CE. Здесь я сосредоточусь на решениях CF.

  1. Используйте розетку. Это боль, поскольку источник событий должен знать о существовании раковины. Это, безусловно, мой наименее любимый вариант, и я использую его почти никогда.
  2. Именованное системное событие (а-ля API CreateEvent). Это работает для простого события булевого типа, такого как «это включено». CE хорош тем, что вы также можете связать 32-битное значение с событием (SetEventData). Для управляемой реализации см. Эту запись в блоге (фактический класс - в SDF ).
  3. Файл, сопоставленный с памятью. SDF имеет реализацию , которую я использовал в нескольких проектах клиентов, поэтому он довольно хорошо протестирован. Когда-нибудь я должен сделать сообщение в блоге о том, как его использовать, но вы умны и, вероятно, сможете понять это из документов.
  4. Очередь сообщений точка-точка. Они специфичны для CE, но очень крутые. Ядро использует их для многих системных задач. Они очень быстрые и надежные. Опять же, SDF имеет реализацию . В MSDN есть статья по использованию , но имейте в виду, что в коде MSDN есть некоторые ошибки, которые исправил SDF.
1 голос
/ 03 июня 2009

В большинстве решений, которые я видел, используется собственный протокол обмена сообщениями.

.Net сокеты также были использованы.

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

Самая большая проблема с большинством механизмов - управление версиями сериализации.

Смотрите здесь для CF 3,5

...