gpt4 book ai didi

c# - 同一 AppPool 中跨应用程序的共享变量?

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:01 28 4
gpt4 key购买 nike

我正在使用 Asp.net FW 4.6。

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

不能使用静态变量,因为不同的应用程序(即使在同一个应用程序池下)不会被共享。

数据库/文件/服务器是已知选项。

但是:

问题:

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

类似的东西:

MyAppPool  

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

最佳答案

进程间通信的所有方式,如Memory Mapped FilesNamed Pipes也可用于在单个 AppPool 中跨应用程序共享数据,参见示例 Sharing memory between two applications .

因为同一个 AppPool 中的所有应用都驻留在同一个进程中,并且仅由 AppDomain 边界分隔,所以您有一些额外的选择:

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

关于c# - 同一 AppPool 中跨应用程序的共享变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46441605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com