在Windows CE中进行跨进程通信的最佳机制是什么?

时间:2009-06-03 18:09:09

标签: .net compact-framework windows-ce

我需要广播一个可以在Windows CE 5设备上运行的任何应用程序选择的事件。

之前没有这样做,所以我有兴趣知道如果有什么我没有考虑过,人们会建议看什么技术。

所有需要接收此事件的应用程序都是基于.NET Compact Framework的,因此可以考虑“仅管理”解决方案。

2 个答案:

答案 0 :(得分:6)

我发誓我已经在某个地方回答了这个问题 - 这里,新闻组,博客,还有什么东西 - 但是我找不到它,所以这里又是:

在Windows CE下,你真的有4个IPC选项。我将在这里专注于CF解决方案。

  1. 使用套接字。这是一个痛苦,因为事件源需要知道接收器的存在。这当然是我最不喜欢的选择,我从不接近它。
  2. 命名系统事件(a-la CreateEvent API)。这适用于一个简单的布尔类型事件,例如“this is on”。 CE很好,因为您还可以将32位值与事件(SetEventData)相关联。对于托管实施,see this blog entry(实际的班级为in the SDF)。
  3. 内存映射文件。我在几个客户项目中使用的SDF has an implementation,因此经过了相当好的测试。总有一天我应该写一篇关于如何使用它的博客文章,但你很聪明,很可能会从文档中找到它。
  4. 点对点消息队列。这些是特定于CE的,但很酷。内核将它们用于很多系统内容。它们非常快速且稳健。再次,the SDF has an implementationMSDN has an article on usage,但请记住,MSDN代码中存在一些SDF修复过的错误。

答案 1 :(得分:1)

我见过的大多数解决方案都使用自定义消息传递协议。

.Net套接字也已被使用。

我知道紧凑型框架3.5中有WCF,但是有一些限制,并且有很多反馈说它不可靠。

大多数机制的最大问题是序列化版本控制。

请参阅此处查看CF 3.5