博文专访——与作者面对面奚江华先生谈ASP.NET 2.0
针对奚江华先生的新书《圣殿祭司的ASP.NET 2.0开发详解——使用C#》的出版,博文视点对奚江华先生进行了专访,现将奚先生的谈话整理成文,以飨读者。
采访人:博文视点首席策划编辑刘铁锋(Joylite)
受访人:奚江华(圣殿祭司)
采访方式:电子邮件
Joylite:
奚老师,您好!非常高兴看到您这本多达上千页的ASP.NET 2.0开发的新书面世。应该说,这本书是市面上所能见到的最厚的一本ASP.NET 2.0的作品之一了。在看完您的大作之后,第一个感觉就是“细致”。从最前面Visual Studio 2005的环境配置以及数据库环境的配置,就感觉到了您的写作的认真。细致的目录编排更是证明了这一点。能够为我们介绍一下您对这本书的定位以及主要的创作思路吗?
圣殿祭司:
这本书是针对ASP.NET 1.0升级的读者,所以并没有再去谈基本的程序语法,或是ADO.NET数据库访问技术,因为在台湾大多数的读者反映他们需要的是全新时代的ASP.NET 2.0书籍,而非新瓶装旧酒的书,因为基本功能的ASP.NET 1.0书籍大家手上己经有一堆了。
而这本书在台湾同类ASP.NET 2.0书之中,算技术水平最高之一,即便是相同的章主题都比其他书有更好的深度与广度,并且之所以有“细致”的感觉,是因为长期下来笔者在网络论坛上见到太多不求甚解的问题,由于许多人技术细节懂得很少,故总是问题不断,为了提供给大家一本好的技术图书,因此把最细微的细节,最深入的理念都介绍得非常清楚,让大家看完后就能够明明白白,不会有那么多不必要的疑惑,同时也是一本我自己可以经常翻阅的ASP.NET 2.0书籍,算是一个学习的总结。
Joylite:
整本书所涉及到的知识点众多,也提供了非常多的范例。那么,在读者学习本书之前,是否需要有些预备知识,才能更好地掌握本书的内容呢?(备注:可能读者必须了解一些数据库的基本知识,能够更好地掌握DataGrid方面的知识。)
圣殿祭司:
这本书是针对具备ASP.NET 1.0和数据库能力的读者所写的,因为整本书的内容皆为ASP.NET 2.0新的主题,故算是针对进阶及有经验的读者。而之所以这么做,是因为许多人都已购买ASP.NET 1.0和SQL Server 2000书籍,倘若这本书混杂ASP.NET 1.0和数据库的章节,势必会大量减少ASP.NET 2.0的章节与内容,这样会造成许多读者的不满,也不符合他们的期望。
再者反观台湾过去两年来,卖得最好的是ASP.NET进阶书,而非入门书,故可以理解大多数人想要的是有深度的进阶书,而非重复谈变量、数组与循环等古老的议题。
且经过销售实证,这本书果然连续两个月在台湾最大的指标书局蝉联第一名,因为读者深知每一分钱花得都是值得的,都是买到ASP.NET 2.0全新知识,买到的是更进阶的新知识;反观混杂ASP.NET 1.0和ASP.NET 2.0主题的书籍,目前看到的销售成绩皆不理想,故由此可以观察到台湾读者的心态,而一本好的书不仅要在技术上优越,同时也要考虑到读者的喜好,这样才能够受欢迎。
Joylite:
在本书的结构中,与以往所有的ASP.NET方面的书籍都不同,您把Atlas的技术放到了章节的前面,您是怎样考虑的呢?
圣殿祭司:
台湾微软的技术经理也曾问过相同的话。我在2005 年7 月第一次得知Atlas Framework时,就知道这个技术会大红,故在书籍撰写前就预定了一定要加入至少三个Atlas Framework章节,但这是必须对.NET技术非常敏锐与具有远见才能办得到的。
坦白地讲,这个策略很大胆,风险也很高,但商业上通常是高风险高报酬的。我并不是全然在赌运气,而是经过深思后,也觉得该有人开创一条创新之路了,因此在2005年10月开始撰写本书时,一直到2006年10月,台湾仍然没有一本ASP.NET 2.0的书中有加入任何Atlas Framework的技术章节,同样的状况也发生在大陆;这说明了什么?这是一个书籍上的商业策略考虑,一定要有高度的差异化,且是有用的差异化,才能够获得读者的青睐,Atlas算是我所布下的伏兵,当书籍一上市自然没有同等级的书籍可以抗衡,这也就是能够达到销售第一名的因素之一。
而Atlas之所以放在书籍的前面,作为第5、6、7章,事实上我的隐含意义是希望读者学会Atlas之后,能够自动自发地改写书籍后面的所有范例,去比较同步与非同步AJAX所造成的差异,以及理解AJAX所能带来的效益;倘若我将Atlas放到书籍的最后,读者读完书后,通常不会有多余的心思再回过头来改写一个Atlas范例,故这是我将Atlas放在书籍前面的用意,只不过我没有明讲出来罢了。
Joylite:
毋庸置疑,Altas(或者说AJAX相关的技术)已经成为了目前的热点。那么,您觉得Altas(或者说AJAX)技术的本质是什么?将来的发展趋势又将如何呢?
圣殿祭司:
Web技术开发是全世界程序开发的趋势,而ASP.NET又是.NET技术中的主流,但ASP.NET的Thin Client功能及互动性远不及Rich Client的Win Form,然而,Atlas AJAX却是解决这个问题的一帖良药,能够大幅增加ASP.NET即时性与丰富性的功能,让ASP.NET一跃成为Rich Client类型的解决方案,让ASP.NET的网页功能在许多方面突破长久以来的限制,进而达到更好的用户体验。
而Atlas已确定要加入到下一代的Visual Studio开发工具中(VS 2007或2008),并且将会在2006年年底推出一个Atlas正式版的核心集,让使用Atlas技术的客户可以得到支援,并大胆地导入到企业或正式项目中,可以看到,目前的Atlas AJAX技术只是一个技术洪流的开端,在未来3 年内还会高度成长,并且功能会更加茁壮,甚至会变得更简单。
Joylite:
在您的大作中,有一章的内容涉及到了My。据我个人所知,您当时花了相当的精力来准备这个章节的内容。可能没有VB开发经验的读者对此并不了解,您可以简单地介绍一下您为什么要提出这一章的内容吗?
圣殿祭司:
My这个功能是.NET 2.0中的新对象,但却只有VB的用户可以使用它,然而这对于C#的用户即便很少使用My对象,也会有着心里不平衡的遗憾,因为C#语言和VB是经常被拿来比较的,而且各自都有不少拥护者。
为了证明C#也能够完整使用My对象的情况,我尝试完整破解如何在C#环境中使用My对象,而这可以视为一个证明题,或者挑战题,即便笔者个人也很少使用My对象,但我还是很有兴趣知道是否能够完整引用;虽然你会认为,一个很少使用的东西为何还要浪费力气去撰写或研究,但这类例子在现实生活中却不少,例如人们会买健康保险,汽车有装置安全气囊,而许多人可能终其一生都不见得会用到,但人们的确愿意为这部分花钱。
故我在书中加入了My对象章节,是为了补足C#环境中不能直接使用My对象的缺憾,同时也是台湾第一人可以非常完整破解其功能的一本书,其目的是基于提升附加价值的部分,但读者却不必付额外的费用。
注:其实在美国微软的MSDN专栏中也有提过C#如何使用My对象的文章,因此我在书中加入My对象并不突兀,并且MSDN专栏也只是解说其中一小块用法,并非全面性完整用法,全面性的用法仍有许多限制条件,并非毫无障碍的。
Joylite:
现在技术的变迁实在快捷,我想就您来看,ASP.NET 2.0与ASP.NET 1.0最大的改变是什么?读者最应该从哪些方面的技术点来着手呢?
圣殿祭司:
ASP.NET 2.0的主轴在于整合性应用,而非单一的控件应用,例如Login控件、Membership、Role Manager、Profile、Master Page和Web Part Portal Framework等等,许多机制是彼此串联的,也就是必须了解其运作关系,否则就无法掌握ASP.NET 2.0的应用,甚至功能也无法正确执行;故读者应从这些机制运作的技术底层来理解其彼此之间的关系,这样就能够学好ASP.NET 2.0重要精髓,所幸在我的书中已做了完整而清楚的描述,让读者不必买一堆ASP.NET 2.0的书,花费一堆不必要的时间,来拼拼凑凑地找出ASP.NET 2.0的全貌及答案。
Joylite:
Web Part以及Web Part类似的技术(比如Google的Gadget)似乎出现在了越来越多的网页上面,您怎么看待这种技术以及相关的趋势呢?
圣殿祭司:
Web Part主要就是针对用户个性化的需求,让不同用户可以自定义不同的消息界面,而不必都是一成不变的画面,所以算是增加了用户的美好体验。但我个人认为一个网站的成功,在于它本身提供的信息或者功能必须是优越的,是会让用户每天都需要的,这样才能够让网站立于不败之地,而非加入一些很炫但无用的功能,就能保证用户会喜欢,故Web Part的设计需要针对用户的需求来设计,让Web Part变成一个卖点,但前提是网站的内容必须具备足够的吸引力才行。
Joylite:
在您的自序中提及,这本书仅仅是上册,那么下册的内容您是怎样规划的呢?
圣殿祭司:
下册部分目前约略拟定了一些进阶主题,是ASP.NET 2.0上册中应谈而没谈的,例如ADO.NET 2.0、Cache 2.0、HttpModule、HttpHandler和C# 2.0语言方面的功能等等,但实际的章节目录,2007年才会开始动工,届时会公布给大家知道的。
Joylite:
在PHP主导的Web开发领域,似乎已经出现了一种可配置的Web开发方式。也就是说,需要开发什么方面的功能,直接从网上找到相关的模块,简单配置一下即可完成大部分的功能。您怎么看待这个开发方式?ASP.NET是否也有可能出现相关的趋势呢?
圣殿祭司:
PHP和ASP.NET在本质上有很大的不同,在台湾,PHP常被应用到功能固定的网站的构建上,例如留言板、新闻发布、论坛和投票等,这些功能是快速建站必备的,自定义复杂的商业流程也不多,因为网络上有许多现成的模块就可以下载套用,完全不必写程序。
虽然PHP的现成模块功能很迷人,但.NET Programmer对ASP.NET的期望不在于此,ASP.NET是以开发复杂企业或项目功能为目的的,有大量复杂的商业逻辑,它要有多方面的解决方案,例如元件、安全性、性能监控、分布式架构、优美的面向对象能力,以及Team System团队开发等等的能力,但这些都是PHP很缺乏的,因此,ASP.NET背后的意义是Programmer可以取用完整的.NET Framework能力,有完整的解决方案,可以开发Mobile等等,故实际上,ASP.NET与PHP在本质上有很大的不同。
并且微软平台技术,例如SharePoint、Commerce Server和BizTalk Server等等皆与ASP.NET 2.0技术做深度整合,所以可以想象,日后以一套.NET程序就可以开发所有微软产品技术,可以提升不少生产力与整合能力,这是一个重要的趋势,只要你使用微软技术平台,就可以得到这样高度整合的好处,但使用PHP就没有这种优势。
对于ASP.NET现成的模块发展,这种风气应该在DotNetNuke Framework中是比较常见的,但是在台湾,模块发展仍不是主流,甚至是蛮冷门的;而即使微软在下一代的.NET技术中,仍然不是强调模块化的套用,而强调的是最原始开发能力的优越性,例如C# 3.0、VB9、LINQ、WPF、WCF、WF和CardSpace等等,ASP.NET模块算不上是微软或企业看重的,但无论如何相信下一版的ASP.NET仍然会适度加强这方面的能力。