首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个应用程序使用的GAC中的库,它是否共享相同的对象?

多个应用程序使用的GAC中的库,它是否共享相同的对象?
EN

Stack Overflow用户
提问于 2016-03-15 18:06:24
回答 1查看 205关注 0票数 1

我在多个问题中都看到了这一点,但许多公认的答案是自相矛盾的。

有人说,如果您希望跨应用程序和域使用对象的单个实例(实际上只是一个同步实例),则只能使用IPC。

其他人说,在GAC中的程序集中使用单例模式将导致数据共享,因为如果DLL已经由另一个程序集加载,则GAC将共享一个实例(提供lib有一个单例模式)。

有人帮我解决了这个问题,我需要在多个线程中的多个应用程序中共享一个全局对象,并且在深入了解它之前,我需要知道它是否可能没有IPC,比如WCF。我更喜欢使用GAC,因为我的库更像一个框架,它将由我和其他第三方开发人员开发的一套应用程序使用。此外,速度是一个主要问题,序列化/反序列化对象以不断同步它可能会增加太多的延迟,而更多的是来自多个位置的单个实例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-15 18:14:40

不,应用程序的每个实例都在为所有加载的程序集使用自己的内存。甚至可以在一个应用程序中分离两个单例实例(通过使用https://learn.microsoft.com/en-us/dotnet/framework/app-domains/application-domains)。

单例模式可以使用交叉程序集,但这将始终在一个AppDomain内。

因此,两个应用程序不共享内存/对象实例。

这是需要的行为,因为您不希望其他应用程序访问线程/Dispatcher/AppDomain(并在应用程序中加载自定义程序集)/Application类实例

如果您需要在应用程序之间“共享”内存或对象,则需要序列化数据并通过通信层之类的东西“传输”它们。

例如:

  • TCP/IP
  • “‘Shared”记忆(命名管道)
  • 文件
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36018856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档