从认识asp.net 开始(非原创)

 注:以后的内容很多都是<<asp.net2.0技术内幕>>里面的。感觉这本书挺好的。所有内容并非原创,但也不是转帖和翻译,有些我自己的内容。

一,什么是asp.net

        ASP.NET是一个Web开发平台,提供了构建企业级应用所需的服务、编程模型和软件基础结构。ASP.NET是一个全新的编程框架,旨在用于快速开发Web应用程序。作为Microsoft.NET平台的一部分,ASP.NET提供了一种基于组件的、可扩展的且易于使用的方法,用以构建、部署和运行供所有在浏览器或移动设备中使用的Web应用。ASP.NET是过去10年内先后发展起来的Web开发技术的巅峰——一种在目前构建通过HTTP协议传输的分布式应用的技术中,Web开发技术建立在另一种技术的基础之上,并且每种技术都弥补了其前辈的缺陷。因此,ASP.NET是最先进、特征最丰富而且功能最强大的平台。

1.1.1  Web窗体中的编程

ASP.NET Web窗体模型正好解决了日益增加的对廉价但有效的Web交互的需求。事实上,HTTP协议代表了Web应用的主要优缺点。HTTP协议的无状态性引入了与桌面开发人员无关的大量不同的编程概念——这些概念中最主要的是会话状态管理。另一方面,HTTP固有的简单性和可伸缩性,是其高效率以及在世界范围内得到采纳的关键——总之,如果没有HTTP,很有可能也没有Internet。然而,随着对丰富而功能强大的应用的需求增加,程序员必须设计出更好的方法,在客户与服务器之间建立简单而有效的通信。

近年来,为了使不同页面之间的通信以及相同页面的多个调用之间的通信更加容易,先后出现了很多技术。大多数程序员的惯性思维是,客户产生的行为导致服务器端行为。这种基本模式不能通过Web完成,至少是不能完全完成。为了实现平稳通信,需要某种程度的抽象和一些系统提供的服务。

在这方面,ASP胜于JSP,它以陈述方式思维,只需短小的对象模型。总之,转而进行Web开发的程序员不得不适应不同的思维习惯,抛弃熟悉的动作/响应模式。

1.1.2  通过HTTP的事件驱动编程

ASP.NET Web窗体具有与Web交互的事件驱动模型。在Web上实现一个事件模型,需要把与客户端用户活动有关的所有数据转发到服务器进行相应的状态处理。服务器处理客户行动的输出,并触发反应。应用程序的状态包含两种信息:客户状态和会话状态。客户状态——主要是形成输入字段(总称为页面状态)的内容——很容易通过存储已投递值(posted value)的服务器端集合进行访问。但是总体会话状态怎样呢?客户期望通过一个页面把信息发送给服务器时(例如将一件商品放入购物车时),能与她以后要查看的任何其他页面自然地关联起来。谁来记住一个特定的用户在购物车里添加了什么东西?HTTP本身不能跟踪此信息:正好由会话状态和一个合适的服务器端基础结构(包围和集成HTTP)完成这一信息跟踪功能。

我始终强调一点:在进行Web应用开发时,理解无状态编程涉及的概念非常重要。如前所述,HTTP是一个无状态协议,这就是说,同一个会话的连续两个请求互相不了解。它们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息。在ASP中,可重入窗体(reentrant form)是一种常用的绕过这种系统局限性的方法。可重入窗体是一个HTML <form>元素,发送到包含它的同一个页面。光用可重入窗体并不能完全解决这个问题。然而,将它们与代码块和隐藏字段(存储对页面来说很重要的状态信息)结合使用,很多开发人员轻松地克服了这个障碍。

赋予ASP.NET应用自动状态维护功能,曾经是ASP的最佳实践,现在已经被标准化,并且集成到ASP.NET运行库中成为关键特征,该特征赋予ASP.NET应用具有自动的状态维护。ASP.NET运行库在页面请求间来回传输页面状态。生成一个给定页面的HTML代码时,ASP.NET对服务器端对象的状态进行编码,然后填入几个隐藏的并且透明创建的字段中。当页面被请求时,还是ASP.NET运行库引擎检查嵌入式状态信息(隐藏字段),并使用任何已解码的信息建立最近创建的服务器端对象的实例。这种机制的实际效果与台式机上的Windows窗体模型相同,图1.1对它们进行了总结。

Windows窗体模型起源于典型的事件驱动的桌面编程风格。不管客户和服务器组件之间存在什么样的连接,服务器的工作总是响应客户的输入。服务器知道总的应用程序状态,并以一种两层的、连接的方式进行运行。Web窗体模型需要某种机构来支持这种事件驱动的编程模型。在图1.1中,请求页面时发生的状态反序列化和生成HTML响应时执行的状态序列化代表了这种必需的机制。

ASP.NET HTTP运行库负责这种筛选工作。HTTP运行库是一段代码,扩展了托管Web服务器的总体功能并使它们专门化。可重入窗体和隐藏字段是用来实现这种特征的低级工具。如果没有一个跨越服务器页面全部内容的有效的后端对象模型,那么这种模型的效果不会很好。组件模型对ASP.NET开发平台的构建及其有效的工作很重要。

ASP.NET组件模型标识并描述ASP.NET页面的构建块,它是通过一个对象模型实现的。该模型实际上为所有的HTML页面元素(诸如HTML标记<form>和<input>)提供了对应的服务器端元素。另外,ASP.NET对象模型包括许多组件(称为服务器控件或Web控件),它们代表用户界面(user interface,简称UI)的更复杂的元素。这些控件中的一些,不是直接映射到各HTML元素,而是通过组合多个HTML标记实现的。Calendar控件和DataGrid控件就是典型的复合UI元素。

最后,ASP.NET页面是由任意多个服务器控件与字面文本(verbatim text)、标记和图像混合而成的。摘自页面和控件状态的敏感数据谨慎地存储在隐藏字段中,并且形成了那个页面请求的上下文。页面的实例和状态之间的关联是明确的,不能以编程的方式进行修改,并且是由ASP.NET HTTP运行库控制的。

要想全面理解ASP.NET平台,首先必须理解ASP.NET组件模型。组件模型贯穿着整个开发周期,包括页面创作阶段和运行库系统配置阶段,如图1.2所示。

图1.2  ASP.NET开发栈鸟瞰图。箭头表示典型的自顶向下的应用程序视角,即从用户接口到系统服务

在深入研究图1.2所示的各元素之前,简单回顾一下HTTP协议的基本知识,HTTP协议仍然是Web交互的基础。然后再描述ASP.NET页面的结构,以及如何编写和部署ASP.NET应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值