• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

on asp.net

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
        终于在cnblogs上开博了,cnblogs有庞大的.net爱好者,可以交流,可以批评,这是我愿意在这里的原因,在spaces.live.com上的那一个长期无人问津。当然,我对.net现在不过刚有兴趣,属菜鸟级,不当之处或有何建议,请联系我的邮箱:[email protected]
         j2ee是我喜欢的东西,当然现在已经是javaee了。相对来说,比.net更喜欢。我以前曾决定不要再学.net,就像本科时候决定只学win32一样。但形势所迫,这工作岗位需要.net的还挺多。而我恰恰找不到工作。所以这四年里,我不得已又看看MFC,Java,最后还是要学习.net。
         无论什么服务器IIS,Apache,Tomcat最终要使用Http协议,无论什么FrameWork,无论stuts,webwork,还是Asp.net 2.0,最后总归要生成html文本。我不是一个可以很专注研究问题的人,所以错误是正常的。我的毅力坚持不了几分钟,我知道我喜欢手写而不喜欢打字,喜欢空想而不喜欢行动。2003年,我毕业正在打算建一个个人网站,而淘宝网也刚刚开始,到现在,淘宝已有数千万注册用户,我的网站只不过是一个网页的两行文字;2004年,p2p如日中天,几个学生正躲在宿舍里开发pplive,我也对torrent协议很感兴趣,不过我是用pp点点通来上网下载A片,到现在pplive用户也数以千万计,而我对AV也颇有认识。2005年,我筹划写我的小说已有10个年头,箫鼎此时正开始准备写《诛仙》,到现在,《诛仙》的读者也数以千万计,而我的小说依然只是一个开头而已。写技术文章不是我的强项,因为需要查阅很多东西,有时候我觉得我懂了,其实我是感觉懂了,但是写出来就不一样了,群众的眼睛是雪亮的,是我所无法糊弄的,所以我不得不打点精神,去查一些东西,当然查不到的东西只能猜测一番,给出一个自认合理的解释。我写东西一向喜欢跑题,时不时出来牢骚一番,就像莫言也喜欢在小说中跳出来,自我感慨一番一样。当然这不是好的写作方式,除非我是大家,可惜我不是,我只是找不到工作,而且找不到媳妇,尘世中的一个迷途窝囊之一。
       相对于J2ee来说,asp.net封装的东西更多,所以它就更先进,更不灵活,更没有效率,但是对开发者来说,也就更省心。好怀念那种纯粹的时候,没有中间件,自己手动连接监听回馈,多自由。这才是纯粹的程序员,这些天看linux源码,看到用汇编语言操作中断控制器建立各种系统描述符还有页表GDT/IDT表,禁不住热血沸腾,啊,这个年代的编程才是真正的编程,多么的明白直观,多么的没有效率,多么的不可移植。jeffy richer说看到了中间语言,就不再关心这些底层的东西了,实在是不解风情阿。到了j2ee以后,符合规范的服务器封装了Request和Response,并且提供了固定的流程让我们只要重载servlet的service()函数,已经不够灵活。后来的框架就更不像话了,成为了各种设计模式的试验场。其实对我们来说,没有必要做到这么松耦合。现在的上传已经不需要自己手工解析,各种框架提供了现成的函数直接可以提取出文件,真是可惜我了。
      服务器在解析jsp文件的时候实际上是生成了一个servlet并且编译了,所以它的输出就是html。.net解析一个aspx文件,实际上也是生成了一个继承自IHttphandler的类,并且编译了。我们看一看实际源代码,相信大家从源代码中得到的东西比我说的更好。有时候太追求细节往往太烦人,所以我一向崇拜那些破解者,他们的毅力与坚持实在让我汗颜。
这是我的Test.aspx文件
%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:Button ID="bt" runat="server" Height="100px" OnClick="bt_Click" Text="Click Me !" />
        
<asp:TextBox ID="TextBox1" runat="server">assd</asp:TextBox></div>
    
</form>
</body>
</html
很简单,只是两个控件。
下面是伴随它的Test.aspx.cs文件
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

public partial class Test : System.Web.UI.Page
}

关于ViewState是我为了测验.net关于ViewState做了些什么而加入的,大家可以不看。现在我们看看微软怎么改编组合这些东西呢。下面是微软生成的cs文件,为了方便,我们把这些放在一起。 

 

public partial class Test : System.Web.UI.Page

 

}

非常庞大,我已经尽可能的去掉不需要的东西,构造button 和 textbox和label差不多,所以就把代码省略了,但button多一个事件,这行保留。有些地方解释一下,ViewState是一个StateBag对象,属于Page类的成员,所以被自然继承了,因此没有代码中没有声明它。我们可以看到实际上我们运行的是test.aspx类,它直接继承自Test和IHttphandler,我们知道,继承IHttpHandler必须要实现IsReusable属性,那代码中为什么没有呢,原来它是在Page类里。另外Page类有一个ProcessRequest方法,IHttphandler也有一个。可知aspx最后要编译成一个httphandler,然后容器调用它的proces-s-request方法,发现只有一行,base.proceRequest(),于是转向Test的ProcessRequest方法,也就是Page的ProcessRequest方法了,然后再这个方法里面Render各种Control,ClearViewState,调用Page_onLoad等等。这些我也不清楚,因为毕竟没找到源代码。不误己误人。
         一个小时,弄这些东西,竟然还不是很烦,有进步,错误的地方请指正,毕竟我只是初学者而已。
 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
其他脚本与asp.net脚本一起验证时容易出的问题发布时间:2022-07-10
下一篇:
(摘要)ASP.NET CustomRender 控件发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap