那么,它是在什么时候编译,是在我存储文件并且NT文件系统发现文件变化时,还是页面第一次使用的时候?
当某人请求页面的时候发生。我们将会检查,是否某个页面已经被编译,如果没有编译,我们将会编译他。我们在ASP.NET中作了许多很有趣的工作,使得编译过程更有效率。因为我们编译了他,所以如果你为了使机器更可靠或者性能更好而重起机器或者shut down你的WEB服务器或者shut down你的进程时,你不用再编译你的那个页面了,因为我们已经检测到了该文件已经被编译和加载,这样可以获得更高的响应速度和更强的伸缩性,并且那也是因为把它放在CACHE的某个地方了。
下面我们在谈论一下性能。好,我们谈论一下性能,是的,从整体上看,性能是更优化了。我们也在可扩展性,可靠性,可获取性方面作了很多的工作。我们曾经有一个假设,在一个common language runtime上,即使有一个Session想要和所有与他相关的东西通信的话,应用程序的可靠性仍然变得很高。
我们还可以举些例子。例如,真正强大的类型检查。在一个可管理的环境中,如果出现数组越界的情况,系统将会抛出一个exception而不会产生一个垃圾内存。除此之外,我们还有更多的可靠性机制保证您的使用。例如,我们可以检测内存冲突,也就是内存在某一点徘徊。我们可以检测到死锁,你甚至可以配置系统以便在发生这样的情况的时候,你的机器可以每隔多长时间重起一次。因此,在出现这样的情况的时候,我们可以规定一小时一次、一天一次或者每隔200个请求一次等来启动一个应用程序的新的实例。然后允许旧的应用程序完成相关的任务后,新的程序接着进行。
保持这样的一个可靠性机制使得你不必中断任何为用户工作的服务。我们将会动态地生成一个新的进程,开始接受新的请求,老的进程完成当前运行的所有请求,然后我们将删除老的进程。在这样的过程中,为了提高效率,系统实际上作了RESET的工作。但是这个过程中,你不会看见管理人员的干涉。你的客户也不会感觉到任何变化,他们会认为,嗷,每一件事情都运行的这样好,服务器还在运行。用这样的方式,你就可以获得非常高的可靠性。
此外,我们在Session State上也有了一些改进,Session State不再需要和你的代码运行在同一个进程中。他可以作为一种服务运行在一台机器上,也可以作为一种服务运行在整个WEB服务器群中的某一台机器上,其他的前端机器可以共享该服务。
Session State只能存放在一台机器上吗?
不,不是的,如果需要的话可以在多台机器上保留。Session State可以在多台机器上存储,也可以有多台机器的前端去访问那些存储信息。
我是一个用户,我正在访问一台机器,我的Session State留在这台机器上,如果我下一次要访问另一台机器,Session State中的数据可以共享吗?
是的,这种工作方式是WEB群组最典型的工作方式。一个用户你可以访问机器A,等一会儿,你又会访问机器B,你的Session State保留在另外一台独立的机器上。Session State既可以运行在我们的Session State provider上面也可以运行在SQL Server上面,我们有一种方式可以让SQL Server成为Session信息的服务器。但是,前端的这两台机器,也可以是多台机器,都可以访问同样的Session State。
这样看来,我们可以通过这种方式共享数据了。
| 对此文章发表了评论 |

