解读ASP.NET 2.0 Internals

asp.net

Introduction
New features are fun and interesting to learn about, but changes to the core structure of ASP.NET speak louder to developers who really want to master the technology. In this white paper, we will cover how the internal structure of ASP.NET 2.0 has changed since version 1.x.
概述ASP.NET1.0到ASP.NET2.0核心结构的改变

The topics covered in this paper will be of use to performance-minded developers and technical architects seeking to fine-tune(调整, 使有规则) applications. Specifically, we will examine key areas of the code model, compilation, page lifecycle, extensibility, performance, and caching.
这个主题用于关注性能的开发人员和技术架构师调整现在应用程序。并专注于代码模型、编译、页面生存期、可扩展性、性能和缓存等多个方面。

Code Model代码模型
how an ASP.NET Web page is created now
Coding Models in ASP.NET 1.
Two primary options for developing a Web Form.
code-inline, works very well for simple commands. However, for more complex code, writing code-inline results in difficult to read Web pages that mix presentation (HTML) with functionality (code).
代码内嵌模式只适用于simple commands
code-behind
Business logic and event-handling code could be written in a separate, code-only file known as the code-behind file. The code-behind model links a code-only file with the ASPX file that contains presentation tags. By separating the code from the presentation, development teams could work faster by allowing the designers to work on the presentation file while the developers worked on the code file.
商务逻辑和事件处理程序代码与展示页分开

The difficulties in 1.x 1.x的不足
The primary difficulties with the code-behind model related to the way in which the code-behind file had to be synchronized with the ASPX page. Although the ASPX page inherited from the code-behind file in a programming sense, the two files were actually coupled by a more complex relationship.
这种模型主要不足在于,后台代码文件code-behind file必须与aspx页同步。即使从编程的角度看,ASPX页是从后台代码文件继承而来的,两者之间实际上还有更复杂的关系。
Inheritance Complexity 继承的复杂性
If controls were added to the ASPX page, new code had to be added to the code-behind file. In other words, despite the inheritance relationship pointing the other way, the ASPX page actually drove the design of the code-behind file.
就是说,一方面尽管ASPX页继承于Code behind file,但实际上ASPX页反过来也制约code-behine file的设计。
Compilation Complexity 编译的复杂性
All of the code-behind files were compiled into an assembly and stored in the /bin directory of the Web application. The compilation step occurred prior to deploying the application. On the other hand, the ASPX page was compiled at runtime the first time the page was requested. The ASP.NET runtime actually compiled the ASPX page into its own temporary assembly.
ASPX页和code-behind file都需要编译,但时间不一,code-behind file 在部署前编译,而ASPX页则在第一请求它的时间临时编译。
The problem with this process is that the ASPX page can be changed without updating the code-behind assembly. That is, a developer may choose to modify a property or change the type of a control on an ASPX page after deployment, and the code-behind file would not be updated, nor would the application assembly be recompiled.
很明显,ASPX页的控件类型在部署后进行修改话,code-behind file必须重新编译。

to be continued……

时间: 2024-10-27 05:29:06

解读ASP.NET 2.0 Internals的相关文章

解读ASP.NET 5 & MVC6系列(3):项目发布与部署

原文:解读ASP.NET 5 & MVC6系列(3):项目发布与部署 本章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE). 步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4.

解读ASP.NET 5 & MVC6系列(2):初识项目

原文:解读ASP.NET 5 & MVC6系列(2):初识项目 初识项目 打开VS2015,创建Web项目,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下: 我们可以看到,此时Web Forms\MVC\Web API复选框都选择不了,原有是因为在ASP.NET 5中做了大量更改,移除了Web Forms功能,将MVC.Web API.Web Pages这些功能合在了一起,所以自然就不需要这些复选框了.另外由于是CT

解读ASP.NET 5 & MVC6系列(11):Routing路由

原文:解读ASP.NET 5 & MVC6系列(11):Routing路由 新版Routing功能介绍 在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和Web API,还支持一般的ASP.NET5程序.新版的改变有如下几个部分. 首先,Routing系统是基于ASP.NET 5的,是一个独立于MVC的路由框架,而不是基于MVC的.MVC只是在上面扩展了一个快捷方式而已. 其次,

解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现

原文:解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现 前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将讲述一种基于Lambda表达式的强类型类型. 这种方式的基本使用示例如下: services.Configure<MvcOptions>(opt => { opt.EnableTy

解读ASP.NET 5 &amp; MVC6系列(7):依赖注入

原文:解读ASP.NET 5 & MVC6系列(7):依赖注入 在前面的章节(Middleware章节)中,我们提到了依赖注入功能(Dependency Injection),ASP.NET 5正式将依赖注入进行了全功能的实现,以便开发人员能够开发更具弹性的组件程序,MVC6也利用了依赖注入的功能重新对Controller和View的服务注入功能进行了重新设计:未来的依赖注入功能还可能提供更多的API,所有如果还没有开始接触依赖注入的话,就得好好学一下了. 在之前版本的依赖注入功能里,依赖注入的

解读ASP.NET 5 &amp; MVC6系列(6):Middleware详解

原文:解读ASP.NET 5 & MVC6系列(6):Middleware详解 在第1章项目结构分析中,我们提到Startup.cs作为整个程序的入口点,等同于传统的Global.asax文件,即:用于初始化系统级的信息(例如,MVC中的路由配置).本章我们就来一一分析,在这里如何初始化这些系统级的信息. 新旧版本之间的Pipeline区别 ASP.NET 5和之前版本的最大区别是对HTTP Pipeline的全新重写,在之前的版本中,请求过滤器的通常是以HttpModule为模块组件,这些组件

解读ASP.NET 5 &amp; MVC6系列(8):Session与Caching

原文:解读ASP.NET 5 & MVC6系列(8):Session与Caching 在之前的版本中,Session存在于System.Web中,新版ASP.NET 5中由于不在依赖于System.Web.dll库了,所以相应的,Session也就成了ASP.NET 5中一个可配置的模块(middleware)了. 配置启用Session ASP.NET 5中的Session模块存在于Microsoft.AspNet.Session类库中,要启用Session,首先需要在project.json

解读ASP.NET 5 &amp; MVC6系列(5):Configuration配置信息管理

原文:解读ASP.NET 5 & MVC6系列(5):Configuration配置信息管理 在前面的章节中,我们知道新版的MVC程序抛弃了原来的web.config文件机制,取而代替的是config.json,今天我们就来深入研究一下配置文件的相关内容. 基本用法 新版的配置信息机制在Microsoft.Framework.ConfigurationModel命名空间下进行了重写,重写以后不仅支持XML格式,还支持json.ini.环境变量等.在模板示例程序中Startup类的构造函数内如,有

解读ASP.NET 5 &amp; MVC6系列(4):核心技术与环境配置

原文:解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置 asp.net 5是下一代的asp.net,该版本进行了全部重写以适用于跨平台,新新版本中,微软引入了如下工具与命令:DNVM.DNX.DNU. DNVM(.NET Version Manager):由于要实现跨平台的目录,微软提供了DNVM功能,DNVM是ASP.NET最底层的内容,他是一组Powershell脚本,用于启动指定版本的ASP.NET运行环境,并且可以在同一台机器的同一时间点上通过使用Nuget工具来管理各