2006年4月1日星期六

Cassini其实不是新东西,早在2000年就有离线ASP宿主

详细可以参考这两篇文章:
http://msdn.microsoft.com/msdnmag/issues/0900/cutting/default.aspx
http://msdn.microsoft.com/msdnmag/issues/1000/cutting/default.aspx

那时候,设计的目标是为了做Demo CD,而作为Demo CD不能够要求客户机上必须装有IIS,所以就需要设计一个轻量级的离线的ASP Host。在2000年,这两篇文章归到Cutting Edge去了,不过这样的技术在当时来说确实非常Cutting Edge了,一般Demo CD最多内附一个PWS(Personal Web Server)让Win9x也能装上看看ASP的效果,基本上没有人会想到要实现自己的ASP Host。这不仅仅是技术问题,而且还是思想问题,RIA还没有提出,用HTML或者Flash做Windows应用还是非常罕见,没有人有理由要实现一个随处可运行的展示给localhost看的Web Host。

现在Cassini来了,靠的主要是System.Web.Hosting这个namespace下面的东西。其实要实现ASP.NET Host关键就是要把Request流的内容倒入HttpWorkerRequest,之后HttpWorkerRequest配合HttpRuntime就是你所要的一切输入了,而且是完整封装好和普通ASP.NET无异的了。至于输出,Cassini同样是需要实现原本HttpResponse直接让IIS实现的功能,自行把Response流的各种Header写入,然后写Response流的主体。

System.Web.Hosting其实是ASP.NET 1.x就有的东西,看来MS一早就准备了要让ASP.NET可以脱离IIS运行。如果非Windows平台上的.NET Framework能够弄出来,就能够轻易地把ASP.NET迁移过去。现在也有人在搞.NET Compact Framework上的ASP.NET Hosting(因为.NET CF没有System.Web.Hosting),那么ASP.NET就能够成为全平台的Web应用了哦,既能在线也能离线。

没有评论:

发表评论