同一AppPool中的应用程序之间的共享变量?

我正在使用Asp.net FW 4.6。

我在同一个应用程序池下有两个应用程序需要读取(持续)预定义的值,该值是要更改的对象。

静态变量不能用于beucase不同的应用程序(即使在相同的应用程序池下) – 也不会被共享。

DB / File / Server是已知选项。

但是:

题 :

是否有任何我可以编写的代码可以存储在mem值中,这些代码可以通过同一App Pool下的多个应用程序访问?

就像是 :

 MyAppPool App1 -> func("royi") = 1 App2 -> var a= func2("royi"); //1 

所有进程间通信方式(如内存映射文件和命名管道)也可用于在单个AppPool中跨应用程序共享数据,例如,请参阅在两个应用程序之间共享内存 。

由于同一AppPool中的所有应用程序都位于同一进程中,并且仅由AppDomain边界分隔,因此您还有一些其他选项:

  • 使用MarshalByRefObject跨AppDomain边界访问对象实例。 已经有可用的包装器使用MarshalByRefObject来实现跨AppDomain单例,例如Stephen Cleary的CrossDomainSingleton或者这个 。
  • 使用指针和不安全的代码直接访问Marshal.AllocHGlobal分配的内存,尤其是在您关心速度的情况下。 但是您必须使用上述方法之一来共享应用程序之间分配的内存的内存地址。