【发布时间】:2011-01-02 03:01:17
【问题描述】:
我正在使用 C dll 来挂钩全局 Windows 事件,下一步是将一些事件数据(不是很大)发送到 C# 应用程序。
由于我希望这种通信尽可能快,我正在分析两个选项:命名管道和内存映射文件。
我知道 .NET 4 以本机方式带来了 MMF,但我必须针对 .NET 2,因为 Win98 客户端的存在仍然是可能的。我也知道有一些方法可以通过 Windows API 使用 .NET 2 来管理 MMF(有些人甚至为它构建了一些包装器)。
在这种情况下,我想知道:
- 选择命名管道而不是 MMF 有什么大的缺点(主要是性能)吗?请务必记住,我不会传输大量数据;
- 在 NP 或 MMF(针对 .NET 2)中是否存在任何安全问题?
- 还有比这些更好的选择吗?
【问题讨论】:
-
这并不重要,但 Win98 EOL 是 2006 年 7 月 11 日。听到仍然有人坚持它,我很难过。我不羡慕你菲利佩……
-
有关主题的更多信息,您可以在 .NET 2 中通过 P/Invoke 使用 MMF。
-
在这种情况下我不能使用 P/Invoke,因为全局挂钩附加到每个进程执行,所以程序必须用本地语言(C、Delphi、VB 等)编写.是的,Martinho,这个 Win98 依赖真的很臭。如果你很难过,想象一下我们的团队.. :)
-
我想你误解了什么 pinvoke 它。这就是c#调用本机代码的方式
标签: .net c ipc named-pipes memory-mapped-files