《亮剑.NET .NET深入体验与实战精要》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:李天平编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121084942
  • 页数:775 页
图书介绍:本书从实用角度出发,系统介绍了基于.NET进行应用开发的各项关键技术,同时附有大量代码实例。本书的重点在于项目开发中会真正实际遇到的技术点,编程思想,经验总结,让你能轻松理解,快速上手开发真正的商业项目。本书集实用性、思想性、趣味性为一体,是一本适合广大计算机编程爱好者的优秀读物。

第1篇 技术基础总结 3

第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 几个常用的数学函数 27

1.4 .NET的面向对象之门 27

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

1.4.2 委托——“任务书” 35

1.4.3 事件——“年终分红” 42

1.4.4 反射——“解剖” 49

1.5 .NET开发几把小刀 52

1.5.1 using之多变身 52

1.5.2 @符号的妙用 54

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

1.6 Visual Studio.NET 2008实战 58

1.6.1 如何创建ASP.NET项目 58

1.6.2 如何创建Windows项目 61

1.6.3 Visual Studio.NET 2008操作与使用技巧 61

1.6.4 常见开发调试技巧 66

1.6.5 错误异常处理方法 70

本章常见技术面试题 76

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

本章小结 77

第2章 细节决定成败 79

2.1 Equals()和运算符?的区别 80

2.2 const和readonly的区别 82

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

2.4 sealed、new、virtual、abstract与override 87

2.5 abstract class与interface 91

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

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

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

2.9 结构与类的区别 103

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

2.11 string和StringBuilder有什么区别 106

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

本章常见技术面试题 111

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

本章小结 112

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

3.1 页面生命周期 114

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

3.1.2 具有Master页的生命周期事件顺序 116

3.1.3 ASP.NET生命周期详解 118

3.2 页面状态管理 120

3.2.1 Cookie 121

3.2.2 HtmlInputHidden隐藏域 123

3.2.3 ViewState 123

3.2.4 查询字符串Request 124

3.2.5 Aplication对象 125

3.2.6 Session对象 125

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

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

3.3.1 页面数据绑定全攻略 131

3.3.2 Bind和Eval的区别 140

3.4 ASP.NET编程中的技巧 142

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

3.4.2 get与post方法的区别 146

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

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

3.4.5 刷新页面的方法汇总 149

3.4.6 页面事件控制 150

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

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

3.4.9 XHTML与HTML的区别 156

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

本章常见技术面试题 164

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

本章小结 165

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

4.1 创建简单的WinForm项目 168

4.2 创建MDI窗体应用 170

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

4.4 回车跳转控件焦点 175

4.5 窗体间传递复杂数据 176

4.5.1 构造传递 176

4.5.2 公有字段传递 177

4.5.3 委托与事件传递 179

4.6 实现个性化窗体界面 181

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

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

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

4.10 进程与多线程的区别 190

4.11 创建多线程应用程序 191

4.12 WinForm开发常见问题 194

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

4.12.2 如何使一个窗体在屏幕的最顶端 194

4.12.3 实现窗体渐显效果 194

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

4.12.5 模态窗口和非模态窗口 196

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

4.12.7 调用执行外部的程序 197

本章常见技术面试题 197

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

本章小结 198

第5章 数据库开发 199

5.1 ADO.NET与抽水的故事 200

5.1.1 ADO.NET的定义 200

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

5.1.3 进水笼头——建立Connection 204

5.1.4 抽水机——Command 206

5.1.5 输水管——DataAdapter 209

5.1.6 输水管——DataReader 210

5.1.7 随用随关,释放资源 212

5.1.8 水库管理——DataSet 212

5.1.9 水池子——DataTable 214

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

5.2.1 执行命令方法的封装 217

5.2.2 查询数据方法的封装 220

5.2.3 数据统计方法的封装 221

5.2.4 实现SqlParameter方式 222

5.2.5 实现多数据库的访问 223

5.3 常用经典SQL语句 224

5.4 事务处理 226

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

5.4.2 ADO.NET级别的事务 229

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

5.4.4 企业级服务COM+事务 231

5.4.5 System.Transactions事务处理 236

5.5 Oracle开发常见问题 240

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

5.5.2 Oracle和SQL Server的语句区别 244

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

本章常见技术面试题 246

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

