Welcome 微信登录

首页 / 网页编程 / ASP.NET

MVC系列(1)进入CLR

MVC系列(1)进入CLR

MVC系列(1)进入CLR2015-01-08MVC之前的那点事儿系列,是笔者在2012年初阅读MVC3源码的时候整理的,主要讲述的是从HTTP请求道进入MVCHandler之前的内容,包括了原创,翻译,转载,整理等各类型文章,当然也参考了博客园多位大牛的文章,对此表示感谢,这次有时间贴出来,希望对大家有用。主要内容本文讲解的是:服务器接受Http Request请求之后,是如何进入.Net CLR,从而进一步操作的。我们大家都知道,IIS必须先接受请求,...
MVC系列(2) HttpRuntime详解分析(上)

MVC系列(2) HttpRuntime详解分析(上)

MVC系列(2) HttpRuntime详解分析(上)2015-01-08文章内容从上章文章都知道,asp.net是运行在HttpRuntime里的,但是从CLR如何进入HttpRuntime的,可能大家都不太清晰。本章节就是通过深入分析.Net4的源码来展示其中的重要步骤。请先看下图:首先,CLR在初始化加载的时候,会加载一个非常重要的类AppManagerAppDomainFactory,这个类是做什么用的呢?首先这个类继承了IAppManagerAp...
MVC系列(3) HttpRuntime详解分析(下)

MVC系列(3) HttpRuntime详解分析(下)

MVC系列(3) HttpRuntime详解分析(下)2015-01-08文章内容话说,经过各种各样复杂的我们不知道的内部处理,非托管代码正式开始调用ISPAIRuntime的 ProcessRequest方法了(ISPAIRuntime继承了IISPAIRuntime接口,该接口可以和COM进行交互,并且暴露了 ProcessRequest接口方法)。至于为什么要调用这个方法,大叔也不太清楚,找不到微软相关的资料哦。但大叔确定该方法就是我们进入 Http...
MVC系列(6) 动态注册HttpModule

MVC系列(6) 动态注册HttpModule

MVC系列(6) 动态注册HttpModule2015-01-08通过前面的章节,我们知道HttpApplication在初始化的时候会初始化所有配置文件里注册的HttpModules,那么有一个疑问,能否初始化之前动态加载HttpModule,而不是只从Web.config里读取?答案是肯定的, ASP.NET MVC3发布的时候提供了一个Microsoft.Web.Infrastructure.dll文件,这个文件就是提供了动态注册HttpModule...
MVC系列(7) WebActivator的实现原理详解

MVC系列(7) WebActivator的实现原理详解

