前言
为什么要写这本书?
对于许多初学者而言,学习ASP.NET的感觉是“上手容易精通难”。比如一个典型的ASP.NET操作学习过程:非常轻松安装完成Visual Studio,进入Visual Studio后,在“工具箱”中拖入几个服务器控件,很快就知道如何在aspx.cs文件中编写控件事件执行的程序;单击“运行”按钮就可以在浏览器中查看Web页面的运行效果了,这符合微软公司产品的一贯特点,上手极为容易。但如果要使用ASP.NET技术开发一个Web系统,就会遇到非常多的问题了。例如,页面与控件的事件执行顺序是谁先谁后?什么时候需要修改Web.config配置文件?Web.config文件中的各配置项有什么作用?为什么页面运行时,首先要执行Page_Load方法?如何自定义一个控件?为什么页面提交后,控件的数据会保留?为什么单击按钮提交后,页面会执行Click事件中的程序?总之,当初学者需要更进一步掌握ASP.NET时,却发现ASP.NET像一个巨大的迷宫,到处都是岔道,每一个知识点都不是独立的,都需要以其他知识点为基础。
对于熟悉其他Web编程(如PHP、ASP)技术的程序员来说,在希望学习ASP.NET时,这些问题就显得尤为突出,因为ASP.NET中对Web工作模式进行了“友好”的封装,反而使得习惯于PHP或ASP编程的程序员对ASP.NET的工作模式有似懂非懂的感觉。正是如此,所以经常在.NET技术论坛中看到,一些朋友在请求前辈们推荐一本升级学习ASP.NET的书。笔者正是基于大量的这种需求,结合自身长期从事项目开发实践与本科教学的优势,有针对地为读者组织了此书。
本书的特点
如果说ASP.NET技术是一张网,各种知识点错综复杂,互为支撑,难以深入学习,那就需要将这张网变成一根线,顺着这根线逐步深入到ASP.NET的“腹地”,对ASP.NET这个“庞然大物”有一个清晰的认识。一旦对ASP.NET有了正确、清晰、全面的认识,学习起来就不再是难事,甚至是游刃有余。
本书正是出于此目的,力图在ASP.NET技术这张“网”中归纳出一根学习“路线”,以引导读者走向ASP.NET的“腹地”。为了让读者能够有足够的兴趣和激情顺着这根“线”走下去,本书在选取所讲解的知识点时,首先注重的是实用价值,尽量选择在实际系统开发过程中常用的、操作性较强的技术进行讲解,以最大限度地满足本书读者对象的需求,并不过份追求技术点的深度。
除了单个的知识点外,本书的特色之处就是详细展示了分层开发的思想和方法。分层开发是一个人人尽知的概念,但在实际开发过程中如何规划和实现,这是一般的初级开发人员难以触及的知识。尤其是没有参加过大型项目开发的编程人员,对于系统级构架和分层开发的具体实现方法就更加陌生了。本书不仅详细讲解了系统开发过程中如何分层,而且通过实例,阐述了如何以最直观、最简单的方式实现分层,其目的就是让读者更容易理解分层的概念和实现方法。
本书最后通过两个具有代表性的综合开发案例的实现,让读者进一步加深了对全书知识点的认识。读者通过这些综合项目的分析,自然就会举一反三,灵活应用,很快就能够上手进行系统开发。而读者编写的ASP.NET程序也会变得更加有血有肉、有思想有灵魂。
本书的阅读对象
本书是专门为以下三类读者量身定做的。
1. 对ASP.NET有了一个大致的概念认识,或者使用ASP.NET编写过简单的系统,但希望进一步捋清ASP.NET的技术思路,深入了解ASP.NET的工作原理,熟练使用ASP.NET构架并开发大型系统的读者。
2. 熟悉ASP、PHP或Java,希望以最高效的方式了解和掌握ASP.NET技术思路、工作原理,并能够将自己积累的Web开发经验快速地移植到ASP.NET开发中的读者。
3. 熟悉C/C++/Delphi等语言的客户端编程模式,希望能够在现有的编程经验基础上,尽快了解和掌握Web的编程规律、掌握ASP.NET技术开发的读者。
无论哪一类读者,在阅读本书之前,都需要对C#语言有一个大致的了解。
本书的知识安排
本书的第1章至第3章是Web编程基础和ASP.NET基础,本书安排了极少的基础知识供2、3类读者快速掌握本书必备的基础知识,第1类读者可以选择性地阅读这部分知识。这里包括:如何开始建立一个ASP.NET的网站、ASP.NET的知识结构图、Get/Post在ASP.NET中的表现方式、页面与控件的基本概念、服务器控件的简介、服务器控件的工作原理、ASPX页面与Page类的联系等。
第4章至第8章是对ASP.NET知识的进阶学习,其目的是为了学习ASP.NET的工作机制,了解ASP.NET一些特性解决方案,通过这些特性解决方案从侧面了解ASP.NET的技术特点。具体来说,第4、5两章讲解了config配置文件的组织方式和从IIS开始ASP.NET的工作流程与实现机制。第6章详细讲解了ASP.NET提供的对用户个性化信息存储与操作的解决方案,如统一认证、单点登录、成员资格(MemberShip)、权限角色等。第7章讲解了ASP.NET中的界面处理技术,并对工作机制进行了大量分析。第8章详细讲解了在ASP.NET中使用Ajax的技术细节。
第9章开始讲解分层系统开发,第9、10章讲解的是与数据访问相关的技术;第11、12章实现了一个完整的数据库访问层,并为数据表封装层提供基类,有了这两章的基础,便为业务逻辑层、界面逻辑层的实现打下了良好的基础。第13章通过精细讲解一个实例,来展示使用ASP.NET进行系统开发时的步骤和经验。第14章讲解了LINQ和LINQ to SQL,LINQ to SQL是第11、12章所讲技术的一种较为完美的替代方案。第15章又通过一个完整的实例来讲解使用LINQ to SQL开发系统的经验和架构方式。
在本书的写作过程中,难免有些错漏之处,敬请读者指正,请读者朋友通过http://www.WriteBook.com.cn网站与笔者交流。
笔者于2009年1月