本章小结 247

第6章 关于XML 249

6.1 XML概述 250

6.1.1 XML和HTML有什么区别 250

6.1.2 XML的优势 250

6.2 文档结构与基本语法 251

6.3 XML操作 253

6.3.1 XmlDocument创建XML文档 253

6.3.2 XmlTextWriter创建XML文档 254

6.3.3 XmlDocument读取XML文档 256

6.3.4 XmlTextReader读取XML文档 257

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

6.3.6 JavaScript获取XML内容 259

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

6.4 ADO.NET与XML 266

6.4.1 读XML文档到DataSet 266

6.4.2 DataSet转为XML文档 267

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

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

本章常见技术面试题 275

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

本章小结 276

第7章 Web Service开发详解 277

7.1 Web Service基本概念 278

7.2 Web Service的应用场景 278

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

7.4 Web Service属性介绍 282

7.5 ASP.NET如何调用Web Service 286

7.6 JavaScript如何调用Web Service 288

7.6.1 通过webbehavior.htc调用Web Service 288

7.6.2 通过Microsoft.XMLDOM调用Web Service 291

7.6.3 XMLHTTP POST调用Web Service 293

7.6.4 SOAP调用Web Service 293

7.7 WinForm如何调用Web Service 295

7.7.1 .NET的WinForm调用Web Service 295

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

7.8 实现异步调用Web Service 297

7.9 如何保证Web Service的安全 299

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

7.9.2 采用SSL实现加密传输 302

7.9.3 访问IP限制 315

7.10 Web Service开发中需要注意的问题 316

本章常见技术面试题 320

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

本章小结 321

第8章 用户体验的杀手锏——Ajax 323

8.1 Ajax概述 324

8.1.1 什么是Ajax 324

8.1.2 Ajax技术的核心 325

8.1.3 Ajax的工作原理 326

8.1.4 Ajax的优点 326

8.1.5 Ajax的问题 327

8.1.6 Ajax适用场景 327

8.1.7 Ajax不适用场景 329

8.1.8 XMLHttpRequest开发实例 329

8.2 微软VS.NET的Ajax开发 333

8.2.1 安装ASP.NET 2.0 Ajax Extensions 333

8.2.2 创建ASP.NET Ajax应用程序 333

8.2.3 ScriptManager控件使用技巧 335

8.2.4 UpdaetPanel控件使用技巧 336

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

8.2.6 Ajax错误处理 341

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

8.2.8 ASP.NET AjaxControToolKit简介 345

8.3 使用第三方组件Ajax.dll开发 347

8.4 使用第三方组件AjaxPro的开发 351

8.5 使用第三方组件MagicAjax的开发 351

8.6 Ajax开发原则 352

本章常见技术面试题 353

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

本章小结 354

第9章 系统与文件操作 355

9.1 获取系统信息 356

9.1.1 用SystemInformation类获取系统信息 356

9.1.2 用Environment类获取系统信息 357

9.1.3 通过WMI获取系统信息 358

9.1.4 用RegistryKey类读取系统信息 361

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

9.1.6 获取系统服务信息 365

9.2 文件操作 368

9.2.1 StreamWriter类实现写文件 368

9.2.2 通过File类创建文件 369

9.2.3 通过FileStream类创建文件 370

9.2.4 通过FileInfo类创建文件 370

9.2.5 追加文本 370

9.2.6 读取文本文件 371

9.2.7 读写二进制文件 372

9.2.8 文件复制、移动、删除 374

9.3 文件夹目录操作 375

9.4 读写INI文件 376

9.5 读写注册表 379

本章常见技术面试题 381

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

本章小结 382

第10章 网络应用开发 383

10.1 Socket基本编程 384

10.1.1 Socket基本知识 384

10.1.2 Socket服务端开发步骤 386

10.1.3 Socket客户端开发步骤 388

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

10.2.1 机器人服务端 390

10.2.2 客户端实现步骤 395

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

10.3.1 TcpListener实现网络服务端 398

10.3.2 TcpClient实现网络客户端 399

本章常见技术面试题 401

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

本章小结 402

第11章 Windows Service开发 403

11.1 什么是Windows服务 404

11.2 创建Windows服务 404

11.3 Windows服务开发常见问题 408

11.4 安装/卸载Windows服务 409

