如何在.NET程序之间共享信息

时间:2015-08-05 07:32:24

标签: asp.net .net ipc

我正在研究.NET Web应用程序,它也在后台运行不同的工作。这些后台作业更新数据库,创建报告文件,删除旧文件等。

作业按计划触发,调度程序本身每小时通过Windows任务计划程序触发。

到目前为止,我一直通过将消息记录到Windows事件查看器来监视作业的状态,但这种方法非常麻烦。 我想实现一个带有GUI的新程序,该程序将与作业通信并监视其活动。首先,gui应显示以下信息:

  • 状态(运行与空闲)
  • 进度条(“完成24%”,“23423项中的327项已完成”)

gui.exe应独立于jobs.exe运行(启动或停止gui不应影响作业,反之亦然)。

我正在寻找建议,在jobs.exe和gui.exe之间共享信息的最佳方式是什么

2 个答案:

答案 0 :(得分:0)

一般答案 - 所有形式的IPC都涉及使用两个流程都可访问的一些共享资源。示例:

  • 网络套接字(“网络”作为共享资源)
  • 命名管道
  • 共享内存
  • 普通的旧磁盘文件(不是做IPC的最好方法,但仍然是有效的)
  • 共享数据库

特定的.NET选项:

  • 远程处理
  • WCF
  • Web API
  • 命名管道

仅举几例。

研究其中一些,看看它们是否适合您的用例

答案 1 :(得分:0)

取决于gui.exe是否将与您的作业服务在同一系统上运行。如果是这样,那么最好不要使用任何web api /网络套接字/ WCF进行通信,而是更简单的IPC方法。我个人喜欢消息队列。