.net进程戳海誓山盟?

使用.net和w / o使用特定于平台的东西是否有一种方法可以让我的两个应用程序互相戳?这两个应用都将运行.这特别是单向戳.我需要传递一个最小的int64值.它将在
Linux上运行单声道,但我将在Windows上开发

– 编辑 – 附加信息.一个过程将是asp.net,这意味着我不能花很长时间去做戳.由于页面请求,生命周期将小于50毫秒.此外,我每分钟可能有任何写/戳请求或每10分钟一次

最佳答案 我们成功使用的一种方法是命名管道.在.net 3.5中,他们添加了本机支持,因此您不必使用p / invoke来获取相应的win32 API.

退房:以http://www.switchonthecode.com/tutorials/dotnet-35-adds-named-pipes-support为例.

简而言之,您将要做的是创建一个具有指定名称的客户端/服务器机制(“命名管道”);服务器将设置管道并等待客户端连接…客户端将连接到管道并在其间发送数据.

关于这一点的好处是你可以轻松发送整个数据结构(只要它们被标记为[Serializable]).这允许您丰富地实现特定消息(这也包括Enums)

有一点需要注意:默认情况下,命名管道是同步的(阻塞),因此如果服务器未启动,您对Connect()的调用将永远运行〜.您可以使用异步模式,也可以在线程中运行同步代码,以后可以放弃/中止.在铺设基础时要记住这一点,因为如果您没有计划,那么切换到异步管道使用可能会有点工作.

[Serializable]
public enum CmdType
{
    cmdTypeOne,
    someOtherCmdType
}

[Serializable]
public class Command
{
  CmdType eCmdType;
  // other command payload
}
点赞