1. .net概述
(1) 宽支持面,可开发控制台程序、WinForm、WebForm、Web Services、Windows Services、Mobile Application所有的应用程序。
(2) 绝佳的版本控制机制,完全摆脱DLL Hell。
(3) 提供代码安全性
(4) 高性能
(5) 组件互操作性
公共语言运行库(CLR)提供内存管理、线程管理、远程处理、代码执行、代码安全验证、编译等核心服务,非托管应用程序(如IIS,SQL Server,IE)可以作为运行库宿主将CLR加载到进程,并在该进程内创建应用程序域,把.net程序集加载进应用程序域,来执行.net托管代码,从而创建一个可以同时利用托管和非托管功能的软件环境。通用类型系统CTS确保了不同语言编写的组件的自描述性和互理解性,再加上CLS就能确保互操作性。垃圾自动回收机制解决了内存泄露,严格的运行时检查确保不会有无效内存引用。即时编译机制避免了解释执行环境的性能问题。
2. Asp.net概述
asp.net是.net framework的一个组成部分,是一个统一的Web开发模型,由Web Server(IIS)承载,其本身也有一些宿主的功能,开发人员能自己编写http handler和http module来处理应用程序事件。Asp.net编译器可以把页和控件等编译成一个程序集,来处理用户请求。Asp.net能识别发请求的浏览器类型,并响应出对应的适当的HTML。有主题和外观来控制网站的整体外观和感觉。母版页控制页面布局。Asp.net始终用特定的Windows标识(NETWORK SERVICE或ASPNET)运行,因此可用ACL来设置权限,还可配置Asp.net进程标识和模拟。
3. Assembly & GAC概述
程序集Assembly是布署、版本控制、重用、激活范围、安全权限的基本单元。不加强名称的程序集不受版本控制检查,只能被所在目录的程序集引用,而有强名称的可以放在GAC来实现组件共享。程序集清单可用MSIL反汇编程序(Ildasm.exe)查看。一个程序集由程序集清单、类型元数据、代码、资源构成,可能全部在一个文件里,也可能分为多个模块文件。强名称(程序集名称、版本号、区域信息、公钥、数字签名)是使用私钥,通过程序集文件生成的,保证了程序集的名称唯一性,和生成后未被篡改过,还有程序集的版本出自创建该程序集的同一个发行者。
4. 垃圾自动回收概述
垃圾自动回收机制解决了内存泄露问题,它由垃圾回收器在合适的时间(如内存被耗尽、CPU空闲、代码显式调用时)执行。
(1)一个类如果实现了Finallize方法,则在创建该类型的对象时,会有一个指向该对象的指针放入Finallization队列。
(2)当垃圾回收器回收内存时,对于找到的每个要被回收的对象,在Finallization队列中查找是否有指针指向它,如果没有就直接回收,如果有就把指针指向Freachable队列。
(3)当Freachable队列非空时,就激活某特殊线程逐一执行每个对象的Finallize方法,然后删除指针,它们将在下一次垃圾回收时回收。
(4)按一定算法整理内存,在保证效率的情况下,使其尽量连续。
5. http请求处理过程
ASP.NET 是 Web 服务器下的 ISAPI 扩展。IIS根据文件扩展名来选择一个ISAPI来处理请求。ASP.NET 应用程序的生命开始于浏览器向IIS发送第一个请求。
1. ApplicationManager类创建一个应用程序域,并创建HostingEnvironment类的一个实例,如果应用程序包含App_Code等顶级项,则编译之。
2. 为每个请求创建核心对象HttpContext。
3. 如果是首次访问,则创建HttpApplication对象,该对象对后续请求可重用。然后调用它的Init方法。在创建其实例时,同时会创建在Web.config里定义的HttpModule,也会调用它们的Init方法。
4. 依次触发HttpApplication的各种事件,
(1)验证请求
(2)UrlMapping
(3)BeginRequest
(4)Athentication
(5)Athorization
(6)Cathe
(7)根据文件扩展名,在Web.config里选择并编译IHttpHandler
(8)RequestState
(9)ProcessRequest
(10)Filter
(11)EndRequest
可以在Global.asax文件里用命名约定Application_Event来绑定这些事件到处理程序。
6. 页面生命周期概述
(1)开始请求时,判断是否需要编译和重新生成页面,如果有缓存,则不必如此,直接输出即可。
(2)开始阶段,估计是构造函数阶段,设置Request, Response, UICultrue, IsPostBack属性。
(3)PreInit,创建控件,设置MasterPage,Theme。此时不要设置控件属性,因为会被Init覆盖。
(4)Init,初始化控件属性。
(5)Load,读取和更新控件属性
(6)事件处理
(7)PreRender
(8)UnLoad,此时不要Response.Write,因为不管用了。可以做关闭文件和数据库连接,日志记录或特定于请求的操作。
7. URL重定向(http://msdn.microsoft.com/zh-cn/library/ms972974.aspx)
HttpContext.RewritePath方法是URL重定向的核心方法。URL重定向可由HttpModule、HttpHandler或UrlMappings配置节来实现。需要有正则表达式、http请求处理过程方面的知识。需要解决回发和可删节的问题。URL重定向的目的是使URL更短,能看出站点结构,和可删节。
8. 换肤技术
重写Page.OnPreInit方法,设置MasterPage和Theme属性。
9. 多语言技术
10. 控件开发技术