11.4.1 安装Windows服务 409

11.4.2 卸载Windows服务 410

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

11.5 调试Windows服务 414

11.5.1 日志调试法 414

11.5.2 附加进程断点调试法 414

本章常见技术面试题 416

职场智慧之初入江湖 416

本章小结 418

第12章 新技术初探 419

12.1 WPF 421

12.1.1 WPF简介 421

12.1.2 WPF何以令人佩服 422

12.1.3 XAML概述 422

12.1.4 WPF开发环境配置 423

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

12.2 WCF 427

12.2.1 SOA是什么 427

12.2.2 WCF是什么 428

12.2.3 WCF的优势是什么 428

12.2.4 WCF开发环境 431

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

12.3 LINQ 440

12.3.1 LINQ的架构 441

12.3.2 传统的查询 441

12.3.3 LINQ查询实例 444

12.3.4 LINQ查询语法 448

本章常见技术面试题 449

职场智慧之学习方法 449

本章小结 450

第2篇 系统架构设计思想 453

第13章 面向对象思想 453

13.1 为什么要面向对象 454

13.2 什么是面向对象 456

13.3 面向对象的特点 458

13.3.1 封装 459

13.3.2 继承 459

13.3.3 多态 460

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

13.4.1 传统过程化设计实现播放器功能 466

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

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

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

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

13.6 面向对象设计的原则 478

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

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

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

13.6.4 Liskov替换法则(LSP) 485

13.6.5 单一职责原则(SRP) 486

13.6.6 依赖倒置原则(DIP) 486

13.6.7 接口分离原则(ISP) 489

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

本章常见技术面试题 491

本章小结 491

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

14.1 什么是三层架构 494

14.1.1 常用的三层架构设计 494

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

14.2 为什么要用三层架构 497

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

14.3.1 数据库设计 500

14.3.2 创建整体解决方案 501

14.3.3 业务实体Model的实现 502

14.3.4 数据访问层的实现 504

14.3.5 业务逻辑层的实现 509

14.3.6 表示层的实现 510

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

14.4.1 扩展新增数据访问层 512

14.4.2 IDAL抽象接口的实现 513

14.4.3 创建DAL对象的封装 517

14.4.4 实现抽象工厂模式 519

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

本章常见技术面试题 522

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

本章小结 524

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

15.1 高效C#编码优化 526

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

15.3 ASP.NET开发性能优化 540

15.3.1 如没必要,尽量使用静态HTML页面 540

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

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

15.3.4 关闭不必要的Session状态 542

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

15.3.6 不必要时关闭ViewState 542

15.3.7 禁用调试模式 543

15.4 系统缓存管理 543

15.4.1 缓存的分类 544

15.4.2 传统缓存方式 545

15.4.3 页面输出缓存 545

15.4.4 页面输出缓存API 548

15.4.5 页面局部缓存 549

15.4.6 应用程序数据缓存 554

15.4.7 文件缓存依赖 555

15.4.8 数据库缓存依赖 557

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

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

15.5 数据库访问性能优化 562

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

15.5.2 及时地关闭数据库连接 563

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

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

15.5.5 SqlDataRead和Dataset的选择 567

15.5.6 ExecuteNonQuery和ExecuteScalar的选择 568

15.5.7 数据的绑定DataBinder 568

15.5.8 使用DataReader的注意事项 568

15.5.9 Command对象的使用 569

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

15.5.11 分页的数据访问 570

15.5.12 SQL命令的优化 570

15.5.13 tempdb的使用技巧 572

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

15.5.15 尽量避免大事务操作 572

15.5.16 尽量避免使用游标 573

15.5.17 为你的表建立适当的索引 573

15.6 网站安全防护 573

15.6.1 什么是SQL注入式攻击 573

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

15.6.3 实现页面验证码 575

15.6.4 实现文件防盗链 579

15.6.5 采用HTTPS进行访问 584

15.7 IIS优化 584

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

15.7.2 采用Gzip压缩页面优化 585

15.7.3 网站应用程序池配置 588

15.8 网站架构优化策略 593

本章常见技术面试题 596

职场智慧之学习方法 596

本章小结 599

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

16.1 系统设计的一些原则 602

16.1.1 最适合的才是最好的 602

16.1.2 以不变应万变 603

