ASP.NET 打造互联网未来空间站(2)
是的,他也用它做一些事情。我们也支持一种叫做ASP模块扩展点的技术。他基本上允许你像一个函数那样使用ISAPI过滤器。我们提及的很多例子,如替换Session State等工作都是在那个级别实现的。此外,重定向URL的工作也是在这个级别实现的。例如,我们的许多客户经常要为他们的用户提供个性化的URL,像financial institution站点就可以为他的顾客提供www.financialinstitution.com/scott这样的URL为一个名叫SCOTT的用户,因为他们不想创建太明显的路径,所以要借用重定向技术提供各种各样的不可视的URL,你可以在ASP.NET上实现这样的功能。
带有"/scott" URL,实际上被ASP.NET转换成他要去的地方,是吗?
是的,因此在实际运行前,你会有一些代码解析"/scott" 部分,转换成一个实际地址的页面,实际执行的是一个很普通的页面。这种方式可以使得所有的用户都得到个性化。我们有一个模块中的一个API可以为你解决这个问题。在这个问题上,我们也有一个扩展点。在ASP的时候,我们有一个叫做Global.asa的概念,他可以定义应用开始,应用结束,Session 开始,Session结束等事件。在ASP.NET中我们允许您将ISAPI过滤器功能加入Global.asa中,因此,如果您想继续重定向URL时候,你甚至不需要写一个模块了,你只需要在Global.asa中定义就足够了。
我们做的另一点是,努力提高安全水平并且允许更为灵活的认证,在过去,您使用ASP的时候,您主要用IIS来构建您的认证功能,这种认证实际上依赖NT SAM,在ASP.NET中,我们将安全模块放入ISAPI过滤器中,因此如果您想在一个main frame 或者在你有一些usernames/passwords的数据库中,并且是你自己做这种认证时,你可以在Global.asa中写入相关的信息或者在一个与那个事件同步的组件中加入相关信息。
因此,我可以写一个我自己用户名的数据库了,并且,他还带有标准的认证过程。
是的,没错。如果你这样做了,你可以获得更多的东西,你不仅可以拥有了用户名字和口令,而且还会有角色(role)这样的东西。你可以将那些用户映射成角色,你可以使用这种方式而不是仅仅使用ACL的方式构建你的站点。你可以知道Joe 和 Mark(用户名)访问了这个页面,相反,你也可以知道这个页面被哪个角色访问了。你在数据库的主要工作就是告诉我们 Mark 的用户名和密码是什么,他在哪一组角色中,其余的工作由安全系统来考虑,以保证它可以访问那些网页或者服务。当然,这里需要提及的是,所有的架构,安全架构、caching架构都为网页和XML服务提供支持。
如果从性能角度来看,增加的这些东西,这些能力,可以提供更好的性能服务吗?
我们的确提供了更好的性能服务,当我们创建ASP.NET项目组时,我们就指定一个开发人员专门负责性能上的工作,我们当时使用的是早期的common language runtime,他每日的工作就是检查每项操作是变快了还是变慢了,并且与运行时(runtime)项目组一起查找问题,加速变慢了的操作。同时,他也指出性能上的问题。这样做的结果是ASP.NET比ASP要更快。所有的代码都是编译过的,编译成本地代码,不再用解释的方式。
是吗,那么说我在ASP.NET中写的程序代码再也不用解释的方式?
正确。此外,更好的是,您仍然可以像您从前那样在编辑器里面编写代码,点击SAVE存盘,然后剩下的事情都交给系统去处理。但是,对于剩下工作ASP与ASP.NET确有不同处理方式。ASP采用的是分析代码然后传给脚本引擎,在程序运行时解释代码;而ASP.NET则是传给编译器,然后在common language runtime上运行。在common language runtime上执行的是本地代码,因此你可以用VB编制程序获得与C++一样级别的性能。
那么,它是在什么时候编译,是在我存储文件并且NT文件系统发现文件变化时,还是页面第一次使用的时候?
当某人请求页面的时候发生。我们将会检查,是否某个页面已经被编译,如果没有编译,我们将会编译他。我们在ASP.NET中作了许多很有趣的工作,使得编译过程更有效率。因为我们编译了他,所以如果你为了使机器更可靠或者性能更好而重起机器或者shut down你的WEB服务器或者shut down你的进程时,你不用再编译你的那个页面了,因为我们已经检测到了该文件已经被编译和加载,这样可以获得更高的响应速度和更强的伸缩性,并且那也是因为把它放在CACHE的某个地方了。
下面我们在谈论一下性能。好,我们谈论一下性能,是的,从整体上看,性能是更优化了。我们也在可扩展性,可靠性,可获取性方面作了很多的工作。我们曾经有一个假设,在一个common language runtime上,即使有一个Session想要和所有与他相关的东西通信的话,应用程序的可靠性仍然变得很高。
我们还可以举些例子。例如,真正强大的类型检查。在一个可管理的环境中,如果出现数组越界的情况,系统将会抛出一个exception而不会产生一个垃圾内存。除此之外,我们还有更多的可靠性机制保证您的使用。例如,我们可以检测内存冲突,也就是内存在某一
相关新闻>>
- 发表评论
-
- 最新评论 更多>>