none
关于asp.net的工作原理 RRS feed

  • 问题

  • 每次回发页面给服务器处理后,服务器怎么知道是那个IE回发的啊,并给把处理后的结果正确的返回给同一个IE呢。

    HTTP协议不是无连接状态的吗?

    真让人想不明白。。。。。

    2010年7月1日 10:13

答案

  • 你好,

    web的确是无状态的,因此asp.net采用了会话这种方式。这也就是session的工作原理。

    一旦你访问一个asp.net的网站,会在你的机子上和服务器端产生一个guid,用来标识你,该id在客户端是保存在cookie中的。

    所以一旦你再次请求的时候,服务器会根据这个来判断你是不是先前访问的那个用户。

     

    关于你上面这段描述我也不太清楚,意思可能是说asp.net会根据客户端的浏览器自动render出相应的html代码。你可以联系它的语景来理解。


    Microsoft Online Community Support
    2010年7月5日 2:09
  • 每次回发页面给服务器处理后,服务器怎么知道是那个IE回发的啊,并给把处理后的结果正确的返回给同一个IE呢。

    HTTP协议不是无连接状态的吗?

    真让人想不明白。。。。。


    一起讨论一下。

    其实你说的有无状态和处理后的消息能否返回给客户端,不属于一个范畴。

    关于你的问题,看了一下,应该是为什么 服务器的消息能返回给 客户端。

     

    这个问题 涉及的是一个简单的 消息交换模式的问题MEP。一般我们把消息交换模式分为三类:单向(发送后不管),请求/应答(请求数据,返回数据),双工(也就是同时可以发送和返回数据)。

    我们说的http请求网站数据,就是典型的第二种消息交换模式,这个消息模式规定了客户端发送请求,然后服务端返回数据。

    至于服务端的处理数据,如果返回给特定的客户端。

    这里不一定非要启动会话。

    我们可以从Web服务里看出这个问题。消息依然可以返回给客户端。

    对于一些无状态的,例如Rest服务,更是如此。这应该说和网站开发平台也没什么关系。

    而是只要你支持此种消息交换模式,就决定了你必须这样来处理请求消息。

    你可以使用fiddler检查一下http消息头里的数据

     

     


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    老徐的博客】:http://www.cnblogs.com/frank_xl/

    【WCF中文技术论坛】:微软WCF中文技术论坛
    【WCF英文技术论坛】:微软WCF英文技术论坛

    2010年7月5日 7:27
    版主

全部回复

  • asp。net程序都有一段

    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTEwOTM4OTU2MmRk7ARw0+J9onOJB2lgbnqVz2USVRo=" />
    
    和Cookie记录


    【孟子E章】
    2010年7月1日 12:49
    版主
  • 视图状态是用来保存值的,但我问的不是这个。

    HTTP是无连接状态的,每次请求一个页后,就会断开与服务器的连接。

    但感觉“页面回发处理”、“IE呈现最新版本页面” 这种反复的往返过程,是在用户与服务器这间建立一个连接通道,这个通道只对特定用户开放。。。。这不是和HTTP协议的无连接状态的概念相冲突吗???

    系统是怎么实现建立这个通道的。。。。

     

    还有一个问题:

    ASP.NET 页和控件框架是一种编程框架,它在 Web 服务器上运行,可以动态地生成和呈现 ASP.NET 网页。可以从任何浏览器或客户端设备请求 ASP.NET 网页,ASP.NET 会向请求浏览器呈现标记(例如 HTML)。通常,您可以对多个浏览器使用相同的页,因为 ASP.NET 会为发出请求的浏览器呈现适当的标记。但是,您可以针对诸如 Microsoft Internet Explorer 6 的特定浏览器设计 ASP.NET 网页,并利用该浏览器的功能。ASP.NET 支持基于 Web 的设备(如移动电话、手持型计算机和个人数字助理 (PDA))的移动控件。

     

    通常,您可以对多个浏览器使用相同的页,因为 ASP.NET 会为发出请求的浏览器呈现适当的标记。   这句话怎么理解,系统是怎么实现的??

    2010年7月1日 14:36
  • 你好,

    web的确是无状态的,因此asp.net采用了会话这种方式。这也就是session的工作原理。

    一旦你访问一个asp.net的网站,会在你的机子上和服务器端产生一个guid,用来标识你,该id在客户端是保存在cookie中的。

    所以一旦你再次请求的时候,服务器会根据这个来判断你是不是先前访问的那个用户。

     

    关于你上面这段描述我也不太清楚,意思可能是说asp.net会根据客户端的浏览器自动render出相应的html代码。你可以联系它的语景来理解。


    Microsoft Online Community Support
    2010年7月5日 2:09
  • 每次回发页面给服务器处理后,服务器怎么知道是那个IE回发的啊,并给把处理后的结果正确的返回给同一个IE呢。

    HTTP协议不是无连接状态的吗?

    真让人想不明白。。。。。


    一起讨论一下。

    其实你说的有无状态和处理后的消息能否返回给客户端,不属于一个范畴。

    关于你的问题,看了一下,应该是为什么 服务器的消息能返回给 客户端。

     

    这个问题 涉及的是一个简单的 消息交换模式的问题MEP。一般我们把消息交换模式分为三类:单向(发送后不管),请求/应答(请求数据,返回数据),双工(也就是同时可以发送和返回数据)。

    我们说的http请求网站数据,就是典型的第二种消息交换模式,这个消息模式规定了客户端发送请求,然后服务端返回数据。

    至于服务端的处理数据,如果返回给特定的客户端。

    这里不一定非要启动会话。

    我们可以从Web服务里看出这个问题。消息依然可以返回给客户端。

    对于一些无状态的,例如Rest服务,更是如此。这应该说和网站开发平台也没什么关系。

    而是只要你支持此种消息交换模式,就决定了你必须这样来处理请求消息。

    你可以使用fiddler检查一下http消息头里的数据

     

     


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    老徐的博客】:http://www.cnblogs.com/frank_xl/

    【WCF中文技术论坛】:微软WCF中文技术论坛
    【WCF英文技术论坛】:微软WCF英文技术论坛

    2010年7月5日 7:27
    版主
  • 强大的回复,受教了。
    2010年7月8日 3:00