C# 将.NET对象存储到内存中,并在退出后将其保留在内存中

C# 将.NET对象存储到内存中,并在退出后将其保留在内存中,c#,memory,configuration,memory-mapped-files,C#,Memory,Configuration,Memory Mapped Files,我想知道是否有办法将一个对象加载到内存中,并在程序存在后将其保留在内存中。我想这样做是为了在WCF REST服务中共享配置信息,而不必每次读取配置时都去磁盘进行序列化/反序列化。我遇到的一个问题是,不能保证总是有东西在运行以“保持”对象 我正在使用C#和.NET4.0 以下是一些psuedo代码,用于模拟我将/希望执行的操作: variable localmemoryobject if memoryObject does not exist then create the memory

我想知道是否有办法将一个对象加载到内存中,并在程序存在后将其保留在内存中。我想这样做是为了在WCF REST服务中共享配置信息,而不必每次读取配置时都去磁盘进行序列化/反序列化。我遇到的一个问题是,不能保证总是有东西在运行以“保持”对象

我正在使用C#和.NET4.0

以下是一些psuedo代码,用于模拟我将/希望执行的操作:

variable localmemoryobject
if memoryObject does not exist then
    create the memory object
end if 
copy the memory object into localmemoryobject
done

我正在查看内存映射文件以实现这一点,不确定这是否适合我的问题。有什么建议吗?

如果您想在内存中保留一些数据,那么至少需要有一个进程保持运行以存储它。您可能希望使用一个小进程来存储这些内存对象(例如),然后启动和关闭WCF服务,而不必担心将数据序列化到磁盘。

如果您希望在内存中保留一些数据,则需要至少有一个进程保持运行以存储它。您可能希望有一个小进程,用于将这些对象存储在内存中(例如)然后启动和关闭您的WCF服务,而不用担心将数据序列化到磁盘。

为您的配置添加一个Windows服务应用程序并使其保持活动状态如何?

为您的配置添加一个Windows服务应用程序并使其保持活动状态如何?

在您的WCF中使用企业库缓存块服务


您的WCF服务将需要读取配置一次,然后将其缓存在内存中以备将来调用,直到超过配置的缓存到期时间间隔,或者您重新启动该服务。

在您的WCF服务中使用企业库缓存块


您的WCF服务将需要读取一次配置,然后将其缓存在内存中以备将来调用,直到超过配置的缓存到期时间间隔,或者您重新启动服务。

您可能会使用Windows的内存映射文件API

请参阅此处的更多信息:
Windows的内存映射文件API可能对您有用

请参阅此处的更多信息:

我曾想过这样做,但如何以简单的方式访问该服务?我不想每次打开TCP连接只是为了获取config.TCP?如果它在同一台机器上,你可以选择IPC,我会给你的,我最后在Windows服务中使用了内存映射文件。。不管怎样,如果您仍然需要从其他机器访问服务,请考虑使用代理服务,您可以使用IPC在本地机器上访问该代理服务,并保持TCP连接对另一台机器开放。如果可能的话,我会把它放在本地。我想过这样做,但是我如何以一种简单的方式访问服务呢?我不想每次打开TCP连接只是为了获取config.TCP?如果它在同一台机器上,你可以选择IPC,我会给你的,我最后在Windows服务中使用了内存映射文件。。不管怎样,如果您仍然需要从其他机器访问服务,请考虑使用代理服务,您可以使用IPC在本地机器上访问该代理服务,并保持TCP连接对另一台机器开放。如果可能的话,我会把它放在本地。但是我使用的是WCF REST,比如说,该服务并没有“启动”,而是托管在IIS中。我喜欢这个想法,如果我能让它工作的话。好的-可能比Ent Libs更合适。这种类型的缓存用于从服务返回的数据。配置对象从未被服务过,因此,它不会通过传统方式被缓存。但我使用的是WCF REST,该服务不是“启动”的,比如说,它托管在IIS中。我喜欢这个想法,如果我能让它工作的话。好的-可能比Ent Libs更合适。这种类型的缓存用于从服务返回的数据。配置对象永远不会被服务,因此,它不会通过传统方式被缓存。