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