C# 将.NET对象存储到内存中,并在退出后将其保留在内存中
我想知道是否有办法将一个对象加载到内存中,并在程序存在后将其保留在内存中。我想这样做是为了在WCF REST服务中共享配置信息,而不必每次读取配置时都去磁盘进行序列化/反序列化。我遇到的一个问题是,不能保证总是有东西在运行以“保持”对象 我正在使用C#和.NET4.0 以下是一些psuedo代码,用于模拟我将/希望执行的操作: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
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更合适。这种类型的缓存用于从服务返回的数据。配置对象永远不会被服务,因此,它不会通过传统方式被缓存。