当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > CASSINI源代码分析(5):总结

ASP.NET
ASP.NET开发:简化应用程序的开发支持Web标准
asp.net XMLHttpRequest实现用户注册前的验证
asp.net 页面间传值方法小结
asp.net url重写浅谈
asp.net 验证码生成和刷新及验证
C#精髓 GridView72大绝技 学习gridview的朋友必看
实例说明asp.net中的简单角色权限控制
asp.net网站开发包wq.dll打包下载
js与ASP.NET 中文乱码问题
asp.net checkbox 动态绑定id GridView删除提示
asp.net TextBox回车触发事件 图片在img显示
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
asp.NET 脏字过滤算法
asp.NET 脏字过滤算法 修改版
asp.net sql 数据库处理函数命令
asp.net Javascript 的几种写法与提示
ASP.NET MVC学习笔记
asp.net 中国身份证号码验证代码 非正则
Asp.net中使用Sqlite数据库的方法
asp.net 中文字符串提交乱码的解决方法

ASP.NET 中的 CASSINI源代码分析(5):总结


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 150 ::
收藏到网摘: n/a

通过初步浏览全部代码之后,我们大致上明白了:1、执行流。asp.net程序具体是如何执行的?一个asp.net的应用程序的执行首先是需要一个宿主,通过建立宿主后,就建立了执行asp.net应用代码的能力。执行一次asp.net请求,需要通过HttpRuntime.ProcessRequest(SimpleWorkerRequest)来激发执行,而SimpleWorkerRequest需要被重载,将一次完整的http request实例化,并提供给asp.net运行库以便正确处理用户请求上下文关系以及用户请求数据。SimpleWorkerRequest被重载的函数在asp.net的执行过程中按照http协议的规范被依次调用。2、HTTP协议细节。我们实际上并没有看到完整的http server的执行细节,因为具体的http请求执行是asp.net运行库执行的(通过HttpRuntime.ProcessRequest),包括.htm之类的文件都是被运行库执行的,只不过运行库发现不需要执行就直接读取文件返回。这个同IIS下的asp.net执行不一样,IIS自己会在asp_WP.exe之前处理自己注册的扩展名文件请求。这个结果可能一样,但是实质不一样,就是普通文件处理位置不一样。所以,我们可以在cassini基础之上自行处理部分属于不需要动态解析的文件,减轻asp.net运行库的负担,提高效率。Cassini是一个asp.net的宿主程序,并非完整的web server。3、asp.net是一个全新的执行环境,并非脚本之前的脚本技术,.net自身除了基础框架外,还提供了执行aspx页面的能力和相应组件。学习cassini就是学习如何使用.net框架提供的这种能力。就类似你研读c代码学习利用windows api编程一样。4、我们可以选择IIS作为宿主,但是ISAPI启动asp.net守护进程之后通过管道传回响应毕竟是在两个进程间传输数据,况且,IIS自身也是漏洞一大筐,没有其他需要,我们认为还是自己实现asp.net宿主并执行asp.net应用程序在效率上要高,况且应用程序域也提供了安全隔离。5、学习如何使用多线程来满足多线程企业应用,回调函数的使用也是精巧。6、对于自己将来实现独立于IIS的web应用开发有意义,譬如,可以采用asp.net开发方式开发桌面辅助应用。类似于HTMLView应用。我看到有人通过自己执行asp.net来快速产生界面运行桌面应用(方便将来迅速扩展到多用户)。当然,我自身也有疑问:1、 为什么采用ThreadPool,会不会导致并发访问阻塞?2、 可否更多的利用自己创建独立的asp.net执行宿主?3、 如何更通用化产生一个这样的工具,我相信可以更加独立化的。欢迎联系我[email protected]