16.1.3 可扩展性 603

16.1.4 可复用性 604

16.2 系统设计的常用方法 604

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

16.4 系统架构师成长之路 611

本章常见技术面试题 615

职场智慧之职场政治 615

本章小结 616

第3篇 项目实战解析 619

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

17.1 权限角色管理概述 620

17.2 项目概述 623

17.3 数据库设计 624

17.3.1 数据库实体关系模型 624

17.3.2 表结构设计 625

17.4 数据访问层 627

17.4.1 类设计 627

17.4.2 代码实现 629

17.5 业务逻辑层 629

17.5.1 类设计 630

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

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

17.6.1 Web.config配置 638

17.6.2 用户身份和权限验证 638

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

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

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

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

本章小结 653

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

18.1 项目概述 656

18.1.1 名词定义 656

18.1.2 项目需求描述 656

18.2 业务流程设计 657

18.2.1 用户认证流程 657

18.2.2 安全验证流程 658

18.3 功能与接口设计 659

18.3.1 接口交互设计 659

18.3.2 应用系统接口 660

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

18.4 数据库设计 660

18.4.1 数据库实体关系模型 661

18.4.2 表结构设计 661

18.5 实现认证服务器 662

18.5.1 SSO解决方案 663

18.5.2 系统管理后台 664

18.5.3 用户通行证管理中心 665

18.5.4 认证服务器接口开发 673

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

18.6.1 用户身份认证 675

18.6.2 接收状态同步 676

18.6.3 用户注销 678

18.6.4 更新认证服务器状态 679

18.7 接口封装及调用 679

职场智慧之晋升之道 682

本章小结 684

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

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

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

19.1.2 安装和配置VSS客户端 691

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

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

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

19.1.6 版本控制的几个概念 701

19.1.7 VSS项目权限管理 703

19.1.8 VSS数据备份 705

19.1.9 VSS 2005的使用规范 707

19.2 单元测试工具:NUnit 708

19.2.1 NUnit简介 708

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

19.3 日志工具——Log4net 714

19.3.1 Log4net简介 714

19.3.2 使用步骤 717

19.3.3 单独配置文件的使用 719

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

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

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

19.7 动软.NET代码生成器 733

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

19.8.1 Sandcastle介绍 737

19.8.2 生成方式 738

19.8.3 具体生成步骤 740

本章小结 748

附录A 软件编码规范 749

A.1 概述 750

A.1.1 规范基本原则 750

A.1.2 术语定义 750

A.1.3 文件命名组织 750

A.2 代码外观 751

A.2.1 列宽 751

A.2.2 换行 751

A.2.3 缩进 751

A.2.4 空行 751

A.2.5 空格 752

A.2.6 括号——() 753

A.2.7 花括号——{} 753

A.3 程序注释 754

A.3.1 注释概述 754

A.3.2 文档型注释 755

A.3.3 类注释 755

A.3.4 单行注释 755

A.3.5 注释标签 756

A.4 声明 758

A.4.1 每行声明数 758

A.4.2 初始化 758

A.4.3 位置 758

A.4.4 类和接口的声明 759

A.4.5 字段的声明 759

A.5 命名规范 759

A.5.1 命名概述 759

A.5.2 大写规则 760

A.5.3 缩写 761

A.5.4 命名空间 761

A.5.5 类 762

A.5.6 接口 762

A.5.7 属性(Attribute) 763

A.5.8 枚举(Enum) 763

A.5.9 参数 763

A.5.10 方法 764

A.5.11 属性(property) 764

A.5.12 事件 765

A.5.13 常量(const) 766

A.5.14 字段 767

A.5.15 静态字段 768

A.5.16 集合 768

A.5.17 措词 768

A.6 语句 769

A.6.1 每行一个语句 769

A.6.2 复合语句 769

A.6.3 return语句 769

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

A.6.5 for、foreach语句 770

A.6.6 while语句 771

A.6.7 do-while语句 771

A.6.8 switch-case语句 771

A.6.9 try-catch语句 772

A.6.10 using块语句 772

A.6.11 goto语句 772

A.7 其他 773

A.7.1 表达式 773

A.7.2 类型转换 773

A.8 匈牙利命名法 773

A.9 控件命名规则 774

A.9.1 一般命名方法 774

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