首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个进程之间共享静态数据

在多个进程之间共享静态数据
EN

Stack Overflow用户
提问于 2012-09-21 23:36:55
回答 2查看 536关注 0票数 2

我有一个WCF服务(在NetTCP上的控制台应用程序中实例化),这个服务有静态数据(大容量),它在加载时被实例化。

我同时运行此控制台应用程序的多个实例,并且所有实例都在执行相同的静态数据初始化,有没有一种方法可以让我拥有单个数据源,并在进程之间共享数据,从而使每个进程不必消耗大量内存?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-21 23:38:34

您可以使用内存映射文件;但由于Windows保护应用程序的方式,每个进程必须有自己的内存。

来自http://msdn.microsoft.com/en-us/library/dd997372.aspx

非持久化文件是与磁盘上的文件不关联的内存映射文件。当最后一个进程完成对文件的处理时,数据将丢失,并通过垃圾回收回收文件。这些文件适用于为进程间通信(IPC)创建共享内存。

对于任何类型的“共享”数据,您都需要完成同步访问的额外任务。

票数 2
EN

Stack Overflow用户

发布于 2012-09-22 02:10:36

快速的解决方案是编写另一个您首先运行的专用服务。它将加载数据一次,并根据需要将其提供给其他服务实例。

更健壮的解决方案是将数据存储在所有服务连接到的数据库或缓存层中。缓存层是一个很好的选择,因为如果它不在缓存中,你的服务可以延迟加载它(保留更多的当前设计),而且它可以很快(在内存中)。一些缓存选项包括:

  • Windows AppFabric
  • Memcached
  • NCache
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12533694

复制
相关文章

相似问题

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