项目中的.NET


 

项目中的.NET(含CD光盘1张) 

李天平 编著

ISBN978-7-121-17670-8

2012年8月出版

定价:108.00元(含光盘1张)

16开

772页

宣传语

本书别无它用,只能用来求职、做项目

直指.NET核心优势,以商业实战指导新手入行

内 容 简 介

本书作者是从事.NET一线开发的资深专家,常年耕耘技术博客,惠及无数.NET新知。此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习方法。本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正的商业项目的能力。

本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分。随书所附光盘收录了大量实例代码及一些商业系统,供读者参考学习。光盘\code\ch19 Tools\动软代码生成器最新版的安装文件请到官网(http://www.maticsoft.com/)下载。

本书适合于.NET初、中级开发人员参考学习,特别有助于.NET从业者进入实战层次,也可作为相关培训机构的参考教材,还可以作为高等院校相关专业师生的参考书。

本书为《.NET深入体验与实战精要》一书的修订版本,请已阅读过上一版的读者注意。

作者介绍

李天平

动软卓越(北京)科技有限公司 创始人,资深互联网公司技术专家,51Aspx高级技术顾问,具有10年以上软件及互联网产品开发经验,8年以上的项目管理和团队管理经验。曾任红孩子集团高级开发经理,蚂蚁互动技术总监,豪杰(超级解霸)公司研发经理等职务。从事过多年的需求分析、产品策划和架构设计工作,具有丰富的系统研发经验及项目管理和团队领导经验。同时也是国内著名开源软件“动软代码生成器”的作者,该软件获得国家版权局的《软件著作权》认证,下载量已经超过70万,著有本书前身《亮剑.NET:.NET深入体验与实战精要》一书。

业内书评

从C#基础语法到WinForm开发,再到大型网站项目优化,本书在系统讲解.NET要点之余,奉上宝贵的实战经验,对有志投身于软件开发行业者的能力提升大有裨益,值得一读。

                                                          ——搜狐首席架构师 秦东亮

 

作者多年经验所得,能让读者更快捷而容易地通晓原理、解决实际问题、开发优秀应用程序。本书需要结合实际开发细细品味,方能豁然开朗,领悟书中揭示的.NET技术精髓。

                                                        ——中软公司经理 吴宝辉

 

在网络发达的今天,像这本书这般值得仔细研读的技术书籍可谓寥寥。“项目中的.NET"蕴藏多年实战磨砺而成的真知灼见,值得盘踞案头、长驻行囊。

                                     ——51Aspx创始人、微软MVP  刘海峰

 

 

一本我会推荐的书,一本可助力.NET程序员飞跃的书。作者将主题讲解得极为明白易懂地,读者既可以用来系统学习,也可作为日常工具书。

                                            ——中讯集团微软MVP、微软讲师 穆彦鹏

 

  

本书侧重实用,对真实商业案例透彻剖析,更有大量精心筛选的面试题,对大学生就业及程序员求职尤为有益。

                                          ——华东师范大学软件学院教师 博士 高岩

推荐序1

作为在Microsoft工作多年的老微软人而言,一方面对于.NET技术得到越来越多国内同行的认可和推崇而颇感欣慰,另一方面也深深觉得,.NET技术推广的步子还可以迈得更大、更快一些。拥有系统平台资源,强大的产品整合能力,以及成熟研发团队的持续支持,是.NET毋庸置疑的优势。然而,与微软任意款产品一样,从诞生之日起,针对.NET开发的诟病也不绝于耳。批评与关注相伴相生,微软、.NET,还有我,都会继续成长。

人们常常会议论.NET不够Open,其实微软对开源从来都不乏热忱,一直在支持相关社区的发展。开源是一种精神,.NET程序员从不缺这种精神,本书作者就是其中的一个典范。很多人在学习.NET的过程中受到过他的帮助,其中包括很多我的学生和新同事,他们中的一部分至今还保持着和天平老师交流技术心得的习惯。

有幸能先于其他人看到这本图书,随之而来的义务就是要贡献出自己的阅读感受。对于看过不少.NET图书,特别是外版图书的我来说,这本书显得有些另类。大量.NET图书像Microsoft的产品一样结构严谨、次序井然,如同严厉的导师,而这本书则富有野趣,没有过多知识框架的限制,没有教科书中的讲述脉络,有的只是作者本人学习和工作感受的真实记录。做技术的人都知道,一代代人遇到的问题总是相似的,所以天平遇到和被问到的问题,相信会是大多数人已经和即将遇到的问题。在我看来,这就是这本书最大的价值!

最后有个愿望,希望这本书出版后,天平能友情赠送我几本,我用来赠送给小师弟、小师妹们。

微软亚洲研究院 

刘晓华 

推荐序2

.NET平台已经发展成为微软重要的战略平台之一,不仅提供了强大的编程语言、丰富的类库、方便的集成开发工具,同时为我们提供了一整套的软件开发生命周期管理解决方案。我们也非常高兴地看到,越来越多的年轻程序员加入到了.NET阵营中来。然而很多朋友却在步入.NET大门之时变得迷惘,感觉学了很多的知识,却不知道如何在实际项目中使用,又或者他们不知道这些知识该用来解决哪类的问题,以至于总觉得自己无法提高,以至于彷徨不前。

天平兄在软件行业从业多年,具有丰富的开发经验,尤其在.NET平台上,更是有着深入独到的理解,他愿意把自己的经验总结出来,并行文成书,对于广大.NET初学者来说,不能不说是一件幸事。本书并不是一个开发指南,也不是针对某一个特定语言或者特定框架的使用介绍,完全是实际项目经验的浓缩与提炼,小到编写代码中的一个技巧,细节决定成败,大到系统设计的原则与技巧,大型网站的性能优化与安全。这些知识恰恰是.NET初学者朋友所迫切需要掌握的。

我认识天平兄大约在三年前,当时博客园上有一款风靡一时的.NET代码生成器,其作者就是李天平,此后我们虽然在网上有过多次交流,却从未谋面,实为一件憾事。受天平兄的委托,让我为本书作序,在读完本书书稿之后,给我的感觉是本书有点有面,点面俱全,相信读完本书的朋友,一定会有不一样的收获。

最后,希望广大.NET程序员朋友,不要再彷徨不前,带上这本书踏上.NET征途,相信自己的选择,成功就在前面。

 

 

资深架构师、博客园专家、微软MVP 

李会军 

 

 

前  言

Microsoft .NET作为微软的战略梦想,引领着下一代软件技术的潮流,已成为众多开发人员的重要选择。然而,新技术带来惊喜的同时,也让人生出许多迷惘。相信很多学习者在接触.NET多日后,犹有雾里看花之感,苦于无法做到灵活应用。本书作者长期从事.NET项目开发与管理,积累了丰富的实战经验,也经由网络答疑直面过各种困惑。本书正是要依托作者苦心积累的心得与一线拼杀的经验,以深入体验来揭示实战精要,带领广大醉心技术者穿越迷雾,把.NET看清楚。

◎ 我们不总是有时间学习

从小到大,学过的东西很多,但有多少能在之后的实际工作中被用来创造价值呢?知识是无穷的,而生命是有限的,将有限的生命荒废于无效的知识,实在是浪费。因此,学习务必要有重点,有针对性。本书作者以珍惜读者生命为己任,紧扣实际项目必须用到的技术要点,绕开无用而缠人的泥潭,力求以最简洁的语言分析与讲解,让读者在有限的时间内,掌握更多有价值的真知。

◎ 熟并不总是能生巧

学习软件开发最好的方式并非多做项目,而是有选择地做项目。结合自身需要,有针对性地选择项目,在实践中快速学习,才有把握跑得过别人。本书的开发案例和商业项目无一不经过精心设计和细致筛选,竭力避免不必要的罗列、重复,仅保留重要的项目分析、设计思路和软件开发思想,商业公司软件开发实践中用到的知识点、技术点、设计思想、真实源码,程序设计中常会遇到的难题,学习中常会面对的困惑,以及颇具价值的经验、技巧。同时,作者认为学习软件开发不仅仅是学会语句如何写、控件如何用,更重要的是学习做事的方法、解决问题的能力,或一种思想,甚至是一种人生态度。因此,重复的次数再多也抵不上高质量的思考,再多的案例参考也抵不上正确的引导。

◎ 兴趣总是一切成果的原动力

作者认为学技术并不一定是一件很苦的事情,其实开发中也不乏很多有趣的东西。只有善于思考、挖掘,让学习变得“好玩”起来,才会有更大的动力去坚持和努力。本书力图通过通俗的故事解读枯燥的原理,如委托与“任务书”、事件与“年终分红”、ADO.NET与“抽水”,三层架构和“养猪”等一系列精心设置的小例子,无一不在激发读者阅读兴趣,倡导更乐观的学习态度。

◎ 学习的目的总少不了一点点功利

只要就业、升职、跳槽这一把把直接关系到票子、娘子、房子、车子的利剑不从头顶移开,程序员就时时不敢忘却“学海无涯苦作舟”的古训。本书也是一本程序员职场指南,在技术讲解上以关键点和核心要素为中心,一切出自项目,源自实践,以使读者快速成为项目团队的核心骨干和有用之才。此外,更是将揭示职场哲理、传授面试技巧、披露职场规则、指点职业规划、交流处事之道融入书中,以求进一步提升读者的竞争力。

      本书结构

全书分为3篇,共19章。

第1篇为基础知识的总结,系统分析了各种.NET概念要点、常见理解误区、ASP.NET网站开发和C#(WinForm)开发案例、数据库操作技巧、XML和WebService、AJAX、Windows Service等各种技术应用的实践总结,解析了初学者最容易迷惑的一些关键认知。

第2篇透彻、系统地讲解了面向对象的思想和项目应用,系统设计的基本思想和思维模式,分层架构开发的理解和实践,以及大型网站系统的性能优化和安全。用通俗、形象的语言,典型翔实的例子,鲜明的对照、比较,阐述了系统架构设计的重要思想,为学习者进一步登堂入室奠定基础。

第3篇通过实际项目案例的方式,重点讲解了日常开发中最常用的通用类库源码、权限角色管理系统、单点登录系统(SSO)等完整解决方案的设计和实现,以及日常开发必备的一些.NET开发工具,以期融会贯通、学以致用,迈入专业殿堂。

同时,逐章提取与本章技术直接关联的名企面试题,供读者在阅读时重点思考,问题的答案可在相关章节中找到。

作为每篇首尾的职业指南,也隐含着3部分内容:

第1部分,提供求职过程中的一些哲理故事和常见的面试技巧。

第2部分,主要分析初入职场的一些为人处事之道,以及对个人职业规划、自我完善的建议。

第3部分,分享了作为技术人员的职业发展和晋升之路。

 

另外,本书附赠大量商业项目的源码和类库供读者学习、参考。也提供在线论坛(http://book.maticsoft.com/)供大家进行学习交流、问题解答、广交朋友。

由于本书的写作多在工作之余,夜深人静之时,虽然作者和编审人员进行了反复修改和审阅,但难免有失误、遗漏之处,恳请广大读者批评、指正。

 

最后感谢家人对我的支持,同时感谢电子工业出版社张春雨编辑给予的大力帮助,让本书得以如期出版。

 

李天平

 

 

 

目  录

第1篇  技术基础总结

第1章  .NET,你真的知道了吗       3

1.1  搞清自己是干什么的   4

1.2  .NET的几个特性 7

1.3  万丈高楼平地起:面试者必会   9

1.3.1  C#介绍      10

1.3.2  命名空间   10

1.3.3  C#语法格式要点      10

1.3.4  变量   12

1.3.5  类型推断   12

1.3.6  变量的作用域   13

1.3.7  常量   16

1.3.8  流程控制   16

1.3.9  字符串常见操作       21

1.3.10  几个常用的数学函数     26

1.4  .NET的面向对象之门 27

1.4.1  继承——“子承父业”       27

1.4.2  委托——“任务书”    35

1.4.3  反射——“解剖”       42

1.5  .NET开发几把小刀     45

1.5.1  using之多变身  45

1.5.2  @符号的妙用    47

1.5.3  预处理指令,有你更轻松       48

1.6  VisualStudio.NET 2010 实战     50

1.6.1  如何创建ASP.NET项目  51

1.6.2  如何创建Windows项目   53

1.6.3  VisualStudio.NET 2008/2010操作与使用技巧    54

1.6.4  常见开发调试技巧   58

1.6.5  错误异常处理方法   63

 本章常见技术面试题  69

 常见面试技巧之面试前的准备  69

 本章小结     70

第2章  细节决定成败       71

2.1  equals()和运算符==的区别 72

2.2  const和readonly的区别     74

2.3  private、protected、public和internal的区别      78

2.4  sealed、new、virtual、abstract与override  79

2.5  abstractclass与interface      83

2.6  公共变量与属性的区别      85

2.7  参数修饰符params、out和ref的区别       87

2.8  值类型和引用类型的区别   91

2.9  结构与类的区别   94

2.10 Dispose()和Close()、Finalize()的区别       97

2.11  string和StringBuilder的区别   98

2.12  Debug版本和Release版本的区别   99

 本章常见技术面试题  102

 常见面试技巧之细节决定成败  102

 本章小结     103

第3章  ASP.NET开发大杂烩   105

3.1  页面生命周期      106

3.1.1  独立页面生命周期事件顺序   106

3.1.2  具有Master页的生命

周期事件顺序       108

3.1.3 ASP.NET生命周期详解   110

3.2  页面状态管理      112

3.2.1  Cookie       113

3.2.2 HtmlInputHidden隐藏域  115

3.2.3 ViewState   115

3.2.4  查询字符串Request  116

3.2.5 Application对象       117

3.2.6 Session对象      117

3.2.7  示例项目:在线用户列表统计       120

3.3  服务器和客户端数据交互   123

3.3.1  页面数据绑定全攻略       123

3.3.2  Bind和Eval的区别  132

3.4  ASP.NET编程中的技巧      134

3.4.1  页面之间传值的7种方法       134

3.4.2  get与post方法的区别     137

3.4.3 ASP.NET服务器控件和HTML控件的区别       138

3.4.4 Server.Transfer和Response.Redirect的区别     140

3.4.5  刷新页面的方法汇总       141

3.4.6  页面事件控制   142

3.4.7  在URL中传递中文的解决方案       144

3.4.8  增强用户体验的一些技巧       145

3.4.9  XHTML与HTML的区别 148

3.5  打造自己的页面基类PageBase   153

 本章常见技术面试题  156

 常见面试技巧之如何做好自我介绍  156

 本章小结     157

第4章  Windows窗体编程你也行    159

4.1  创建简单的WinForm项目  160

4.2  创建MDI窗体应用     162

4.3  获取应用程序路径信息      166

4.4  回车跳转控件焦点      167

4.5  窗体间传递复杂数据   168

4.5.1  构造传递   168

4.5.2  公有字段传递   169

4.5.3  委托与事件传递       171

4.6  实现个性化窗体界面   172

4.7  无标题窗体拖动的两种方法      175

4.8  让程序只启动一次——单实例运行    176

4.9  实现系统托盘和热键呼出   177

4.10  进程与多线程的区别 181

4.11  创建多线程应用程序 182

4.12  WinForm开发常见问题    185

4.12.1  如何设置运行时窗体的起始位置       186

4.12.2  如何使一个窗体在其他窗体的上面    186

4.12.3  实现窗体渐显效果  186

4.12.4  设置窗口背景为渐变色  187

4.12.5  模态窗口和非模态窗口  187

4.12.6  屏蔽窗口右上角的关闭操作     188

4.12.7  调用执行外部的程序     188

 本章常见技术面试题  189

 常见面试技巧之经典问题巧回答     189

 本章小结     190

第5章  数据库开发    191

5.1  ADO.NET与抽水的故事    192

5.1.1 ADO.NET的定义     192

5.1.2  趣味理解ADO.NET对象模型       194

5.1.3  进水笼头——建立Connection     196

5.1.4  抽水机——Command      198

5.1.5  输水管——DataAdapter   201

5.1.6  输水管——DataReader     202

5.1.7  随用随关,释放资源       204

5.1.8  水库管理——DataSet      204

5.1.9  水池子——DataTable       206

5.2  数据库操作类的封装详解   209

5.2.1  执行命令方法的封装       209

5.2.2  查询数据方法的封装       212

5.2.3  数据统计方法的封装       213

5.2.4  实现SqlParameter方式    214

5.2.5  实现多数据库的访问       215

5.3  常用的经典SQL语句  216

5.4  事务处理      218

5.4.1  SQL和存储过程级别的事务   219

5.4.2 ADO.NET级别的事务     221

5.4.3 ASP.NET页面级别的事务      222

5.4.4  企业级服务COM+事务   224

5.4.5 System.Transactions 事务处理       228

5.5  Oracle开发常见问题   232

5.5.1  Oracle和SQL Server的常用函数对比       232

5.5.2  Oracle和SQL Server的语句区别       236

5.5.3 ASP.NET连接Oracle失败的解决方法    237

 本章常见技术面试题  238

 常见面试技巧之经典问题巧回答     238

 本章小结     239

第6章  关于XML      241

6.1  XML概述     242

6.1.1  XML和HTML有什么区别       242

6.1.2  XML的优势      242

6.2  文档结构与基本语法   243

6.3  XML操作     245

6.3.1 XmlDocument创建XML文档       245

6.3.2 XmlTextWriter创建XML文档      246

6.3.3 XmlDocument读取XML文档       248

6.3.4 XmlTextReader读取XML文档       249

6.3.5  在HTML中显示XML中的数据       250

6.3.6 JavaScript获取XML内容       251

6.3.7  项目案例:通用自定义XML配置类  254

6.4  ADO.NET与XML      258

6.4.1  读XML文档到DataSet    258

6.4.2 DataSet转为XML文档    259

6.5  项目案例1:实现网站的RSS应用       259

6.6  项目案例2:在线实现RSS阅读器    262

 本章常见技术面试题  267

 常见面试技巧之经典问题巧回答     267

 本章小结     268

第7章  Web Service开发详解   269

7.1  WebService基本概念  270

7.2  WebService的应用场景     270

7.3  创建简单的Web Service项目应用    272

7.4  WebService属性介绍  274

7.5  ASP.NET如何调用Web Service 278

7.6 JavaScript如何调用Web Service       280

7.6.1  通过webbehavior.htc调用Web Service   280

7.6.2  通过Microsoft.XMLDOM调用Web Service   282

7.6.3 XMLHTTP POST调用Web Service   284

7.6.4  SOAP调用Web Service   285

7.7  WinForm如何调用Web Service 286

7.7.1  .NET的WinForm调用Web Service   286

7.7.2  手动发送HTTP请求调用Web Service   287

7.8  实现异步调用Web Service  289

7.9  如何保证Web Service的安全    290

7.9.1  通过SoapHeader增强Web Service的安全性   291

7.9.2  采用SSL实现加密传输   294

7.9.3  访问IP限制      306

7.10  WebService开发中需要注意的问题    307

 本章常见技术面试题  311

 常见面试技巧之经典问题巧回答     311

 本章小结     312

第8章  用户体验的杀手锏——AJAX     313

8.1  AJAX概述   314

8.1.1  什么是AJAX    314

8.1.2  AJAX技术的核心    315

8.1.3  AJAX的工作原理    316

8.1.4  AJAX的优点    316

8.1.5  AJAX的局限性 317

8.1.6  AJAX适用场景 318

8.1.7  AJAX不适用的场景 319

8.1.8 XMLHttpRequest开发实例      319

8.2  微软VS.NET的AJAX开发      323

8.2.1  安装ASP.NET 2.0 AJAX Extensions      323

8.2.2  创建ASP.NET AJAX应用程序       324

8.2.3 ScriptManager控件使用技巧       325

8.2.4 UpdatePanel控件使用技巧      326

8.2.5 AsyncPostBackTrigger实现外部控件引发局部刷新       328

8.2.6  AJAX错误处理 331

8.2.7  告诉用户你正在做什么——UpdateProgress控件     332

8.2.8 ASP.NET AjaxControlToolkit简介       335

8.3  使用第三方组件 AJAX.dll 开发      337

8.4  使用第三方组件AJAXPro的开发     341

8.5  使用第三方组件MagicAJAX的开发       341

8.6  AJAX开发原则   342

 本章常见技术面试题  343

 常见面试技巧之经典问题巧回答     343

 本章小结     344

第9章  系统与文件操作    345

9.1  获取系统信息      346

9.1.1  用SystemInformation 类获取系统信息       346

9.1.2  用Environment 类获取系统信息       347

9.1.3  通过WMI获取系统信息 348

9.1.4  用RegistryKey 类读取系统信息       351

9.1.5  用API函数获取系统信息       353

9.1.6  获取系统服务信息   355

9.2  文件操作      357

9.2.1  通过StreamWriter类实现写文件    358

9.2.2  通过File类创建文件       358

9.2.3  通过FileStream类创建文件    359

9.2.4  通过FileInfo类创建文件 359

9.2.5  追加文本   360

9.2.6  读取文本文件   360

9.2.7  读写二进制文件       362

9.2.8  文件复制、移动和删除   363

9.3  文件夹目录操作   364

9.4  读写INI文件       365

9.5  读写注册表   368

 本章常见技术面试题  370

 常见面试技巧之经典问题巧回答     370

 本章小结     371

第10章  网络应用开发      373

10.1  Socket基本编程 374

10.1.1 Socket基本知识     374

10.1.2 Socket服务端开发步骤  376

10.1.3 Socket客户端开发步骤  378

10.2  异步Socket通信——实现MSN机器人    380

10.2.1  机器人服务端  380

10.2.2  客户端实现步骤     384

10.3  基于TCP协议的客户端和服务端    387

10.3.1 TcpListener 实现网络服务端    387

10.3.2 TcpClient实现网络客户端     388

 本章常见技术面试题  390

 常见面试技巧之经典问题巧回答     390

 本章小结     391

第11章  Windows Service开发  393

11.1  什么是Windows服务 394

11.2  创建Windows服务    394

11.3  Windows服务开发常见问题     398

11.4  安装/卸载Windows服务   399

11.4.1  安装Windows服务 399

11.4.2  卸载Windows服务 400

11.4.3 Windows服务应用程序体系结构       400

11.5  调试Windows服务    403

11.5.1  日志调试法     404

11.5.2  附加进程断点调试法     404

 本章常见技术面试题  405

 职场智慧之初入江湖  405

 本章小结     407

第12章  新技术初探  409

12.1  WPF    411

12.1.1  WPF简介 411

12.1.2  WPF何以令人佩服 411

12.1.3  XAML概述     412

12.1.4  WPF开发环境配置 413

12.1.5  项目示例:开发一个简单的WPF应用程序      414

12.2  WCF    416

12.2.1  SOA是什么    417

12.2.2  WCF是什么    417

12.2.3  WCF的优势是什么       418

12.2.4  WCF开发环境       421

12.2.5  项目示例:订票服务WCF开发步骤       421

12.3  LINQ   430

12.3.1  LINQ的架构   430

12.3.2  传统的查询     431

12.3.3  LINQ查询实例       433

12.3.4  LINQ查询语法       438

 本章常见技术面试题  439

 职场智慧之学习方法  439

 本章小结     440

第2篇  系统架构设计思想

第13章  面向对象思想      443

13.1  为什么要面向对象    444

13.2  什么是面向对象 446

13.3  面向对象的特点 448

13.3.1  封装  448

13.3.2  继承  449

13.3.3  多态  450

13.4  面向对象设计和开发实例 456

13.4.1  用传统的过程化设计实现播放器功能    456

13.4.2  基于面向对象设计实现播放器功能    457

13.4.3  面向对象封装、继承、多态的应用    458

13.4.4  设计模式、条件外置及反射技术的应用    461

13.5  面向对象分析(OOA)的方法       464

13.6  面向对象设计的原则 468

13.6.1  优先使用(对象)组合,而非(类)继承    468

13.6.2  针对接口编程,而非(接口的)实现    470

13.6.3  开放-封闭法则(OCP)     472

13.6.4 Liskov替换法则(LSP)      474

13.6.5  单一职责原则(SRP)  475

13.6.6  依赖倒置原则(DIP)   476

13.6.7  接口分离原则(ISP)   478

13.6.8  面向对象设计时需要注意的问题    479

 本章常见技术面试题  480

 本章小结     481

第14章  三层架构项目开发      483

14.1  什么是三层架构 484

14.1.1  常用的三层架构设计     484

14.1.2  趣味理解:三层架构与养猪  486

14.2  为什么要用三层架构 487

14.3  三层架构项目开发示例    490

14.3.1  数据库设计     490

14.3.2  创建整体解决方案  491

14.3.3  业务实体Model的实现  492

14.3.4  数据访问层的实现  494

14.3.5  业务逻辑层的实现  498

14.3.6  表示层的实现  499

14.4  实现基于工厂模式的三层架构 501

14.4.1  扩展新增数据访问层     502

14.4.2  IDAL抽象接口的实现   503

14.4.3  创建DAL对象的封装    507

14.4.4  实现抽象工厂模式  508

14.4.5  工厂模式的三层架构图  511

 本章常见技术面试题  512

 职场智慧之程序员的职业规划  512

 本章小结     513

第15章  大型网站的性能优化与安全      515

15.1  高效C#编码优化       516

15.2  页面(HTML)优化的方法     523

15.3  ASP.NET开发性能优化    529

15.3.1  尽量使用静态HTML页面     530

15.3.2  避免不必要的回送操作  530

15.3.3  尽量在客户端进行用户输入验证       531

15.3.4  关闭不必要的Session状态    531

15.3.5  优先使用HTML控件,而非服务器控件    531

15.3.6  不必要时关闭ViewState 532

15.3.7  禁用调试模式  532

15.4  系统缓存管理    533

15.4.1  缓存概述  533

15.4.2  传统缓存方式  534

15.4.3  页面输出缓存  534

15.4.4  页面输出缓存API  537

15.4.5  页面局部缓存  539

15.4.6  应用程序数据缓存  543

15.4.7  文件缓存依赖  545

15.4.8  数据库缓存依赖     546

15.4.9 Memcached——分布式缓存系统       550

15.4.10 Cacheman——.NET架构下的分布式缓存项目    551

15.5  数据库访问性能优化 552

15.5.1  选择合适的.NET数据供应器    552

15.5.2  及时关闭数据库连接     552

15.5.3  跟踪监视SQL Server当前链接池状态    553

15.5.4  善用数据库的存储过程  556

15.5.5 SqlDataReader和Dataset的选择       556

15.5.6 ExecuteNonQuery和ExecuteScalar的选择    557

15.5.7  数据的绑定DataBinder  557

15.5.8  使用DataReader的注意事项       557

15.5.9 Command对象的使用    558

15.5.10  反复执行SQL语句用Prepare() 558

15.5.11  分页的数据访问    559

15.5.12  SQL命令的优化   559

15.5.13 tempdb的使用技巧      561

15.5.14  使用视图代替跨库操作       561

15.5.15  尽量避免大事务操作和游标的使用    561

15.5.16  为表建立适当的索引   562

15.6  网站安全防护    562

15.6.1  什么是SQL注入式攻击 562

15.6.2  如何防范SQL注入式攻击    563

15.6.3  实现页面验证码     564

15.6.4  实现文件防盗链     568

15.6.5  采用HTTPS进行访问    572

15.7  IIS优化      573

15.7.1  如何监测IIS服务器并发数   573

15.7.2  采用Gzip压缩页面优化       574

15.7.3  网站应用程序池配置     576

15.8  网站架构优化策略    581

 本章常见技术面试题  584

 职场智慧之独善其身  584

 本章小结     587

第16章  系统设计的原则和技巧      589

16.1  系统设计的原则 590

16.1.1  最适合的才是最好的     590

16.1.2  以不变应万变  591

16.1.3  可扩展性  591

16.1.4  可复用性  592

16.2  系统设计的常用方法 592

16.3  敏捷软件开发12条原则   596

16.4  系统架构师成长之路 599

 本章常见技术面试题  603

 职场智慧之职场政治  603

 本章小结     604

第3篇  项目实战解析

第17章  权限角色管理项目解析      607

17.1  权限角色管理概述    608

17.2  项目概述    611

17.3  数据库设计 612

17.3.1  数据库实体关系模型     612

17.3.2  表结构设计     613

17.4  数据访问层 615

17.4.1  类设计     615

17.4.2  代码实现  616

17.5  业务逻辑层 617

17.5.1  类设计     617

17.5.2  扩展.NET Framework用户处理机制       620

17.6  接口调用与Web管理实现       625

17.6.1 Web.config配置      626

17.6.2  用户身份和权限验证     626

17.6.3  用户验证接口方式1:权限验证用户控件       627

17.6.4  用户验证接口方式2:页面基类       629

17.6.5  用户和角色权限的后台管理       632

 职场智慧之如何提升自己在公司的价值    639

 本章小结     640

第18章  单点登录系统的设计与实现      641

18.1  项目概述    642

18.1.1  名词定义  642

18.1.2  项目需求描述  642

18.2  业务流程设计    643

18.2.1  用户认证流程  643

18.2.2  安全验证流程  644

18.3  功能与接口设计 645

18.3.1  接口交互设计  645

18.3.2  应用系统接口  646

18.3.3  认证服务器功能和接口  646

18.4  数据库设计 646

18.4.1  数据库实体关系模型     647

18.4.2  表结构设计     647

18.5  实现认证服务器 648

18.5.1  SSO解决方案 649

18.5.2  系统管理后台  650

18.5.3  用户通行证管理中心     651

18.5.4  认证服务器接口开发     658

18.6  应用系统接入接口开发    661

18.6.1  用户身份认证  661

18.6.2  接收状态同步  662

18.6.3  用户注销  664

18.6.4  更新认证服务器状态     664

18.7  接口封装及调用 665

 职场智慧之晋升之道  667

 本章小结     670

第19章  常用.NET开发工具介绍    671

19.1  源码版本管理:Visual SourceSafe 2005 672

19.1.1  安装和配置VSS 2005服务端    672

19.1.2  安装和配置VSS客户端 676

19.1.3  将项目加入VSS版本控制    677

19.1.4  客户端连接VSS 服务器获取源代码    679

19.1.5  设置VSS支持通过Internet访问  681

19.1.6  版本控制的几个概念     685

19.1.7  VSS项目权限管理 687

19.1.8  VSS数据备份 689

19.1.9  VSS2005的使用规范    691

19.2  单元测试工具:NUnit      692

19.2.1  NUnit简介      692

19.2.2  手把手教你在.NET中应用NUnit     692

19.3  日志工具——Log4net       698

19.3.1 Log4net简介   698

19.3.2  使用步骤  701

19.3.3  单独配置文件的使用     702

19.4  代码规范检查工具:Microsoft Source Analysis for C#  705

19.5  生成文档注释工具:GhostDoc 707

19.6  反编译工具:Reflector for .NET     714

19.7  动软代码生成器 715

19.8  帮助文档生成工具:Sandcastle       718

19.8.1 Sandcastle介绍       719

19.8.2  生成方式  720

19.8.3  具体生成步骤  721

 本章小结     729

附录A  软件编码规范 731

A.1  概述     732

A.1.1  规范基本原则   732

A.1.2  术语定义   732

A.1.3  文件命名组织   732

A.2  代码外观     733

A.2.1  列宽   733

A.2.2  换行   733

A.2.3  缩进   733

A.2.4  空行   733

A.2.5  空格   734

A.2.6  括号——()       734

A.2.7  花括号——{}   735

A.3  程序注释     735

A.3.1  注释概述   735

A.3.2  文档型注释      736

A.3.3  类注释      737

A.3.4  单行注释   737

A.3.5  注释标签   737

A.4  声明     739

A.4.1  每行声明数      739

A.4.2  初始化      739

A.4.3  位置   740

A.4.4  类和接口的声明      740

A.4.5  字段的声明      740

A.5  命名规范     741

A.5.1  命名概述   741

A.5.2  大小写规则      742

A.5.3  缩写   742

A.5.4  命名空间   743

A.5.5  类      743

A.5.6  接口   744

A.5.7  属性(Attribute)    744

A.5.8  枚举(Enum) 744

A.5.9  参数   745

A.5.10  方法 745

A.5.11  属性(Property)   745

A.5.12  事件 747

A.5.13  常量(const) 748

A.5.14  字段 748

A.5.15  静态字段 749

A.5.16  集合 749

A.5.17  措词 749

A.6  语句     750

A.6.1  每行一条语句   750

A.6.2  复合语句   750

A.6.3  return语句       751

A.6.4  if、if-else、if else-if语句       751

A.6.5  for、foreach 语句    752

A.6.6  while语句 752

A.6.7 do-while语句   752

A.6.8 switch-case语句       752

A.6.9 try-catch语句   753

A.6.10  using块语句   753

A.6.11  goto语句 754

A.7  其他     754

A.7.1  表达式      754

A.7.2  类型转换   754

A.8  匈牙利命名法     754

A.9  控件命名规则     755

A.9.1  一般命名方法   755

A.9.2  主要控件名简写对照表   755

posted @ 2012-10-19 08:44  博文视点(北京)官方博客  阅读(241)  评论(0编辑  收藏  举报