【问题标题】:Persistent data on serverside服务器端的持久数据
【发布时间】:2012-07-03 15:30:03
【问题描述】:

我正在使用 C# 代码隐藏页面创建一个网络服务器。 我想要的是一个用户在页面上查看和提交一些东西, 并且数据以持久的方式存储在服务器端, 并且其他用户可以查看此数据。

我是否被限制将其保存到平面文件或数据库,或者我可以在 C# 或 .NET 中为此目的使用某种功能,例如持久的跨会话变量或其他东西? (对于每个不同的用户来说,普通的静态变量会有所不同,对吧?)

【问题讨论】:

    标签: c# .net persistent


    【解决方案1】:

    所有用户都可以使用任何静态变量,但您应该使用 Application.它类似于 Session,但对所有用户都是通用的。如果您需要应用程序重置的持久性,请使用数据库。

    【讨论】:

    • 正是我真正需要的,谢谢!我确信每个运行后端代码的用户的静态变量都是不同的,但显然它与网络服务器相关,而不是用户交互
    • HttpApplicationState 不是持久的,因为它随着创建它的进程 - 应用程序而死。
    • 我没有使用正确的词 - 持久性并不是我真正想要的。对我来说重要的是,所有浏览页面的用户都应该可以访问该变量,并且如果一个用户修改了该变量,另一个刷新页面的用户会看到更改。当然,即使用户退出网页,该变量也会保留。使用静态时它会做什么。只有当网络服务器出现故障时它才会丢失,这很好
    【解决方案2】:

    你可以测试这些缓存变量

    Cache["Key"] = yourValue;
    
    Application["Key"] = yourValue;
    

    您有另一个与会话关联的缓存,但它不是全局的:

    Session["Key"] = value; 
    

    您的页面中有另一个缓存

    ViewState["Key"] = value;
    

    【讨论】:

      【解决方案3】:

      如果您没有太多数据,请将其存储到内存中,然后使用XmlSerializerBinaryFormatter 将其写入磁盘。

      您将希望将数据作为应用程序单例存储在内存中,可从您的页面集中的任何位置访问。

      【讨论】:

        【解决方案4】:

        我是否限制将其保存到平面文件或数据库中,或者我可以使用某种功能 在 C# 或 .NET 中用于此目的?

        不能有其他功能。看,一个平面文件(即您编写的文件或其他服务编写的文件)和数据库(可以是 SQL 数据库、文档数据库或任何其他形式)在逻辑上涵盖了持久化数据的所有可能性。从理论上讲,我认为不可能有任何其他方式不属于平面文件(即您管理的文件)或数据库(某个驱动程序或服务器进程管理的文件)。

        您的问题类似于“我有一台收音机,它可以打开或关闭。它还能处于其他状态吗?” - 坏消息,不,它是打开还是关闭。

        .NET 框架中的任何功能都可以归结为您最后提到的两个功能中的任何一个。

        【讨论】:

          猜你喜欢
          • 2011-02-25
          • 1970-01-01
          • 2012-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多