MVC系列(7) WebActivator的实现原理详解2015-01-08上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在HttpApplication初始化之前,之后以及ShutDown的时候分别执行指定的代码,示例如下:[assembly: WebActivator.PreApplicationStartMethod(...
MVC系列(9) MVC如何在Pipeline中接管请求的

MVC系列(9) MVC如何在Pipeline中接管请求的

MVC系列(9) MVC如何在Pipeline中接管请求的2015-01-08上个章节我们讲到了,可以在HttpModules初始化之前动态添加Route的方式来自定义自己的HttpHandler,最终接管请求的,那MVC是这么实现的么?本章节我们就来分析一下相关的MVC源码来验证一下我们的这个问题。先创建一个MVC3的Web Application,选择默认的模板以便创建以后就默认包含HomeController和AccountController。我们...
MVC系列(10) MVC为什么不再需要注册通配符(*.*)了

MVC系列(10) MVC为什么不再需要注册通配符(*.*)了

MVC系列(10) MVC为什么不再需要注册通配符(*.*)了2015-01-08很多教程里都提到了,在部署MVC程序的时候要配置通配符映射(或者是*.mvc)到aspnet_ISPAI.dll上,在.NET4.0之前确实应该这么多,但是.NET4.0之后已经不要再费事了,因为它默认就支持了。你可以会问,没有映射配置,请求这么可能会走到aspnet_ISPAI.dll上呢?对,这就是我们本章节要讲的一个东西:ASP.NET 4 Extensionless ...
Contoso学习:使用EF Code First创建MVC应用

Contoso学习:使用EF Code First创建MVC应用

Contoso学习:使用EF Code First创建MVC应用2015-01-08Contoso 大学 Web 示例应用演示了如何使用 EF 技术创建 ASP.NET MVC 应用。示例中的 Contoso 大学是虚构的。应用包括了类似学生注册、课程创建以及教师分配等功能。这个系列教程展示了创建 Contoso 大学应用的步骤。你可以的程序,或者按照教程一步一步创建它,这个教程中使用 C# 进行演示,下载的代码中同时包含 C# 和 VB 实现。如果你有与...
Contoso学习(一) 为 ASP.NET MVC 应用程序创建 EF 数据模型

Contoso学习(一) 为 ASP.NET MVC 应用程序创建 EF 数据模型

Contoso学习(一) 为 ASP.NET MVC 应用程序创建 EF 数据模型2015-01-08原文地址:Contoso 大学 Web 示例应用演示了如何使用 EF 技术创建 ASP.NET MVC 应用。示例中的 Contoso 大学是虚构的。应用包括了类似学生注册、课程创建以及教师分配等功能。这个系列教程展示了创建 Contoso 大学应用的步骤。你可以的程序,或者按照教程一步一步创建它,这个教程中使用 C# 进行演示,下载的代码中同时包含 C#...
Contoso学习(二) 实现基本的增删改查

Contoso学习(二) 实现基本的增删改查

Contoso学习(二) 实现基本的增删改查2015-01-08在上一个课程中,你已经创建了 MVC 应用,使用 EF 和 SQL Server Compact 保存和显示数据。在这个课程中,你将要复习并定制 MVC 脚手架为你的控制器和视图自动创建的 CRUD (创建、读取、更新和删除)代码。注意:为了在你的控制器和数据访问层之间进行抽象,通常的做法是实现仓储模式。为了保持这个课程的简洁,在这个系列的最后课程之前,我们不会实现仓储模式。在这个课程中,你将...
Contoso学习(三):排序、过滤及分页

Contoso学习(三):排序、过滤及分页

Contoso学习(三):排序、过滤及分页2015-01-13在上一个课程中,我们已经学习了如何使用 EF 对 Student 实体进行增、删、改、查处理。这次的课程我们将对学生的 Index 页面加入排序、过滤以及分页的功能。还要创建一个页面完成简单的分组。下面的截图展示了完成之后的页面,列的标题作为链接支持用户通过点击完成排序,点击标题可以在升序和降序之间进行切换。3-1 在 Students 的 Index 页面增加列标题链接为 Index 页面增加...
Contoso学习(四) 创建更加复杂的数据模型

Contoso学习(四) 创建更加复杂的数据模型

Contoso学习(四) 创建更加复杂的数据模型2015-01-134 – 创建更加复杂的数据模型在前面的课程中,你已经创建了一个简单的由三个实体组成的数据模型。在这个课程中,你将要增加更多的实体,以及关系,使用数据标注特性来控制模型类的行为。在完成的时候,实体类表示的完整数据模型如下所示:4-1 使用特性控制格式、验证以及数据库映射在这一节中,你将会看到如何使用特性来控制数据模型的格式化、验证以及数据库映射。然后在后继的节中,将要通过为已经创...
Contoso学习(六) 更新关联数据

Contoso学习(六) 更新关联数据

Contoso学习(六) 更新关联数据2015-01-13在上一次的课程中,你已经学习了如何显示关联的数据,我们将要更新关联的数据。大多数情况下,可能就是更新表的外键字段。对于多对多的关系来说,由于 EF 并没有直接将表与表之间的连接关系暴露出来,你就必须通过显式对相关的导航属性进行添加或者删除实体来完成。下面的截图展示了我们马上要完成的工作。...
Contoso学习(七) 处理并发

Contoso学习(七) 处理并发

Contoso学习(七) 处理并发2015-01-13在上一次的教程中我们处理了关联数据问题。这个教程演示如何处理并发问题。你将使用 Department 实体创建一个页面,这个页面在支持编辑和删除的同时,还可以处理并发错误。下面的截图演示了 Index 页面和 Delete 页面,包括在出现并发冲突的时候提示的一些信息。7-1 并发冲突并发冲突出现在这样的时候,一个用户正在显示并编辑一个实体,但是在这个用户将修改保存到数据库之前,另外的一个用户却更新了同...
Contoso学习(八) 实现继承

Contoso学习(八) 实现继承

Contoso学习(八) 实现继承2015-01-13在上一次教程中,你已经能够处理并发异常。这个教程将会展示如何在数据模型中实现继承。 在面向对象的程序设计中,你可以通过继承来清除冗余的代码。在这个教程中,你将要通过修改教师 Instructor 和学生 Student 类,以便使他们从包含类似 LastName 属性的 Person 类中派生。对于 Web 页面不需要任何改动,你需要修改一点代码,这些修改将会被自动反射到数据库中。8-1 单表继承 (T...
Contoso学习(九) 实现仓储和工作单元模式

Contoso学习(九) 实现仓储和工作单元模式

Contoso学习(九) 实现仓储和工作单元模式2015-01-13在上一次的教程中,你已经使用继承来消除在 Student 和 Instructor 实体之间的重复代码。在这个教程中,你将要看到使用仓储和工作单元模式进行增、删、改、查的一些方法。像前面的教程一样,你将要修改已经创建的页面中代码的工作方式,而不是新创建的页面。9-1 仓储和工作单元模式仓储和工作单元模式用来在数据访问层和业务逻辑层之间创建抽象层。实现这些模式有助于隔离数据存储的变化,便于自...
<< 321 322 323 324 325 326 327 328 329 330 >>