Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在会话或数据库中存储Viewstate有哪些缺陷_C#_Asp.net - Fatal编程技术网

C# 在会话或数据库中存储Viewstate有哪些缺陷

C# 在会话或数据库中存储Viewstate有哪些缺陷,c#,asp.net,C#,Asp.net,我读到您可以这样做,但这真的会提高页面的性能,还是会带来更多的性能开销?下面是Scott Hanselman关于在会话对象中存储ViewState信息的一篇好文章: Viewstate数据是有关页面的信息,已加密并序列化为页面上的隐藏标记 如果您可以将其存储在会话中,那么以下是一些问题/陷阱: 信息仍然必须从内存中进行加密/解密和序列化/反序列化 如果您有很多用户,并且会话数据存储在进程中,甚至使用状态服务器,那么您将使用viewstate数据最大化这些服务器上的内存 如果将SQL Serve

我读到您可以这样做,但这真的会提高页面的性能,还是会带来更多的性能开销?

下面是Scott Hanselman关于在会话对象中存储ViewState信息的一篇好文章:


Viewstate数据是有关页面的信息,已加密并序列化为页面上的隐藏标记

如果您可以将其存储在会话中,那么以下是一些问题/陷阱:

  • 信息仍然必须从内存中进行加密/解密和序列化/反序列化
  • 如果您有很多用户,并且会话数据存储在进程中,甚至使用状态服务器,那么您将使用viewstate数据最大化这些服务器上的内存
  • 如果将SQL Server用于会话状态,则情况显然会变得更糟(见下文)
如果可以将其存储在SQL Server中,则会出现以下问题:

  • 同样,信息仍然需要序列化/反序列化(不一定要加密/解密,因为它没有输出到页面),但在这种情况下,它必须从SQL DB读/写。在与数据库之间的传输和从数据库读取/写入数据时的I/O都会产生开销

伙计,这里的观点很好,所以我认为使用viewstate最好的方法是压缩它,并在可能的情况下尽量减少使用它。如果您可以将使用它的次数减少到最低,那么这将是您的最佳选择。