代码之家  ›  专栏  ›  技术社区  ›  Eldad Mor

在内存中保留持久数据

  •  7
  • Eldad Mor  · 技术社区  · 16 年前

    我要用C#开发一个Windows服务。此服务需要跟踪系统中的事件,并不时将一些数据写入文件。这些正在进行的事件形成了一个特定的状态,因此我将把状态保存在内存中,并在事件到达时更新它。我不想让事情变得过于复杂,所以我不希望状态在磁盘上持久化,但我想知道是否可以以某种方式使它在内存中持久化,这样,如果服务崩溃(并由Windows自动重新启动),它就可以从它离开的地方恢复并继续(可能会丢失一些事件,这不是什么大问题)。

    我一直在考虑创建一个“共享”内存区域,这样就可以让Windows管理它,并且只在服务中使用它——但我不确定该对象在服务终止后是否会继续存在。

    :我不是在寻找一个杀伤力过大的解决方案。数据有点重要,所以我想让它在内存中等待,直到服务重新启动,但数据不是 太

    6 回复  |  直到 16 年前
        1
  •  3
  •   jmservera    16 年前

    您可以使用 Microsoft Enterprise Library

    它是可配置的,您可以使用许多备份存储,如数据库和独立存储。

        2
  •  3
  •   Jaco Pretorius    16 年前

    我建议您将所有状态保存在单个对象或对象层次结构中,将此对象序列化为XML并将其写入文件。没有比这更简单的了。

        3
  •  2
  •   Community Mohan Dere    9 年前
        4
  •  1
  •   eglasius    16 年前

    使用 db4o

        5
  •  0
  •   Madeleine    16 年前

    如何使用独立的存储并以这种方式将对象持久化到内存中?

        6
  •  0
  •   Kamran Khan    16 年前

    ,您如何“保证” 联网pc 不会挂起/重启/停止/等等?在这种情况下,您的服务无论如何都会丢失持久化的数据。

    我建议,很有可能你最终会把数据存储在同一个磁盘上。

    那样的话,使用 MSMQ ? 因此,您可以将所有内容推送到队列上,即使您的服务重新启动,它也会查找队列中的项目并继续。