热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Asp.net状态管理(一)

状态管理概述1.1状态管理与数据库状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于HTTP的技术一样,Web窗体页是无状态的,这
状态管理概述

 1.1  状态管理与数据库

状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于 HTTP 的技术一样,Web 窗体页是无状态的,这意味着它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点。此外,到服务器的每一往返过程都将销毁并重新创建页;因此,如果超出了单个页的生命周期,页信息将不存在。比如,我们在代码中声明一个DataSet从数据库获取记录,页面回发(也就是重新请求)后这个DataSet是空的,这就是为什么在ASP.NET应用程序中,甚至在一个页面中需要多次连接数据库获取记录。正是由于这个原因,状态管理对于Web编程来说非常重要,从第一代动态Web编程语言开始就支持多种状态管理以弥补HTTP无状态的不足。

现在的Web应用程序,通常都是数据驱动的,但是在状态处理中,我们应该尽量减少对数据库的依赖,原因如下。

·      数据库是存放在磁盘上的。如果把数据存放在数据库中的话,性能会比较差。

·      很多数据是和用户相关的。如果把数据存放在数据库中的话,我们没有一个唯一的标志来区分哪条记录对应哪个客户端(浏览器)。

·      很多数据是临时的,用户关闭了浏览器这些数据就不再需要了。如果把数据存放在数据库中的话,我们不知道是哪个用户关闭了浏览器,也就不能及时把数据删除。

n  通常来讲,状态管理的作用主要概括为以下几点。

·      指示用户信息,关联浏览器实例。

·      使得页与页之间,请求与请求之间能够共享信息。

·      更为快速的数据存储与读取。

1.2  状态管理的比较参数

ASP.NET提供了很多状态管理机制,各有各的特点。一般来说,我们是在以下几个方面来比较各种状态管理机制:

·      存储的物理位置。比如是存储在客户端还是服务端。

·      存储的类型限制。比如是可以存放任意类型还是仅仅可以存放字符串。

·      状态使用的范围。比如是否可以跨应用程序?是否可以跨用户?是否可以跨页面?

·      存储的大小限制。比如是任意大小还是有一定字节限制。

·      生命周期。什么时候建立?什么时候销毁?

·      安全与性能。比如是否加密存储?是否适合存储大量数据?

·      优点缺点与注意事项。

只有对这些概念有一个清晰的认识后,我们才能灵活使用各种状态管理机制。状态管理是Web应用程序的利器,但是它是一把双刃剑,不合理的使用各种状态管理机制会对整个网站的性能造成很大的影响,甚至使网站瘫痪。因此,使用状态管理的重要原则就是在有必要的时候用,而不能因为方便到处都用。

推荐阅读
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 美团安全响应中心推出全新配送业务测试活动,带来双重福利,邀您共同参与! ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
author-avatar
dmcm0005
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有