今天你写控件了吗?----ASP.net控件开发系列之(一)开篇

    今天你写控件了吗?----ASP.net控件开发系列之开篇

    早段时间,同事之间很流行打CS,所以那段时间的问候变成了“今天你杀XX了吗?”
控件开发也许是程序员最能发掘自己创造力的一件事情吧?控件开发不仅要求你对当前的开发有一个较全面和略深的了解,而且也能促使你去了解开发环境的底层的东西。比方说我在开发控件的过程中就对reflect和MSIL产生了较深的兴趣,也许,在以后的一段时间里,我会尝试去做一个reflector,哈哈,很多事情都很难说地~
    “今天你写控件了吗?”,也许在将来会成为中国.net程序员的一个日常用语,哈哈,很多事情都很难说地~不好意思,重复了一下,毕竟,在.net的框架下一些简单的控件的开发相对来说,是·很·容易的。.net框架已经为你做了大部分的事(当然,我这种说法是有误的,创新永远是第一位的。),我所做,只是想凭自己三寸烂舌和一股热情,告诉大家,那个真的很容易。
现在,你有信心了吗?

    在这开篇,我还想和大家探讨几个问题?

    1.ASP.net是ASP+吗?
     记得有这么一句话,微软喜欢给一些换汤不换药的东西换一个全新的名字,让人认为是一种全新的技术,而有些完全不同的东西却整一个很相像的名字,ASP.net和ASP就是这样,ADO.net和ADO.net更是这样。在这里,我想说的是,ASP.net和ASP是很不相同的。ASP是建立在WINDOW DNA上的(这句也许有误,我对旧的技术没什么底蕴),以解释为执行方式的,而ASP.net是建立在.net framework这一全新的东东上的,是先编译后运行的,所以ASP.net的效率更高,而且有.net framework的支持,可以做很多很多的功能,而且很方便,你不必在COM的世界为了一个功能大海捞针,在一个统一的.net环境中写写代码就OK了,同时,Web serviceS做为它的同胞,和asp.net有很大的相通性,你可以很方便的同时为Internet提供基于浏览器和各种客户端GUI程序的服务,还有remoting.....爽歪了啊!

    2.ASP.net都做了什么?
     ASP.net是怎么生成一个个活蹦乱跳的鲜活网页的呢?IIS做为一个HOST,为一个个ASP.net程序创建AppDomain而不是一个个Process,每个ASP.net程序在第一次运行时被编译为机器码,为客户的Request生成Response。我们在制作网页的时候,.aspx文件和.aspx.cs文件好像各占半壁江山,而其实的页的生成过成中,.aspx文件中的东西只是Render方法的一串Write调用。

    3.ASP.net开发,我们的重点该放在哪呢?
     是啊,我们的重点该放在哪哟?我重点培养自己哪方面的技能呢?在上一点中,我说.aspx文件只不是后台程序的一个方法(Render)中的部分而已,那么意思是不是前台的东西就只是一个狗屁呢?对这个观点,我是坚绝反对的,理由有:第一、ASP.net最终还是用HTML、Script、CSS来实现界面,完成功能。一个Render而已,可这个Render可了不得啊,ASP.net中大部分的东西最终不就是为了这个Render吗?第二、.net框架已经为我们做了太多太多的东西,我们可以很舒服的完成我们需要的功能,用System.Drawing画出有水印的图,用System.Data玩把戏般的操作数据,正则?XML?......一切都有一堆积木在那等着你堆了。所以,我们前进的道路很清晰的两路,就是,用那些老掉牙的DHMTL/JS/CSS技术完成你的创意,另一方法,努力学习软件开发的方法论,什么模式、什么UML、什么框架、什么用例、什么MDA、什么AOP......不好意思,接不下去了,吹概念不是我的长处。而且在控件开发中,你没有DHTML这些东西的基础,而以为对现有控件的深度发展就能做出一个很成功的控件和创意出来?基本上......这个(读的时候这里顿一下)很难!

    4.Attribute?
     Attribute?这个是.net中很重要的概念,在控件开发在尤其重要。很多书都说Attribute和Property不好分别,我的理解很简单,Property是内在的属性,Attribute是相对“外在”的东西,举个例子,你的肚腩很大这是Property,然后你穿一件很宽松的衣,这是Attribute,当然这个解释是绝对不正确的,也许“你肚腩很大”这句描述性的话是Attribute那来得正确,不过,这个有助于你理解两者的区别是如此的大,那么这两者到底是什么呢?其实大家都知道了,我这里再八婆一下。编译器在把你的代码整成一个Assemble时,把Method、Property这些东西整成IL指令,同时,它会弄出一份描述你的类,方法,属性,字段等等的各种信息的MetaData,所以,在IDE中,我写一个XX.在打下这个点后,后面一堆让我爱得不得了的智能完成东东就出来了,这些就是MetaData和Reflect的功劳,此外还有VS.net的对象浏览器,某些兄弟偷看我发布的控件的内部代码的工具,都得益于这个东东,而且IDE也利用反射读取MetaData来决定怎样在设计器如何让用户和控件交互。而!Attribute就是我们操作MetaData的工具。

    ......还有呢?暂时没想到,呵呵。

    所以,想尝试做控件的兄弟,你不仅要有信心,你还要准备一点HTML/JS/CSS之类的基础和对Attribute等.net的特性的一些了解。你准备好了吗?

    也许是年龄的原因,所以我这个人现在做事一般不是很沉稳,所以你在以上一段吹水中找出几个错误我一点也不会吃惊,同时,我很感激你。

posted @ 2005-04-26 09:12  Think  阅读(13788)  评论(11编辑  收藏  举报