【发布时间】:2012-07-03 15:30:03
【问题描述】:
我正在使用 C# 代码隐藏页面创建一个网络服务器。 我想要的是一个用户在页面上查看和提交一些东西, 并且数据以持久的方式存储在服务器端, 并且其他用户可以查看此数据。
我是否被限制将其保存到平面文件或数据库,或者我可以在 C# 或 .NET 中为此目的使用某种功能,例如持久的跨会话变量或其他东西? (对于每个不同的用户来说,普通的静态变量会有所不同,对吧?)
【问题讨论】:
标签: c# .net persistent
我正在使用 C# 代码隐藏页面创建一个网络服务器。 我想要的是一个用户在页面上查看和提交一些东西, 并且数据以持久的方式存储在服务器端, 并且其他用户可以查看此数据。
我是否被限制将其保存到平面文件或数据库,或者我可以在 C# 或 .NET 中为此目的使用某种功能,例如持久的跨会话变量或其他东西? (对于每个不同的用户来说,普通的静态变量会有所不同,对吧?)
【问题讨论】:
标签: c# .net persistent
所有用户都可以使用任何静态变量,但您应该使用 Application.它类似于 Session,但对所有用户都是通用的。如果您需要应用程序重置的持久性,请使用数据库。
【讨论】:
你可以测试这些缓存变量
Cache["Key"] = yourValue;
Application["Key"] = yourValue;
您有另一个与会话关联的缓存,但它不是全局的:
Session["Key"] = value;
您的页面中有另一个缓存
ViewState["Key"] = value;
【讨论】:
如果您没有太多数据,请将其存储到内存中,然后使用XmlSerializer 或BinaryFormatter 将其写入磁盘。
您将希望将数据作为应用程序单例存储在内存中,可从您的页面集中的任何位置访问。
【讨论】:
我是否限制将其保存到平面文件或数据库中,或者我可以使用某种功能 在 C# 或 .NET 中用于此目的?
不能有其他功能。看,一个平面文件(即您编写的文件或其他服务编写的文件)和数据库(可以是 SQL 数据库、文档数据库或任何其他形式)在逻辑上涵盖了持久化数据的所有可能性。从理论上讲,我认为不可能有任何其他方式不属于平面文件(即您管理的文件)或数据库(某个驱动程序或服务器进程管理的文件)。
您的问题类似于“我有一台收音机,它可以打开或关闭。它还能处于其他状态吗?” - 坏消息,不,它是打开还是关闭。
.NET 框架中的任何功能都可以归结为您最后提到的两个功能中的任何一个。
【讨论】: