C# 4.0 我们可以在web应用程序中使用静态类型变量吗?这将被许多用户同时使用? 私有静态列表\u进程; 公开名单程序 { 获取{return\u进程;} 设置{u进程=值;} } 私有静态字符串_idsscombination; 公共字符串组合 { 获取{return} 设置{u id组合=值;} } 私有静态int_QCID; 公共int QCID { 获取{return\u QCID;} 设置{u QCID=value;} }
如上所述,我创建了一些静态变量,它们是否为所有用户共享相同的内存。简短回答:很可能是。 长答案: 静态成员在应用程序域中共享 如果您只在一台服务器上的一个web应用程序中运行您的网站,则是。这在小型web应用程序中很常见 但是,如果您在多台服务器/web应用程序上运行(例如在一个web场中),则它们之间不共享(就像inProc会话不共享一样)。如果您正在这种环境中运行,那么您需要考虑其他解决方案,例如将其保存在数据库或缓存服务器中C# 4.0 我们可以在web应用程序中使用静态类型变量吗?这将被许多用户同时使用? 私有静态列表\u进程; 公开名单程序 { 获取{return\u进程;} 设置{u进程=值;} } 私有静态字符串_idsscombination; 公共字符串组合 { 获取{return} 设置{u id组合=值;} } 私有静态int_QCID; 公共int QCID { 获取{return\u QCID;} 设置{u QCID=value;} },c#-4.0,C# 4.0,如上所述,我创建了一些静态变量,它们是否为所有用户共享相同的内存。简短回答:很可能是。 长答案: 静态成员在应用程序域中共享 如果您只在一台服务器上的一个web应用程序中运行您的网站,则是。这在小型web应用程序中很常见 但是,如果您在多台服务器/web应用程序上运行(例如在一个web场中),则它们之间不共享(就像inProc会话不共享一样)。如果您正在这种环境中运行,那么您需要考虑其他解决方案,例如将其保存在数据库或缓存服务器中 此外,如果您计划这样做,您应该使访问线程安全。请参阅:。在这个特
此外,如果您计划这样做,您应该使访问线程安全。请参阅:。在这个特定的示例中,您可能希望使用
读写器锁
或互斥锁
简短回答:很可能是。
长答案:
静态成员在应用程序域中共享
如果您只在一台服务器上的一个web应用程序中运行您的网站,则是。这在小型web应用程序中很常见
但是,如果您在多台服务器/web应用程序上运行(例如在一个web场中),则它们之间不共享(就像inProc会话不共享一样)。如果您正在这种环境中运行,那么您需要考虑其他解决方案,例如将其保存在数据库或缓存服务器中
此外,如果您计划这样做,您应该使访问线程安全。请参阅:。在这个特定的示例中,您可能希望使用ReaderWriterLock
或Mutex
是
因为代码在服务器上运行,并且在所有用户之间共享
因为代码在服务器上运行,并且在所有用户之间共享,所以如果我不想在所有用户之间共享特定变量,那么在回发期间保存变量值的首选方法是什么?我应该把它保存在会话中吗?还有一件事,如果我想在会话中保存数据表,是否可以继续?在回发期间我可以在哪里服务数据表?@user2661571您可以使用会话或视图状态(如果可用)。就个人而言,我不喜欢在会话中存储大量数据。这可能会对大型站点或共享托管环境造成内存压力。另一个头上的Viewstate序列化数据,因此对可以存储的内容有限制(不过还没有尝试使用Datatables)。它不会占用存储内存,但会使页面变大,并且必须在每次回发/响应时发送,因此会使用bandwith。在大多数情况下,我会存储绝对最小值,并在需要时检索其余值。因此,如果我不想在所有用户之间共享特定变量,那么在回发期间保存变量值的首选方法是什么?我应该把它保存在会话中吗?还有一件事,如果我想在会话中保存数据表,是否可以继续?在回发期间我可以在哪里服务数据表?@user2661571您可以使用会话或视图状态(如果可用)。就个人而言,我不喜欢在会话中存储大量数据。这可能会对大型站点或共享托管环境造成内存压力。另一个头上的Viewstate序列化数据,因此对可以存储的内容有限制(不过还没有尝试使用Datatables)。它不会占用存储内存,但会使页面变大,并且必须在每次回发/响应时发送,因此会使用bandwith。在大多数情况下,我会存储绝对最小值,并在需要时检索其余值。
private static List<string> _Process;
public List<string> Process
{
get { return _Process; }
set { _Process = value; }
}
private static string _IDsCombination;
public string IDsCombination
{
get { return _IDsCombination; }
set { _IDsCombination = value; }
}
private static int _QCID;
public int QCID
{
get { return _QCID; }
set { _QCID = value; }
}