在同一进程中运行的Windows服务和Cassini-dev之间共享数据

本文关键字:服务 Cassini-dev 之间 数据 共享 Windows 进程 运行 | 更新日期: 2023-09-27 17:57:40

我有一个用C#编写的Windows服务。我最近添加了CassiniDev,以允许对服务进行远程网络管理和监控。集成进行得非常好,除了我无法从托管的ASP与Windows服务的数据层交互之外。NET页面。

我曾尝试将所有感兴趣的东西放入一个公共程序集,但调试器显示有两个加载的程序集具有相同的名称,但路径不同。Cassini运行ASP。NET关闭了一些临时文件夹,所以我使用的程序集实际上是同一进程地址空间中的"不同实例"。

我不知道这里发生了什么。可能是一些"应用程序域"分离的东西,我现在还不理解。

那么,Windows服务和web服务器在同一个进程中运行,我如何使它们交互?假设我在服务部分有一些状态,我想在ASP中报告。NET部分。你知道我该怎么做吗?人们会想到共享内存或TCP,但对于纯粹的进程内通信来说,这听起来有些过头了。

在同一进程中运行的Windows服务和Cassini-dev之间共享数据

如果安全性不是一个直接的问题,即数据不是高度敏感的,并且处于受控环境中,那么使用命名管道可以取得成功。作为框架的一部分,已经实现了用于处理管道的托管API,因此您不需要考虑本机调用。