庖丁解牛:纵向切入ASP.NET3.5控件和组件开发技术

图书信息作者:郑健 著
出 版 社: 电子工业出版社
出版时间: 2009-2-1
页数:650页
开本: 16开
I S B N :9787121079795
所属分类: 图书 >> 计算机/编程 >>.NET
定价:79.00元(含光盘1张)
宣传语倾情奉献数载开发经验,
丝丝入扣讲述ASP.NET控件开发底层原理
封底宣传语:
本书像“庖丁解牛”一样剖析ASP.NET——
帮您真正地理解ASP.NET技术,不仅能够掌握控件开发的各个方面的技术,而且也能透彻理解ASP.NET的工作原理;
控件开发工作的天然好处就是让您拥有更多实战面向对象的机会,从而能更真切地感受到面向对象;
它能帮您摒弃许多作为开发人员所固有的陋习——只知其然,不知其所以然,摆脱“傻瓜式”编程的境地,直接深入到底层。
它还是您开发过程当中的良师益友,内容全面,对每个控件开发技术点均有详尽的阐述,最适合作为您工作当中的查询手册。
本书的承诺:
从未接触过ASP.NET技术的读者,能使您直接晋升到ASP.NET控件开发的层次;
从未接触过ASP.NET控件开发的读者,能使您自如地开发自己想要的控件;
从未接触过ASP.NET控件开发但熟悉ASP.NET技术的读者,能使您的功力直接提升三倍!
内 容 简 介本书主要介绍ASP.NET的控件开发,书中通过70多个例子讲解了ASP.NET控件开发技术的各个方面,而且剖析了很多控件中系统基类源代码,读者从这些系统源代码可以体会设计模式思想。如果扎实地掌握了ASP.NET控件的运行机制,开发一个页面级的ASP.NET应用程序会变得非常简单。本书宗旨就是让开发人员真正理解ASP.NET技术,帮助开发人员提高ASP.NET开发的技术水平。学完本书后您不仅能够掌握控件开发各个方面的技术,而且深晓ASP.NET的工作原理。对大部分使用ASP.NET技术开发两年左右的开发人员来说,本书75%以上的内容可能没有接触过,本书将通过笔者精心准备的一些生动的例子来阐述这些内容。
本书适合从事ASP.NET技术多年想往深度理解ASP.NET工作机制的开发人员阅读,对于刚刚入门的初级开发人员,本书的前面几章也介绍了几个入门性的应用例子,本书还可以作为在校学生的就业预备教材。针对读者安装的开发环境不同,笔者分别为VS 2005和VS 2008建立了解决方案,即无论您是使用VS 2005还是VS 2008都可以成功打开本书随书光盘的代码,只是使用VS 2005打开的解决方案不包含.NET 3.5对应章节内容的示例代码。
作者介绍姓名:郑健
网名:【夜战鹰】
【ChengKing(ZhengJian)】
MSDN中文技术论坛版主;CSDN Blog专家、社区专家、荣誉专家;CSDN社区Asp.net版块版主、Asp.net控件/组件开发版块版主;荣获2008年《DevWOW微软博客达人》优胜奖。具有多年Web开发经验,目前在北京用友软件集团平台技术部门从事ERP产品的底层UI控件/组件设计工作。
作为一个对技术痴狂追求者, 我很明白分享的重要意义, 因为有过许多次当遇到问题从网上寻找到答案的惊喜,所以希望本书也能为钟情于ASP.NET的读者们带来同样的感受。
序 一中学的时候,在语文课堂上学习过庖丁解牛的寓言故事。生活在战国时期的著名思想家庄子,以其神来之笔向我们介绍了一位古代的“牛人”庖丁,通过长期的实践,在掌握了“牛”的生理结构后,“解牛”时可以得心应手,运用自如,尤其是最后的描述“提刀而立,为之四顾,为之踌躇满志,善刀而藏之”让吾辈神往不已,一代“解牛”大侠,颇有独孤求败的气势!
后来我又学过一篇寓言故事,即宋朝欧阳修所著的《卖油翁》,同样描述了一位经过反复实践,在酌油时,油可以“自钱孔入,而钱不湿”的卖油翁,这其实也是一位神人。而且卖油翁非常谦虚,在总结自己的成功经验时,只说了一句“无他,但手熟尔”。
在很长的一段时间内,我一直认为这两篇故事讲述的是同一个道理,所有的技能通过反复的磨炼,最后在实践时均可以做到得心应手,运用自如,均为“无它,但手熟尔”。
三十六行,行行出状元。我也一直将各种程序界的“牛”人比喻为庖丁或者卖油翁,认为他们可以非常熟练地掌握各种相关知识,在编写程序时信手拈来,拖拖拽拽之间,最终的应用程序成型出炉,最后提“鼠标”而立,为之四顾,为之踌躇满志。当有后辈请教时,非常谦虚地面带微笑曰:我亦无它,惟手熟尔。让周围手不熟的同事也为之神往不已。
但后来我发现,其实这些神人之间还是有很大差异的,这种差异其实正好体现了卖油翁与庖丁的不同境界。
回顾一下,在ASP.NET之后, Web编程开始变得异常简单,因为它将更多的实现细节隐藏在框架内部。大部分需求场景甚至仅需要拖曳控件就可以了,不需要编写任何代码。更有甚者,从ASP.NET 2.0开始,包括用户管理(注册、找回密码、更改密码等)、导航(站点地图、菜单等)在内的场景都不需要再编写代码,只需要将相应的控件拖到表单上即可以完成编码。
这在一定程度上使得生产力得以大大提升,开发人员不必了解具体的开发细节,只需要将这些积木式的“控件”所完成的功能了解清楚即可。在工作中,随心所欲地玩转这些控件,似乎已经成为了ASP.NET编程高手的象征。而在遇到问题时,大部分ASP.NET开发人员的第一个想法就是去互联网上寻找现成的控件。
这样,很多开发人员可以在经过短时间的磨炼后,就可以面带微笑得向其新来同事笑曰:我亦无它,惟手熟尔。但相信在这些“谦虚”的“卖油翁”当中,有很多只是“知其然,而不知其所以然”。
所以,与ASP.NET程序员的增长速度一样,在论坛上,一些类似的ASP.NET 开发问题也在呈几何级数的增加:
“服务器控件与客户端控件有什么区别?”
“动态创建的Button的单击事件怎么不执行?”
“为什么点击Button时,总是先触发PageLoad事件?”
所以作为一位开发人员,我们不应该只梦想着成为卖油翁,还要立志成为“知其然,更知其所以然”的庖丁。
郑健的这本《庖丁解牛-纵向切入ASP.NET 3.5控件和组件开发技术》恰恰是为那些已经可以熟练使用ASP.NET控件,但却渴望了解其内在运行机制的朋友们所准备的。本书以极为详尽的笔墨,向大家介绍了ASP.NET3.5控件和组件的相关机制,并且提供了详细的示例代码,让你在实践当中逐步找到共通的原理,达到举一反三的目的。相信您阅读过此书后,会有一种提书而立,为之四顾,为之踌躇满志的感觉。
祝愿每位朋友都在工作中可以成为程序界的“庖丁”。
王洪超
微软(中国)有限公司互联网架构首席顾问
2008/12/16
序 二技术是为市场服务的,当下的互联网格局已经发生了巨大的改变。网络服务的崛起和高速发展已经说明了其市场需求和客户意愿。然而网络服务需要以技术作为驱动力,Web开发技术作为其重要的实现部分正在走向新的阶段。
大家通常认为ASP.NET仅是一种语言,但准确地讲,ASP.NET是Web开发技术中的一种,ASP.NET是一种技术而不是一种语言,了解一门技术的前提是要理解其工作原理。相对来说,学习ASP.NET技术要比学习一门语言要难许多。而本书的宗旨就是让开发人员真正的理解ASP.NET技术,帮助开发人员提高ASP.NET开发技能。书中内容主要以控件开发为主,如果扎实地掌握了ASP.NET控件的运行机制,则开发一个页面级的ASP.NET应用程序会变得非常简单,学完本书后您不仅能够掌握控件开发各个方面的技术, 而且能够知道ASP.NET的工作原理。
此外,从事控件开发工作的好处是有更多机会进行面向对象的程序开发,比如控件中的接口非常多,而一个好的控件不仅在于功能强大,性能好,也在于是否易重用,是否易扩展,是否能用尽量少的代码实现我们的必要功能。看完本书,您将能够理解ASP.NET页面以及其中每个元素的生成过程。ASP.NET开发实质上就是应用控件的过程,我们在页面中使用的每个控件,甚至页面都是一个派生自System.Web.UI.Page控件的类,只不过Page控件是一个特殊的容器控件,但是它的生命周期与一般控件生命周期是一样的,在书中也有一些讲解Page控件运行机制的知识点。当知道了控件的工作原理再来开发一个页面就会非常容易,也可以说学习控件开发是迅速掌握ASP.NET技术的有效途径。
本书注重理论实践结合,每个ASP.NET控件开发技术知识点,基本上都会有对应的应用示例。在章节方面,按照技术点类别进行分类,对每个控件开发技术点,都进行了详尽的阐述,内容比较全面,因此本书也可以作为查找手册使用。
本书由微软中国区Visual C#技术微软最有价值专家(Most Valuable Professionals,MVP)郑健撰写。郑健先生作为微软MVP有多年的微软技术项目开发经验,他撰写过多部关于.NET/ASP.NET等方面的专著和文章,在参与微软相关的开发项目中收集了很多技术反馈和用户体验,这也为本书的创作打下了良好的基础。
微软最有价值专家(Microsoft MVP)是一群令人敬佩的人。他们都是具备一种或多种微软技术专业知识,并且积极参与在线或离线的社群活动,经常与其他专业人士分享知识和专业技能,受人尊敬、信任,而且平易近人的专家。 通过分享其知识和经验并提供客观反馈,MVP 帮助人们解决问题和发现新的潜能。
微软认为,技术社区为用户提供了技术交流的机会,这些交流促进变革和创新,从而提升大众的生活品质并促进行业的成功。郑健身为社区专家,积极活跃在线上和线下社区,不仅与广大专业人士分享微软的最新技术和自身的技术经验,还帮助用户更快和更有效地采用新的技术。郑健及其他MVP在社区所做贡献的同时也在帮助微软产品开发人员把握用户的“脉搏”和更好地满足客户的需要。
微软公司的ASP.NET技术经过了三个版本的大演变,已经变为比较成熟的技术,目前在软件企业应用中也广泛被采纳。通过阅读本书,我相信能够使您重新认识ASP.NET技术,并把它运用到实际的工作中。本书适合从事ASP.NET技术多年、想往深入理解ASP.NET工作机制的工作人员,考虑到对ASP.NET刚刚入门的初级开发人员,在本书前面几章也介绍了几个帮助他们入门的应用例子,所以本书也可以作为在校学生的就业预备教材。本书可以让您理解最流行的基于Web架构的应用程序呈现过程,阅读完本书之后,您会发现这是一本好书,它会成为您工作中的良师益友。
技术社区支援服务中国区最有价值专家主管
林思绮
本书赞誉孟宪会的书评
本书作者郑健是专业从事ASP.NET开发的微软最有价值专家,就职于国内知名企业,具有丰富的UI、服务器控件和组件的开发经验。在工作的过程中,郑健将这些丰富经验积累下来,形成了本书的内容,可以说,本书是贴合项目开发实践的一本书,对于从事ASP.NET开发的编程人员来说,这是一本难得的指导书和参考资料。正如书名所示,本书以庖丁解牛的手法,对控件开发和组件开发中方方面面的问题进行了解剖,使读者以最快的速度掌握开发中的要领,又辅以实际的例子,不仅告诉读者代码怎么写,还告诉读者为何这样写,理论结合实际,是ASP.NET学习者的福音。
孟宪会 网名【孟子E章】,六届MVP,CSDN社区.NET和Web开发两个大版的版主,主要从事.NET、Java方面的技术工作,著有《ASP.NET 2.0应用开发技术》,翻译《EricMeyer谈CSS(卷1)》、《EricMeyer谈CSS(卷2)》,创建.NET学习网站http://dotnet.aspx.cc,经常活跃于CSDN社区论坛和微软中文技术论坛。
苏鹏的书评
庖丁解牛,一盘切得不能再细的大餐!
自从2005年夏天我在微软的MSDN WebCast上开始介绍ASP.NET 2.0以来,到今天为止,一共收到了关于ASP.NET 2.0的问题邮件12100封,这些足足有1个多GB的纯文本邮件,内容多半围绕着ASP.NET 2.0开发中的沟沟坎坎和各种细节,很多听众通过我的课程快速入门以后,很快就可以用控件写一些简单的应用程序,于是就欣欣然起来,以为“得之已”,结果在后面的开发工作中不但进展缓慢,而且处处碰壁,此时才知道自己与ASP.NET编程高手还有很大差距,但是欲穷千里目更上一层楼的时候忽然就找不到楼梯了,这事不能怪广大读者,我有很大责任,没有继续讲一些进阶课程。
不过万幸的是,今天这一问题得到了补偿,郑健兄出了一本专门为广大读者查缺补漏的好书,这本书从ASP.NET的各种细枝末节讲起,并介绍了ASP.NET Ajax以及稍带SilverLight,各个方面都有所涉及,而且对ASP.NET的介绍不是那种蜻蜓点水式的,而是比较深入的剖析,适合稍微有点了解ASP.NET的读者作为进阶读物。作者是2006-2009 MVP, 以及有多年控件开发经验,CSDN Blog专家、社区专家、荣誉专家。 全书内容详实细节丰富,值得大家一读。
苏鹏 现任中国网通集团北京市分公司软件开发架构设计师,常年从事ASP、ASP.NET等Web开发工作。于2006年荣获微软最有价值专家称号,2007年和2008年连任。目前从事的工作中开始关注Web表示层设计工作,主要作品有《SilverLight魔幻银灯》、《项目经理人是怎样炼成的》等。
叶帆的书评
坦白讲,由于自己长期的技术路线偏于嵌入式方面,对ASP.NET是个门外汉,不过对其开发技术却垂涎已久。很荣幸能成为《庖丁解牛:纵向切入ASP.NET3.5控件和组件开发技术》的最早的读者之一,通读全书,借助对ASP.NET控件(组件)开发的深入理解,使我得以一窥ASP.NET的技术真谛。正如作者在序中所言:“书中有些重要的知识点可能一般开发人员永远不会在工作中用到,但这些知识可以让您对ASP.NET技术理解得更透彻,更深刻。”然也!
本书最大的特色就是细致入微,对技术的讲解真如庖丁解牛,丝丝入扣,这也是作者多年沉浸ASP.NET开发技术使然,对我这个初学者而言,通过此书得以向ASP.NET高手进阶。不过,从本书技术深度而言,我想这本书不仅是对我这个初学者是福音,同时对ASP.NET个中高手也有很好的借鉴意义。
网名叶帆 微软MVP,CSDN十大MVB,微软中文技术论坛Windows CE 版主,十几年开发经验,精通C、C++、VC、VB、C#、VB.NET、EVC、.NET Micro Framework、梯形图和语句表等开发语言,对Windows和WinCE平台下的开发都比较熟悉。曾成功开发了诸如二型计量监控系统、焦炉四大机车自动化系统、烧结配水监控系统、隧道广告影像系统、通用组态软件、嵌入式系统组态软件、LED视频影像系统和ICU病室输液管理等系统。
[叶帆工作室]:http://blog.csdn.net/yefanqiu
朱晔的书评
在看了本书的部分章节之后,我感觉本书对ASP.NET初学者或者对于ASP.NET知其然不知其所以然的人来说特别适合。
有一个错误的观点:只有做控件开发的开发人员才需要去阅读一些控件开发的书籍,其实我觉得不是。如果不了解控件开发,对ASP.NET整体的了解也往往只能停留在使用的层面,任何ASP.NET开发人员都应该去了解控件开发的基本知识。
本书很特别的一个地方是,虽然书名所说的是控件和组件开发技术,但是它确实对ASP.NET各个方面都从本质角度进行了介绍。本书从写作风格上来说和市面上很多“红皮”书不同,作者并不是按照知识点进行枯燥的介绍,而是顺着一个思路一步一步向前推进,看本书就好像在上课一样,不知不觉掌握了很多难点。
我觉得技术书写作的一个要点就是站在读者角度去思考,不能僵硬地按照知识点进行介绍,此书和我以前写的《ASP.NET 第一步——基于C#和ASP.NET2.0》有着相似的风格。可以说,本书不仅仅是控件开发的书籍,而且是一本ASP.NET的提高书籍,如果认真阅读本书,你一定会有很多收获。
朱晔 网名LoveCherry,2006-2008 ASP.NET 微软MVP,熟悉ASP、ASP.NET、C#、SQL Server等技术,7年Web开发经历、5年.NET开发经历,熟悉网络游戏行业,对互联网行业(比如SNS)也比较热爱,尤其擅长基于.NET的分布式电子商务网站、互联网网站、网游平台架构设计,成功领导团队开发过趣味第一网游运营平台,www.qwd1.com
杜勇的书评
这本书是作者几年来ASP.NET控件实际开发经验的系统总结。对于正在学习ASP.NET控件开发的朋友,也许作者的经验会让你少走一些弯路;对于有一定经验的朋友,通过这本书与作者一起总结一下,也许会有不少收获。
杜勇 网名dudu,Blog:http://dudu.cnblogs.com。
博客园(http://www.cnblogs.com)创始人、站长,微软MVP,自从2004年1月创建博客园,一直专注于博客园的发展,目前在上海创业。
李洪根的书评
作者郑健将自己多年的ASP.NET开发经验写成这本书,把ASP.NET服务器控件、组件开发、底层原理诠释得淋漓尽致。阅读本书能让读者在更短时间内、更容易地开发出优秀的Web应用程序,而且作者以庖丁解牛的方式让读者通晓其原理,引导读者解决开发中的实际问题,堪称ASP.NET开发实战书籍之典范。本书须细细品味,结合开发实际,方能豁然开朗,领悟ASP.NET技术精髓。
李洪根 TechExcel中国研发总监,2003-2008年连续五届微软最有价值专家,多年大型项目开发和管理经验,在开发方面有很深的造诣。
李会军的书评
磨刀不误砍柴工,刀虽磨快了,如不能掌握砍柴之要领,同样耽误时间,正如开发人员对ASP.NET的内部运行机制不了解,很难在开发中灵活高效地使用ASP.NET,那么就让本书带你深入ASP.NET的殿堂,最终到达得心应手,运用自如的境界吧。
李会军 网名TerryLee,微软最有价值专家,博客园专家。
张博的书评
本书由浅至深地向我们详细阐述了ASP.NET组件开发,书中大量的经验代码使我们的开发迈向更高点。
张博 万龙振华国际物流有限公司,网络部技术主管。现兼任微软.NET(北京)俱乐部核心管理团队负责人,大学时就对微软的.NET有浓厚的兴趣,并在第一线从事6年的开发工作。先后从事过CMS、商务网站、学校管理系统、水务系统、网管系统、物流系统等的开发和系统设计,任高级软件工程师,组织策划多项系统的开发,在媒体先后发表文章近百篇。
王涛的书评
软件技术就犹如浩瀚夜空中的星辰,Web开发无疑是其中最亮的一颗。作为.NET平台下的Web开发框架,ASP.NET有着自身的优势与特点,而控件开发就是其中的重要篇章。品读这本《庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术》,酣畅之感油然而生:
一本技术典籍,以控件开发为主导,深入浅出铺陈ASP.NET技术核心领域;
一册实例宝典,以实例导航为基础,层层深入技术核心,为你打开理论之门。
本书的精髓在于不仅教会你如何去做,而且引导你如何思考,通过17章内容的渐进之旅,盘点控件开发的方方面面,深入ASP.NET框架的细枝末节,领略相关设计的精妙绝伦。神游其间,品味作者的经验沉淀与技术专注,探究控件开发领域的点点滴滴和独到见解,本书值得一读。
王涛(Anytao, http://www.anytao.com/),微软C# MVP,高级软件工程师,机械工程硕士,《你必须知道的.NET》一书作者。对.NET基础架构和CLR运行机制有浓厚的研究兴趣和造诣,熟悉ASP.NET、WCF和Silverlight相关技术开发。
高阳的书评
让我欣喜的是,郑兄的在这本书形象地提出独特的“庖丁解牛”的理论,用这个理论来深入的研究ASP.NET控件和组件开发技术是多么令人推崇的一种方法啊!这是一本关于ASP.NET的书,确切地说是一本关于ASP.NET控件和组件开发的书,它涵盖了控件和组件开发的各个方面,更包含了一些以往不为人所重视的内容。例如,我看到书中有关ASP.NET对于页面状态机制的章节时心想,如果更多人能够早点接触到这部分内容,那么大家对于目前ASP.NET 控件与组件开发技术的掌握就能更加轻松和愉快了。
高阳(网名“ ξ箫音ξ”,拥有技术博客http://www.cnblogs.com/xiaoyin_net/,箫心IT乐园创始人http://it.crfly.com),微软最有价值专家(ASP.NET MVP),微软特邀讲师。复旦大学软件硕士,曾任微软中国开发经理,大展信息科技(北京)有限公司高级交付经理等,有10多年的管理与程序设计经验和5年左右的.NET应用程序开发经验,对于ASP.NET企业应用开发与架构设计有较为深入的理论基础与实践经验。目前他正在编写,我也能做CTO系列:《我也能做CTO之程序员职业规划》,《我也能做CTO之.NET技术应用》等书籍,相信在2009年将会与大家见面。
网友评论在本书正式出版之前,作者曾将第2~6章放在网上作为试读样章,以下是网友们对样章的评论。
好。讲得比较细致,不知道是否每章都是这么细致。
姚宏
各章贯穿得很好,循序渐进。读完很有感受。非常感谢作者的分享!
007
这篇比较容易懂, 对初级开发人员也比较适合。
开拓者
控件属性就被你讲得这么透彻, 太多了,收藏一下以后慢慢看。
路瑶
对事件阐述得非常有深度,建议大家都看一下. 感觉文章中的内容不仅仅用于开发控件,开发ASP.NET级的页程序,这些也都是适用的。
hgood
每一篇都好长,讲得很仔细,太好了, 正适合我, 多谢! 调试也这么多方法啊,牛人! 感谢!
Good
全部看完了,讲得太精辟了! 很少能够遇到这种文章。
kank
感觉很好。以前写过一些自定义的控件,也翻阅过很多书,都觉得很一般,今天看到这个
觉得还不错。
杜耀辉
深入浅出,浅显易懂,是一本不错的参考书。
dreammaster
非常期待。书中70多个例子讲解,必定详细之至。到时候直接拿来用到项目中,楼主不要“打击盗版”噢。
yanggaolou
70个示例啊,我一定要买一本。只是目录和内容简介我就看了N遍,封面也是相当帅的一本书。
usea99
这本书对于我们刚从事ASP.NET的程序员来说真的是受益匪浅,希望能快点看到这本书。
czwk
我已经看了三章了,本书对ASP.NET机制分析得非常透彻, 我每天都来看的。
好人
文中随便几个例子 都是我存在的问题,有时间去买本书看看。
支持
前 言很多开发人员都有这样的体会,使用ASP.NET开发很多年,但觉得水平总是提高不了,甚至我发现有超过五年工作经验的资深开发人员对ASP.NET技术掌握得也不是很深。其主要原因是在开发过程只注重往广度(横向)去学习各种技术,包括各种最新技术,而没有在掌握一个技术后往深度(纵向)去深入研究。还有很多开发人员虽然具有多年工作经验,但他们只是使用ASP.NET技术开发页面级的应用程序(页面开发人员),而没有或者说没有机会接触到ASP.NET的底层技术,比如Web应用程序的页面呈现过程等,这里所说的技术并不仅限于ASP.NET,而是指基于Web平台的B/S架构下必须要掌握的东西。比如一头牛,看上去似乎浑身都是肉,但当我们拿着刀去宰一头牛时,就会知道没那么容易,如果无规律地硬砍不但会费很大的力气,而且很可能会最终把牛砍得一片狼藉,原因在于对牛的身体组织结构不熟悉而无法正确地入刀;而《庄子•养生主》中为文惠君宰牛的庖丁则不然,其刀入牛身若“无厚入有间”而游刃有余,因为他对牛的结构了如指掌,这就是所谓的深度(纵向深入研究)。学习ASP.NET技术也是这样,如果在工作中只是对技术浅尝辄止,则很难提高自身的技术水平,本书主旨正是用“庖丁解牛”之术解析ASP.NET,从深度讲解ASP.NET的工作机制。
本书主旨及本书特色
准确地讲,ASP.NET是一种技术而不是一种语言,掌握一门技术的前提是要理解其工作原理。相对来说,学习ASP.NET技术要比学习一门语言要难许多。而本书的宗旨就是让开发人员真正地理解ASP.NET技术,帮助开发人员提高ASP.NET开发能力。书中内容主要以控件开发为主,如果扎实地掌握ASP.NET控件的运行机制,则开发一个页面级的ASP.NET应用程序会变得非常简单,学完本书后您不仅能够掌握控件开发各个方面的技术,而且能够透彻理解ASP.NET的工作原理。
本书不是讲解怎么使用ASP.NET控件,而是实实在在地讲解怎么开发控件。在讲解过程中剖析了很多控件系统基类源代码,因为多接触些.NET Framework的源代码对设计模式思想的理解也会更深刻,相对于书中的理论这其实就是实践。
控件开发与设计模式有何相干?在此简单谈谈设计模式。在继承系统基类开发自定义控件的过程中,细心的开发人员可能会发现基本上系统的所有的基类都有一个最基本的设计模式 — 模板方法模式,这个设计模式的特点是:由基类定义骨架,由基类驱动(比如控件的生命周期各个阶段方法的执行就是由基类驱动的),由基类提供最普遍的默认实现,由基类抽取出不变代码实现代码重用。这样的好处是,在大多数情况下,我们在开发自己的自定义控件时,写很少的代码(或者什么都不写)就可以实现一个控件,举个例子,请看一下如下代码:
Public KingTextBox : TextBox
{}
以上代码中没有写一句实现代码,但它仍然是一个完整的控件,重用了基类中的所有功能,当我们需要的功能与基类的功能不同时,仅需要重写(override)基类个别方法,即可实现必要的功能,其余的功能仍然使用基类的默认实现,这里要说明的是,实现自定义控件类不像实现我们自己的业务类一样对类中的每个方法都要亲自编码实现。此外,在控件开发技术中,使用这种设计模式可以让烦琐的事情由系统基类来统一完成,在一定程度上可以避免开发人员出错的可能性。
设计模式是面向对象的公式,我个人也看过不少设计模式方面的书,也对设计模式比较感兴趣。个人觉得学习设计模式最好的办法是先找几本书看一遍,吃透,再看大量的源代码,经常会有顿悟的感觉;否则可能看懂了一段精典设计模式的代码,也不知道是什么设计模式,只是把代码读懂了。在控件开发中,如果你想了解得更多,必须要看.NET Framework中的系统控件代码,在不知不觉中就会提高自己的开发能力和面向对象思想。
由于本书内容主旨不是讲设计模式,这里就谈这么多,如果想了解更多面向对象的话,还要看一下系统基类之前的关系,想一下它们的类为什么要这样设计,我仍然要提醒的是在看系统源代码时不要局限于仅看懂代码。
书中有些重要的知识点一般开发人员可能永远不会在工作中用到,但这些知识可以让您对ASP.NET技术理解得更透彻、更深刻。
控件开发工作的好处是有更多机会实战面向对象,比如控件中的接口非常多,一个好的控件不仅在于功能强大,性能好,也在于是否易重用,易扩展,是否能用尽量少的代码实现所需的功能,掌握了控件开发,您也就修炼成一位面向对象编程的高手。
看完本书,您将能够理解ASP.NET页面以及其中每个元素的生成过程。ASP.NET开发实质上就是应用控件的过程,我们在页面中使用的每个控件,甚至页面都是一个派生自System.Web.UI.Page控件的类,只不过Page控件是一个特殊的容器控件,但是它的生命周期与一般控件生命周期是一样的,在书中也有讲解了一习控件开发是加速掌握ASP.NET技术的有效途径。
本书注重理论与实践结合,每个ASP.NET控件开发技术知识点,基本上都会有对应的示例应用。在章节方面,按照技术点类别进行分类,内容比较全面,对每个控件开发技术点,都进行了详尽的阐述,因此本书也可以作为查找手册使用。
目 录第1章 服务器控件概述及开发环境部署 1
1.1 自定义服务器控件 1
1.2 服务器控件在软件开发过程中的作用 1
1.3 在控件开发中提升自己 2
1.4 可继承控件基类介绍 2
1.5 运行一个简单的控件 7
1.5.1 开发一个简单控件 7
1.5.2 部署和运行 11
1.6 控件生命周期 12
1.6.1 概述 12
1.6.2 用代码跟踪控件生命周期过程 14
1.7 本章总结 17
第2章 服务器控件开发中的调试技术 18
2.1 预置代码示例 18
2.2 调试页面服务端代码 19
2.3 服务器控件的调试 20
2.3.1 运行模式下的调试方法 20
2.3.2 设计模式下的调试方法 20
2.4 JavaScript脚本调试方法 22
2.4.1 调试页面中的JavaScript脚本(方法一) 22
2.4.2 调试页面中的JavaScript脚本(方法二) 23
2.4.3 调试非嵌入式JavaScript脚本文件 23
2.4.4 调试嵌入式JavaScript脚本资源文件 24
2.4.5 高效率调试的技巧 24
2.5 Ajax Library对JavaScript调试支持 26
2.6 本章总结 26
第3章 从零开始开发服务器控件 27
3.1 选择基类 27
3.2 控件呈现顺序 28
3.3 Render呈现控件的几种方式 30
3.3.1 使用HTMLTextWriter类输出 30
3.3.2 直接输出HTML标签 32
3.3.3 使用服务器控件的RenderControl方法 33
3.4 AddAttributesToRender方法 34
3.5 CreateChildControls方法 35
3.6 INamingContainer接口 36
3.7 实现复合控件 38
3.7.1 CreateChildControls方法 39
3.7.2 ChildControlsCreated属性 39
3.7.3 EnsureChildControls方法 39
3.7.4 RecreateChildControls方法 39
3.7.5 Controls属性 40
3.7.6 HasControls方法 40
3.7.7 HasEvents方法 40
3.7.8 FindControl方法 41
3.7.9 实现复合控件示例 41
3.8 常用开发技巧 51
3.8.1 DesignMode属性 51
3.8.2 屏蔽基类控件中的属性 52
3.8.3 Page.Request.Browser属性 53
3.8.4 设置控件ID规范 53
3.8.5 增强FindControl功能 54
3.8.6 映射服务端控件值到客户端 55
3.8.7 禁止派生自CompositeControl的控件创建子控件 56
3.8.8 使用CreateChildControls的注意事项 56
3.8.9 不要误解设计元属性DefaultValue 57
3.8.10 在Render方法中利用基类资源 57
3.8.11 条件编译&条件属性 60
3.9 本章总结 61
第4章 服务器控件属性 62
4.1 控件属性的作用 62
4.1.1 系统属性 62
4.1.2 自定义属性 62
4.2 简单属性 63
4.3 属性的设计时特性 64
4.4 复杂属性 67
4.4.1 概述 67
4.4.2 复杂属性的几种标记形式 67
4.4.3 深入研究——复杂属性分析器 79
4.5 深入研究——定制自己的属性编辑器 85
4.5.1 系统属性编辑器 85
4.5.2 定制属性编辑器 91
4.6 类型转换器 126
4.6.1 系统类型转换器 126
4.6.2 定制自己的类型转换器 128
4.7 实现自定义属性 138
4.8 本章总结 145
序言中学的时候,在语文课堂上学习过庖丁解牛的寓言故事。生活在战国时期的著名思想家庄子,以其神来之笔向我们介绍了一位古代的“牛人”庖丁,通过长期的实践,在掌握了“牛”的生理结构后,“解牛”时可以得心应手,运用自如,尤其是最后的描述“提刀而立,为之四顾,为之踌躇满志,善刀而藏之”让吾辈神往不已,一代“解牛”大侠,颇有独孤求败的气势!
后来我又学过一篇寓言故事,即宋朝欧阳修所著的《卖油翁》,同样描述了一位经过反复实践,在酌油时,油可以“自钱孔入,而钱不湿”的卖油翁,这其实也是一位神人。而且卖油翁非常谦虚,在总结自己的成功经验时,只说了一句“无他,但手熟尔”。
在很长的一段时间内,我一直认为这两篇故事讲述的是同一个道理,所有的技能通过反复的磨炼,最后在实践时均可以做到得心应手,运用自如,均为“无它,但手熟尔”。
三十六行,行行出状元。我也一直将各种程序界的“牛”人比喻为庖丁或者卖油翁,认为他们可以非常熟练地掌握各种相关知识,在编写程序时信手拈来,拖拖拽拽之间,最终的应用程序成型出炉,最后提“鼠标”而立,为之四顾,为之踌躇满志。当有后辈请教时,非常谦虚地面带微笑曰:我亦无它,惟手熟尔。让周围手不熟的同事也为之神往不已。
但后来我发现,其实这些神人之间还是有很大差异的,这种差异其实正好体现了卖油翁与庖丁的不同境界。
回顾一下,在ASP.NET之后, Web编程开始变得异常简单,因为它将更多的实现细节隐藏在框架内部。大部分需求场景甚至仅需要拖曳控件就可以了,不需要编写任何代码。更有甚者,从ASP.NET 2.0开始,包括用户管理(注册、找回密码、更改密码等)、导航(站点地图、菜单等)在内的场景都不需要再编写代码,只需要将相应的控件拖到表单上即可以完成编码。
这在一定程度上使得生产力得以大大提升,开发人员不必了解具体的开发细节,只需要将这些积木式的“控件”所完成的功能了解清楚即可。在工作中,随心所欲地玩转这些控件,似乎已经成为了ASP.NET编程高手的象征。而在遇到问题时,大部分ASP.NET开发人员的第一个想法就是去互联网上寻找现成的控件。
这样,很多开发人员可以在经过短时间的磨炼后,就可以面带微笑得向其新来同事笑曰:我亦无它,惟手熟尔。但相信在这些“谦虚”的“卖油翁”当中,有很多只是“知其然,而不知其所以然”。
文摘第1章 服务器控件概述及开发环境部署
本章内容
1.1 自定义服务器控件
1.2 服务器控件在软件开发过程中的作用
1.3 在控件开发中提升自己
1.4 可继承控件基类介绍
1.5 运行一个简单的控件
1.6 控件生命周期
1.1 自定义服务器控件
什么是服务器控件?一个Button就是一个服务器控件。ASENET提供了很多服务器控件,比如:TextBox,GridView,Login等。
服务器控件是能够完成一定的通用交互功能,编译成程序集,并嵌入到页面(扩展名为.aspx的文件)中的控件。当客户端向服务器请求一个页面时,页面构造器能够使控件与页面一起以被浏览器识别的HTML标记串返回;在客户端跟用户交互后,可以将属性又提交回服务器,以及触发事件等。服务端控件分为HTML服务器控件和Web服务器控件。总之,服务器控件集成了一定的交互功能,具有较强的代码重用性。
自定义服务器控件除了具备上面所说的服务器控件的所有特性外,还可以满足某个自己定制的功能。
1.2 服务器控件在软件开发过程中的作用
服务器控件开发在软件开发应用中是非常必要的。使用自定义服务器控件的情况有以下
几种:
1.需要使用集成了业务功能的控件
一般微软或第三方控件公司提供的控件只具备技术方面的功能通用性,在做一个具体的系统时,会用到很多封装多种业务的控件。如ERP系统中的参照控件,就是一个典型的将业务和技术封装在一块的控件。这样不仅可以做到“代码重用”,也可以做到“业务重用”。