《C#高级编程 第8版》PDF下载

  • 购买积分:36 如何计算积分?
  • 作  者:(美)内格尔(Nagel,C·)等著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:7302334118
  • 页数:1517 页
图书介绍:《C#高级编程(第8版)》是C#2012和.NET4.5高级技术的终极资源,旨在帮助读者更新、提高用C#2012和.NET4.5编写Windows应用程序、Web应用程序、Windows8样式应用程序的技巧。本书的顶级作者专家团队首先介绍了C#的基础知识,之后全面探讨了该语言和架构中的新增功能,以及新的测试驱动的开发和并发编程特性。本书提供了学习C#2012和.NET4.5所需的所有知识,使读者可以最大限度地发挥出这些动态技术的潜能。介绍富有挑战性的.NET特性,包括LINQ、LINQtoEquities、LINQtoXML、WCF、WPF、Workflow和泛型详细论述了异步编程、模式、基础和方法研究了Windows8开发的新选项和接口、WinRT和Windows8样式应用程序阐述了文件和注册表的操作介绍了WPF编程,包括样式、数据驱动的应用程序和文档、ASP.NETWebForms以及ASP.NETMVC

第Ⅰ部分 C#语言 2

第1章 .NET体系结构 2

1.1 C#与.NET的关系 2

1.2 公共语言运行库 3

1.2.1 平台无关性 3

1.2.2 提高性能 3

1.2.3 语言的互操作性 4

1.3 中间语言 5

1.3.1 面向对象和接口的支持 6

1.3.2 不同的值类型和引用类型 6

1.3.3 强数据类型化 7

1.3.4 通过异常处理错误 11

1.3.5 特性的使用 12

1.4 程序集 12

1.4.1 私有程序集 13

1.4.2 共享程序集 13

1.4.3 反射 14

1.4.4 并行编程 14

1.4.5 异步编程 14

1.5.NET Framework类 14

1.6 名称空间 15

1.7 用C#创建.NET应用程序 16

1.7.1 创建ASP.NET应用程序 16

1.7.2 使用WPF 18

1.7.3 Windows8应用程序 18

1.7.4 Windows服务 18

1.7.5 WCF 19

1.7.6 Windows WF 19

1.8 C#在.NET企业体系结构中的作用 19

1.9 小结 20

第2章 核心C 22

2.1 C#基础 23

2.2 第一个C#程序 23

2.2.1 代码 23

2.2.2 编译并运行程序 23

2.2.3 详细介绍 24

2.3 变量 26

2.3.1 变量的初始化 26

2.3.2 类型推断 27

2.3.3 变量的作用域 28

2.3.4 常量 30

2.4 预定义数据类型 31

2.4.1 值类型和引用类型 31

2.4.2 CTS类型 32

2.4.3 预定义的值类型 33

2.4.4 预定义的引用类型 35

2.5 流控制 37

2.5.1 条件语句 37

2.5.2 循环 41

2.5.3 跳转语句 44

2.6 枚举 45

2.7 名称空间 46

2.7.1 using语句 47

2.7.2 名称空间的别名 48

2.8 Main()方法 49

2.8.1 多个Main()方法 49

2.8.2 给Main()方法传递参数 50

2.9 有关编译C#文件的更多内容 51

2.10 控制台I/O 53

2.11 使用注释 54

2.11.1 源文件中的内部注释 54

2.11.2 XML文档 55

2.12 C#预处理器指令 57

2.12.1 #define和#undef 57

2.12.2 #if、#elif、#else和#endif 58

2.12.3 #warning和#error 59

2.12.4 #region和#endregion 59

2.12.5 #line 60

2.12.6 #pragma 60

2.13 C#编程规则 60

2.13.1 关于标识符的规则 60

2.13.2 用法约定 61

2.14 小结 67

第3章 对象和类型 68

3.1 创建及使用类 68

3.2 类和结构 69

3.3 类 69

3.3.1 数据成员 70

3.3.2 函数成员 70

3.3.3 只读字段 82

3.4 匿名类型 83

3.5 结构 84

3.5.1 结构是值类型 85

3.5.2 结构和继承 86

3.5.3 结构的构造函数 86

3.6 弱引用 86

3.7 部分类 88

3.8 静态类 89

3.9 Object类 89

3.9.1 System.Object()方法 90

3.9.2 ToString()方法 91

3.10 扩展方法 92

3.11 小结 93

第4章 继承 94

4.1 继承 94

4.2 继承的类型 94

4.2.1 实现继承和接口继承 94

4.2.2 多重继承 95

4.2.3 结构和类 95

4.3 实现继承 95

4.3.1 虚方法 96

4.3.2 隐藏方法 97

4.3.3 调用函数的基类版本 98

4.3.4 抽象类和抽象函数 99

4.3.5 密封类和密封方法 99

4.3.6 派生类的构造函数 100

4.4 修饰符 105

4.4.1 可见性修饰符 105

4.4.2 其他修饰符 106

4.5 接口 106

4.5.1 定义和实现接口 107

4.5.2 派生的接口 110

4.6 小结 112

第5章 泛型 113

5.1 泛型概述 113

5.1.1 性能 114

5.1.2 类型安全 115

5.1.3 二进制代码的重用 115

5.1.4 代码的扩展 116

5.1.5 命名约定 116

5.2 创建泛型类 116

5.3 泛型类的功能 120

5.3.1 默认值 121

5.3.2 约束 122

5.3.3 继承 124

5.3.4 静态成员 125

5.4 泛型接口 125

5.4.1 协变和抗变 126

5.4.2 泛型接口的协变 127

5.4.3 泛型接口的抗变 128

5.5 泛型结构 129

5.6 泛型方法 132

5.6.1 泛型方法示例 132

5.6.2 带约束的泛型方法 133

5.6.3 带委托的泛型方法 134

5.6.4 泛型方法规范 135

5.7 小结 136

第6章 数组 137

6.1 同一类型和不同类型的多个对象 137

6.2 简单数组 138

6.2.1 数组的声明 138

6.2.2 数组的初始化 138

6.2.3 访问数组元素 139

6.2.4 使用引用类型 140

6.3 多维数组 141

6.4 锯齿数组 142

6.5 Array类 143

6.5.1 创建数组 143

6.5.2 复制数组 144

6.5.3 排序 145

6.6 数组作为参数 148

6.6.1 数组协变 149

6.6.2 ArraySegment<T> 149

6.7 枚举 150

6.7.1 IEnumerator接口 150

6.7.2 foreach语句 151

6.7.3 yield语句 151

6.8 元组 156

6.9 结构比较 157

6.10 小结 160

第7章 运算符和类型强制转换 161

7.1 运算符和类型转换 161

7.2 运算符 161

7.2.1 运算符的简化操作 163

7.2.2 运算符的优先级 167

7.3 类型的安全性 168

7.3.1 类型转换 168

7.3.2 装箱和拆箱 172

7.4 比较对象的相等性 172

7.4.1 比较引用类型的相等性 172

7.4.2 比较值类型的相等性 173

7.5 运算符重载 174

7.5.1 运算符的工作方式 175

7.5.2 运算符重载的示例:Vector结构 176

7.6 用户定义的类型强制转换 182

7.6.1 实现用户定义的类型强制转换 184

7.6.2 多重类型强制转换 189

7.7 小结 193

第8章 委托、Lambda表达式和事件 194

8.1 引用方法 194

8.2 委托 195

8.2.1 声明委托 195

8.2.2 使用委托 196

8.2.3 简单的委托示例 199

8.2.4 Action<T>和Func<T>委托 201

8.2.5 BubbleSorter示例 202

8.2.6 多播委托 204

8.2.7 匿名方法 208

8.3 Lambda表达式 209

8.3.1 参数 209

8.3.2 多行代码 210

8.3.3 闭包 210

8.3.4 使用foreach语句的闭包 211

8.4 事件 212

8.4.1 事件发布程序 212

8.4.2 事件侦听器 214

8.4.3 弱事件 215

8.5 小结 219

第9章 字符串和正则表达式 220

9.1 System.String类 221

9.1.1 创建字符串 222

9.1.2 StringBuilder成员 225

9.1.3 格式字符串 226

9.2 正则表达式 231

9.2.1 正则表达式概述 231

9.2.2 RegularExpressionsPlayaround示例 232

9.2.3 显示结果 235

9.2.4 匹配、组合和捕获 236

9.3 小结 238

第10章 集合 239

10.1 概述 239

10.2 集合接口和类型 240

10.3 列表 241

10.3.1 创建列表 242

10.3.2 只读集合 251

10.4 队列 251

10.5 栈 255

10.6 链表 256

10.7 有序列表 262

10.8 字典 263

10.8.1 键的类型 264

10.8.2 字典示例 265

10.8.3 Lookup类 269

10.8.4 有序字典 270

10.9 集 270

10.10 可观察的集合 272

10.11 位数组 273

10.11.1 BitArray类 274

10.11.2 BitVector32结构 276

10.12 并发集合 278

10.12.1 创建管道 279

10.12.2 使用Blocking-Collection 282

10.12.3 使用Concurrent-Dictionary 283

10.12.4 完成管道 285

10.13 性能 286

10.14 小结 288

第11章 LINQ 289

11.1 LINQ概述 289

11.1.1 列表和实体 289

11.1.2 LINQ查询 293

11.1.3 扩展方法 294

11.1.4 推迟查询的执行 295

11.2 标准的查询操作符 297

11.2.1 筛选 299

11.2.2 用索引筛选 299

11.2.3 类型筛选 300

11.2.4 复合的from子句 300

11.2.5 排序 301

11.2.6 分组 302

11.2.7 对嵌套的对象分组 303

11.2.8 内连接 304

11.2.9 左外连接 305

11.2.10 组连接 306

11.2.11 集合操作 309

11.2.12 合并 310

11.2.13 分区 311

11.2.14 聚合操作符 312

11.2.15 转换操作符 314

11.2.16 生成操作符 315

11.3 并行LINQ 316

11.3.1 并行查询 316

11.3.2 分区器 317

11.3.3 取消 317

11.4 表达式树 318

11.5 LINQ提供程序 320

11.6 小结 321

第12章 动态语言扩展 322

12.1 DLR 322

12.2 dynamic类型 323

12.3 包含DLR ScriptRuntime 327

12.4 DynamicObject和ExpandoObject 330

12.4.1 DynamicObject 330

12.4.2 ExpandoObject 332

12.5 小结 333

第13章 异步编程 334

13.1 异步编程的重要性 334

13.2 异步模式 335

13.2.1 同步调用 342

13.2.2 异步模式 343

13.2.3 基于事件的异步模式 344

13.2.4 基于任务的异步模式 345

13.3 异步编程的基础 347

13.3.1 创建任务 347

13.3.2 调用异步方法 348

13.3.3 延续任务 348

13.3.4 同步上下文 349

13.3.5 使用多个异步方法 349

13.3.6 转换异步模式 350

13.4 错误处理 351

13.4.1 异步方法的异常处理 352

13.4.2 多个异步方法的异常处理 352

13.4.3 AggregateException类 353

13.5 取消 353

13.5.1 开始取消任务 354

13.5.2 使用框架特性取消任务 354

13.5.3 取消自定义任务 355

13.6 小结 355

第14章 内存管理和指针 356

14.1 内存管理 356

14.2 后台内存管理 356

14.2.1 值数据类型 357

14.2.2 引用数据类型 358

14.2.3 垃圾回收 359

14.3 释放非托管的资源 361

14.3.1 析构函数 361

14.3.2 IDisposable接口 362

14.3.3 实现IDisposable接口和析构函数 363

14.4 不安全的代码 365

14.4.1 用指针直接访问内存 365

14.4.2 指针示例:PointerPlayground 374

14.4.3 使用指针优化性能 378

14.5 小结 381

第15章 反射 382

15.1 在运行期间处理和检查代码 382

15.2 自定义特性 383

15.2.1 编写自定义特性 383

15.2.2 自定义特性示例:WhatsNewAttributes 386

15.3 反射 389

15.3.1 System.Type类 389

15.3.2 TypeView示例 392

15.3.3 Assembly类 393

15.3.4 完成WhatsNewAttributes示例 395

15.4 小结 398

第16章 错误和异常 399

16.1 简介 399

16.2 异常类 400

16.3 捕获异常 401

16.3.1 实现多个catch块 403

16.3.2 在其他代码中捕获异常 407

16.3.3 System.Exception属性 407

16.3.4 没有处理异常时所发生的情况 408

16.3.5 嵌套的try块 408

16.4 用户定义的异常类 410

16.4.1 捕获用户定义的异常 411

16.4.2 抛出用户定义的异常 412

16.4.3 定义用户定义的异常类 415

16.5 调用者信息 417

16.6 小结 418

第Ⅱ部分 Visual Studio 420

第17章 Visual Studio 2012 420

17.1 用Visual Studio 2012进行工作 420

17.1.1 项目文件的改进 423

17.1.2 Visual Studio的版本 423

17.1.3 Visual Studio设置 424

17.2 创建项目 424

17.2.1 面向多个版本的.NET Framework 425

17.2.2 选择项目类型 427

17.3 浏览并编写项目 430

17.3.1 Solution Explorer 430

17.3.2 用代码编辑器进行工作 436

17.3.3 学习和理解其他窗口 438

17.3.4 排列窗口 442

17.4 构建项目 442

17.4.1 构建、编译和生成 442

17.4.2 调试版本和发布版本 443

17.4.3 选择配置 445

17.4.4 编辑配置 445

17.5 调试代码 446

17.5.1 设置断点 446

17.5.2 使用数据提示和调试器可视化工具 447

17.5.3 监视和修改变量 448

17.5.4 异常 449

17.5.5 多线程 450

17.5.6 IntelliTrace 451

17.6 重构工具 451

17.7 体系结构工具 453

17.7.1 依赖项关系图 453

17.7.2 层关系图 454

17.8 分析应用程序 456

17.8.1 序列图 456

17.8.2 探查器 457

17.8.3 Concurrency Visualizer 459

17.8.4 Code Analysis 459

17.8.5 Code Metrics 460

17.9 单元测试 461

17.9.1 创建单元测试 461

17.9.2 运行单元测试 462

17.9.3 预期异常 463

17.9.4 测试全部代码路径 463

17.9.5 外部依赖 464

17.9.6 Fakes Framework 467

17.10 Windows 8、WCF、WF等 468

17.10.1 使用Visual Studio 2012生成WCF应用程序 468

17.10.2 使用Visual Studio 2012生成WF应用程序 470

17.10.3 使用Visual Studio 2012生成Windows Store应用程序 470

17.11 小结 472

第18章 部署 473

18.1 部署是应用程序生命周期的一部分 473

18.2 部署的规划 473

18.2.1 部署选项 474

18.2.2 部署要求 474

18.2.3 部署.NET运行库 475

18.3 传统的部署选项 475

18.3.1 xcopy部署 476

18.3.2 xcopy和Web应用程序 476

18.3.3 Windows Installer 476

18.4 ClickOnce 477

18.4.1 ClickOnce操作 477

18.4.2 发布ClickOnce应用程序 477

18.4.3 ClickOnce设置 479

18.4.4 ClickOnce文件的应用程序缓存 481

18.4.5 应用程序的安装 481

18.4.6 ClickOnce部署API 482

18.5 Web部署 483

18.5.1 Web应用程序 483

18.5.2 配置文件 483

18.5.3 创建Web Deploy包 484

18.6 Windows 8应用程序 485

18.6.1 创建应用程序包 486

18.6.2 Windows App Certification Kit 487

18.6.3 旁加载 487

18.6.4 Windows部署API 488

18.7 小结 490

第Ⅲ部分 基 础 492

第19章 程序集 492

19.1 程序集的含义 492

19.1.1 程序集的功能 493

19.1.2 程序集的结构 493

19.1.3 程序集清单 494

19.1.4 名称空间、程序集和组件 494

19.1.5 私有程序集和共享程序集 495

19.1.6 附属程序集 495

19.1.7 查看程序集 495

19.2 构建程序集 496

19.2.1 创建模块和程序集 496

19.2.2 程序集的特性 497

19.2.3 创建和动态加载程序集 499

19.3 应用程序域 502

19.4 共享程序集 506

19.4.1 强名 506

19.4.2 使用强名获得完整性 507

19.4.3 全局程序集缓存 508

19.4.4 创建共享程序集 509

19.4.5 创建强名 509

19.4.6 安装共享程序集 510

19.4.7 使用共享程序集 511

19.4.8 程序集的延迟签名 512

19.4.9 引用 513

19.4.10 本机映像生成器 513

19.5 配置.NET应用程序 514

19.5.1 配置类别 515

19.5.2 绑定程序集 516

19.6 版本问题 517

19.6.1 版本号 517

19.6.2 通过编程方式获取版本 518

19.6.3 绑定到程序集版本 518

19.6.4 发行者策略文件 519

19.6.5 运行库的版本 521

19.7 在不同的技术之间共享程序集 522

19.7.1 共享源代码 522

19.7.2 可移植类库 523

19.8 小结 524

第20章 诊断 525

20.1 诊断概述 525

20.2 代码协定 526

20.2.1 前提条件 527

20.2.2 后置条件 528

20.2.3 不变量 529

20.2.4 纯粹性 529

20.2.5 接口的协定 529

20.2.6 简写 531

20.2.7 协定和遗留代码 531

20.3 跟踪 532

20.3.1 跟踪源 533

20.3.2 跟踪开关 534

20.3.3 跟踪侦听器 535

20.3.4 筛选器 537

20.3.5 相关性 538

20.3.6 使用ETW进行跟踪 541

20.4 事件日志 542

20.4.1 事件日志体系结构 542

20.4.2 事件日志类 544

20.4.3 创建事件源 545

20.4.4 写入事件日志 546

20.4.5 资源文件 546

20.5 性能监视 550

20.5.1 性能监视类 550

20.5.2 性能计数器生成器 550

20.5.3 添加PerformanceCounter组件 553

20.5.4 perfmon.exe 555

20.6 小结 556

第21章 任务、线程和同步 557

21.1 概述 557

21.2 Parallel类 558

21.2.1 用Parallel.For()方法循环 559

21.2.2 使用Parallel.ForEach()方法循环 562

21.2.3 通过Parallel.Invoke()方法调用多个方法 563

21.3 任务 563

21.3.1 启动任务 563

21.3.2 Future——任务的结果 566

21.3.3 连续的任务 567

21.3.4 任务层次结构 568

21.4 取消架构 568

21.4.1 Parallel.For()方法的取消 569

21.4.2 任务的取消 570

21.5 线程池 571

21.6 Thread类 573

21.6.1 给线程传递数据 574

21.6.2 后台线程 575

21.6.3 线程的优先级 576

21.6.4 控制线程 576

21.7 线程问题 577

21.7.1 争用条件 577

21.7.2 死锁 579

21.8 同步 581

21.8.1 lock语句和线程安全 582

21.8.2 Interlocked类 587

21.8.3 Monitor类 588

21.8.4 SpinLock结构 589

21.8.5 WaitHandle基类 589

21.8.6 Mutex类 590

21.8.7 Semaphore类 591

21.8.8 Events类 593

21.8.9 Barrier类 596

21.8.10 ReaderWriterLockSlim类 598

21.9 Timer类 601

21.10 数据流 602

21.10.1 使用动作块 602

21.10.2 源和目标数据块 603

21.10.3 连接块 604

21.11 小结 606

第22章 安全性 608

22.1 概述 608

22.2 身份验证和授权 609

22.2.1 标识和Principal 609

22.2.2 角色 610

22.2.3 声明基于角色的安全性 611

22.2.4 声称 612

22.2.5 客户端应用程序服务 613

22.3 加密 618

22.3.1 签名 619

22.3.2 交换密钥和安全传输 621

22.4 资源的访问控制 624

22.5 代码访问安全性 627

22.5.1 第2级安全透明性 627

22.5.2 权限 628

22.6 使用证书发布代码 632

22.7 小结 633

第23章 互操作 634

23.1.NET和COM技术 634

23.1.1 元数据 635

23.1.2 释放内存 635

23.1.3 接口 636

23.1.4 方法绑定 637

23.1.5 数据类型 637

23.1.6 注册 638

23.1.7 线程 638

23.1.8 错误处理 640

23.1.9 事件 640

23.1.10 封送 640

23.2 在.NET客户端中使用COM组件 641

23.2.1 创建一个COM组件 641

23.2.2 创建运行库可调用包装 647

23.2.3 使用RCW 648

23.2.4 通过动态语言扩展使用COM服务 649

23.2.5 线程问题 650

23.2.6 添加连接点 650

23.3 在COM客户端中使用.NET组件 652

23.3.1 COM可调用包装 653

23.3.2 创建.NET组件 653

23.3.3 创建一个类型库 654

23.3.4 COM互操作特性 656

23.3.5 COM注册 658

23.3.6 创建COM客户端应用程序 659

23.3.7 添加连接点 660

23.3.8 使用sink对象创建客户端 661

23.3.9 平台调用 663

23.4 小结 667

第24章 文件和注册表操作 668

24.1 文件和注册表 668

24.2 管理文件系统 669

24.2.1 表示文件和文件夹的.NET类 670

24.2.2 Path类 672

24.2.3 FileProperties示例 672

24.3 移动、复制和删除文件 677

24.3.1 FilePropertiesAndMovement示例 677

24.3.2 FilePropertiesAndMovement示例的代码 678

24.4 读写文件 681

24.4.1 读取文件 681

24.4.2 写入文件 683

24.4.3 流 684

24.4.4 缓存的流 686

24.4.5 使用FileStream类读写二进制文件 686

24.4.6 读写文本文件 691

24.5 映射内存的文件 697

24.6 读取驱动器信息 698

24.7 文件的安全性 700

24.7.1 从文件中读取ACL 700

24.7.2 从目录中读取ACL 701

24.7.3 添加和删除文件中的ACL项 703

24.8 读写注册表 704

24.8.1 注册表 705

24.8.2.NET注册表类 706

24.9 读写独立存储器 709

24.10 小结 713

第25章 事务处理 714

25.1 简介 714

25.2 概述 715

25.2.1 事务处理阶段 715

25.2.2 ACID属性 716

25.3 数据库和实体类 716

25.4 传统的事务 718

25.4.1 ADO.NET事务 718

25.4.2 System.Enterprise-Services 719

25.5 System.Transactions 720

25.5.1 可提交的事务 722

25.5.2 事务处理的升级 724

25.5.3 依赖事务 726

25.5.4 环境事务 728

25.6 隔离级别 735

25.7 自定义资源管理器 736

25.8 文件系统事务 742

25.9 小结 746

第26章 网络 747

26.1 网络 747

26.2 WebClient类 748

26.2.1 下载文件 748

26.2.2 基本的WebClient示例 748

26.2.3 上传文件 750

26.3 WebRequest类和WebResponse类 750

26.3.1 身份验证 752

26.3.2 使用代理 752

26.3.3 异步页面请求 753

26.4 把输出结果显示为HTML页面 753

26.4.1 从应用程序中进行简单的Web浏览 754

26.4.2 启动Internet Explorer实例 755

26.4.3 给应用程序提供更多IE类型的功能 756

26.4.4 使用WebBrowser控件打印 761

26.4.5 显示所请求页面的代码 761

26.4.6 WebRequest类和WebResponse类的层次结构 762

26.5 实用工具类 763

26.5.1 URI 763

26.5.2 IP地址和DNS名称 764

26.6 较低层的协议 766

26.6.1 使用SmtpClient 767

26.6.2 使用TCP类 768

26.6.3 TcpSend和TcpReceive示例 769

26.6.4 TCP和UDP 771

26.6.5 UDP类 771

26.6.6 Socket类 772

26.6.7 WebSocket 775

26.7 小结 779

第27章 Windows服务 780

27.1 Windows服务 780

27.2 Windows服务的体系结构 781

27.2.1 服务程序 782

27.2.2 服务控制程序 783

27.2.3 服务配置程序 783

27.2.4 Windows服务的类 783

27.3 创建Windows服务程序 783

27.3.1 创建服务的核心功能 784

27.3.2 QuoteClient示例 787

27.3.3 Windows服务程序 791

27.3.4 线程化和服务 795

27.3.5 服务的安装 795

27.3.6 安装程序 795

27.4 Windows服务的监控和控制 799

27.4.1 MMC管理单元 800

27.4.2 net.exe实用程序 801

27.4.3 sc.exe实用程序 801

27.4.4 Visual Studio Server Explorer 801

27.4.5 编写自定义ServiceController类 801

27.5 故障排除和事件日志 809

27.6 小结 810

第28章 本地化 811

28.1 全球市场 811

28.2 System.Globalization名称空间 812

28.2.1 Unicode问题 812

28.2.2 区域性和区域 813

28.2.3 使用区域性 817

28.2.4 排序 823

28.3 资源 824

28.3.1 创建资源文件 824

28.3.2 资源文件生成器 825

28.3.3 ResourceWriter 825

28.3.4 使用资源文件 826

28.3.5 System.Resources名称空间 830

28.4 使用Visual Studio的Windows Forms本地化 831

28.4.1 通过编程方式修改区域性 836

28.4.2 使用自定义资源消息 837

28.4.3 资源的自动回退 838

28.4.4 外包翻译 838

28.5 ASP.NETWeb Forms的本地化 839

28.6 用WPF本地化 841

28.6.1 用于WPF的.NET资源 842

28.6.2 XAML资源字典 843

28.7 自定义资源读取器 846

28.7.1 创建DatabaseResource-Reader类 847

28.7.2 创建DatabaseResource-Set类 848

28.7.3 创建DatabaseResource-Manager类 849

28.7.4 DatabaseResourceReader的客户端应用程序 850

28.8 创建自定义区域性 850

28.9 用Windows Store应用程序进行本地化 852

28.9.1 使用资源 852

28.9.2 使用多语言应用程序工具集进行本地化 853

28.10 小结 854

第29章 核心XAML 855

29.1 XAML的作用 855

29.2 概述 855

29.2.1 元素如何映射到.NET对象上 856

29.2.2 使用自定义.NET类 857

29.2.3 把属性用作特性 859

29.2.4 把属性用作元素 859

29.2.5 基本的.NET类型 860

29.2.6 使用集合和XAML 860

29.2.7 用XAML代码调用构造函数 861

29.3 依赖属性 861

29.3.1 创建依赖属性 862

29.3.2 强制值回调 863

29.3.3 值变更回调和事件 864

29.3.4 事件的冒泡和隧道 864

29.4 附加属性 867

29.5 标记扩展 870

29.6 创建自定义标记扩展 870

29.7 XAML定义的标记扩展 872

29.8 读写XAML 872

29.9 小结 873

第30章 Managed Extensibility Framework 874

30.1 概述 874

30.2 MEF的体系结构 875

30.2.1 使用属性的MEF 876

30.2.2 基于约定的部件注册 881

30.3 定义协定 883

30.4 导出部件 884

30.4.1 创建部件 884

30.4.2 导出属性和方法 889

30.4.3 导出元数据 891

30.4.4 使用元数据进行惰性加载 893

30.5 导入部件 894

30.5.1 导入连接 896

30.5.2 部件的惰性加载 898

30.5.3 用惰性实例化的部件读取元数据 898

30.6 容器和出口提供程序 901

30.7 类别 903

30.8 小结 905

第31章 Windows运行库 906

31.1 概述 906

31.1.1 .NET与Windows运行库的比较 907

31.1.2 名称空间 907

31.1.3 元数据 909

31.1.4 语言投射 910

31.1.5 Windows运行库中的类型 912

31.2 Windows运行库组件 913

31.2.1 集合 913

31.2.2 流 914

31.2.3 委托与事件 915

31.2.4 异步操作 915

31.3 Windows 8应用程序 916

31.4 Windows 8应用程序的生命周期 918

31.4.1 Windows 8应用程序的执行状态 919

31.4.2 SuspensionManager 920

31.4.3 导航状态 921

31.4.4 测试暂停 922

31.4.5 页面状态 922

31.5 Windows 8应用程序的设置 924

31.6 摄像头功能 926

31.7 小结 928

第Ⅳ部分 数 据 930

第32章 核心ADO.NET 930

32.1 ADO.NET概述 930

32.1.1 名称空间 931

32.1.2 共享类 932

32.1.3 数据库专用类 932

32.2 使用数据库连接 933

32.2.1 管理连接字符串 934

32.2.2 高效地使用连接 935

32.2.3 事务 937

32.3 命令 938

32.3.1 执行命令 939

32.3.2 调用存储过程 942

32.4 快速数据访问:数据读取器 944

32.5 异步数据访问:使用Task和await 947

32.6 管理数据和关系:DataSet类 949

32.6.1 数据表 949

32.6.2 数据列 950

32.6.3 数据关系 955

32.6.4 数据约束 956

32.7 XML架构:用XSD生成代码 959

32.8 填充DataSet类 965

32.8.1 用数据适配器填充DataSet 965

32.8.2 从XML中填充DataSet类 967

32.9 持久化DataSet类的修改 967

32.9.1 通过数据适配器进行更新 967

32.9.2 写入XML输出结果 969

32.10 使用ADO.NET 971

32.10.1 分层开发 971

32.10.2 生成SQLServer的键 972

32.10.3 命名约定 974

32.11 小结 976

第33章 ADO.NET Entity Framework 977

33.1 用Entity Framework编程 977

33.2 Entity Framework映射 979

33.2.1 逻辑层 979

33.2.2 概念层 981

33.2.3 映射层 983

33.2.4 连接字符串 983

33.3 实体 984

33.4 对象上下文 988

33.5 关系 990

33.5.1 一个层次结构一个表 990

33.5.2 一种类型一个表 992

33.5.3 懒惰加载、延迟加载和预先加载 993

33.6 查询数据 994

33.6.1 Entity SQL 994

33.6.2 对象查询 995

33.6.3 LINQ to Entities 998

33.7 把数据写入数据库 999

33.7.1 对象跟踪 999

33.7.2 改变信息 1000

33.7.3 附加和分离实体 1001

33.7.4 存储实体的变化 1002

33.8 使用POCO对象 1003

33.8.1 定义实体类型 1003

33.8.2 创建数据上下文 1004

33.8.3 查询和更新 1004

33.9 使用Code First编程模型 1005

33.9.1 定义实体类型 1005

33.9.2 创建数据上下文 1006

33.9.3 创建数据库,存储实体 1006

33.9.4 数据库 1007

33.9.5 查询数据 1007

33.9.6 定制数据库的生成 1008

33.10 小结 1009

第34章 处理XML 1010

34.1 XML 1010

34.2.NET支持的XML标准 1011

34.3 System.Xml名称空间 1011

34.4 使用System.Xml类 1012

34.5 读写流格式的XML 1013

34.5.1 使用XmlReader类 1013

34.5.2 使用XmlReader类进行验证 1017

34.5.3 使用XmlWriter类 1019

34.6 在.NET中使用DOM 1020

34.7 使用XPathNavigator类 1025

34.7.1 System.Xml.XPath名称空间 1025

34.7.2 System.Xml.Xsl名称空间 1030

34.7.3 调试XSLT 1034

34.8 XML和ADO.NET 1036

34.8.1 将ADO.NET数据转换为XML文档 1036

34.8.2 把XML文档转换为ADO.NET数据 1042

34.9 在XML中序列化对象 1044

34.10 LINQ to XML和.NET 1053

34.11 使用不同的XML对象 1053

34.11.1 XDocument对象 1053

34.11.2 XElement对象 1054

34.11.3 XNamespace对象 1055

34.11.4 XComment对象 1057

34.11.5 XAttribute对象 1058

34.12 使用LINQ查询XML文档 1059

34.12.1 查询静态的XML文档 1059

34.12.2 查询动态的XML文档 1060

34.13 XML文档的更多查询技术 1062

34.13.1 读取XML文档 1062

34.13.2 写入XML文档 1063

34.14 小结 1065

第Ⅴ部分 显 示 1068

第35章 核心WPF 1068

35.1 理解WPF 1069

35.1.1 名称空间 1069

35.1.2 类层次结构 1070

35.2 形状 1072

35.3 几何图形 1073

35.4 变换 1075

35.5 画笔 1077

35.5.1 SolidColorBrush 1077

35.5.2 LinearGradientBrush 1077

35.5.3 RadialGradientBrush 1078

35.5.4 DrawingBrush 1078

35.5.5 ImageBrush 1079

35.5.6 VisualBrush 1079

35.6 控件 1081

35.6.1 简单控件 1081

35.6.2 内容控件 1081

35.6.3 带标题的内容控件 1083

35.6.4 项控件 1084

35.6.5 带标题的项控件 1084

35.6.6 修饰 1085

35.7 布局 1086

35.7.1 StackPanel 1086

35.7.2 WrapPanel 1086

35.7.3 Canvas 1087

35.7.4 DockPanel 1088

35.7.5 Grid 1089

35.8 样式和资源 1090

35.8.1 样式 1090

35.8.2 资源 1092

35.8.3 系统资源 1093

35.8.4 从代码中访问资源 1093

35.8.5 动态资源 1094

35.8.6 资源字典 1095

35.9 触发器 1096

35.9.1 属性触发器 1096

35.9.2 多触发器 1098

35.9.3 数据触发器 1098

35.10 模板 1100

35.10.1 控件模板 1100

35.10.2 数据模板 1103

35.10.3 样式化列表框 1105

35.10.4 ItemTemplate 1106

35.10.5 列表框元素的控件模板 1107

35.11 动画 1108

35.11.1 时间轴 1109

35.11.2 非线性动画 1112

35.11.3 事件触发器 1112

35.11.4 关键帧动画 1115

35.12 可见状态管理器 1116

35.12.1 可见的状态 1117

35.12.2 变换 1118

35.13 3 -D 1119

35.13.1 模型 1120

35.13.2 照相机 1121

35.13.3 光线 1122

35.13.4 旋转 1122

35.14 小结 1123

第36章 用WPF编写业务应用程序 1124

36.1 概述 1124

36.2 菜单和功能区控件 1125

36.2.1 菜单控件 1125

36.2.2 功能区控件 1126

36.3 Commanding 1128

36.3.1 定义命令 1129

36.3.2 定义命令源 1130

36.3.3 命令绑定 1130

36.4 数据绑定 1131

36.4.1 BooksDemo应用程序内容 1132

36.4.2 用XAML绑定 1133

36.4.3 简单对象的绑定 1135

36.4.4 更改通知 1137

36.4.5 对象数据提供程序 1140

36.4.6 列表绑定 1142

36.4.7 主从绑定 1145

36.4.8 多绑定 1145

36.4.9 优先绑定 1147

36.4.10 值的转换 1149

36.4.11 动态添加列表项 1150

36.4.12 动态添加选项卡中的项 1151

36.4.13 数据模板选择器 1152

36.4.14 绑定到XML上 1154

36.4.15 绑定的验证 1156

36.5 TreeView 1164

36.6 DataGrid 1168

36.6.1 自定义列 1170

36.6.2 行的细节 1171

36.6.3 用DataGrid进行分组 1171

36.6.4 实时成型 1174

36.7 小结 1180

第37章 用WPF创建文档 1181

37.1 简介 1181

37.2 文本元素 1182

37.2.1 字体 1182

37.2.2 TextEffect 1183

37.2.3 内联 1184

37.2.4 块 1186

37.2.5 列表 1188

37.2.6 表 1188

37.2.7 块的锚定 1189

37.3 流文档 1191

37.4 固定文档 1195

37.5 XPS文档 1199

37.6 打印 1200

37.6.1 用PrintDialog打印 1201

37.6.2 打印可见元素 1201

37.7 小结 1203

第38章 Windows 8应用程序 1204

38.1 概述 1204

38.2 Windows 8的现代UI设计 1204

38.2.1 内容,不是chrome设计 1205

38.2.2 快速流畅 1206

38.2.3 可读性 1206

38.3 示例应用程序的核心功能 1206

38.3.1 文件和目录 1207

38.3.2 应用程序数据 1208

38.3.3 应用程序页面 1213

38.4 应用程序工具栏 1218

38.5 启动与导航 1219

38.6 布局的变化 1222

38.7 存储 1225

38.7.1 定义数据协定 1226

38.7.2 写入移动数据 1227

38.7.3 读取数据 1229

38.7.4 写入图像 1230

38.7.5 读取图像 1232

38.8 选择器 1233

38.9 共享协定 1234

38.9.1 共享源 1234

38.9.2 共享目标 1237

38.10 Tile 1239

38.11 小结 1241

第39章 核心ASP.NET 1242

39.1 用于Web应用程序的.NET Framework 1242

39.1.1 ASP.NET Web Forms 1243

39.1.2 ASP.NET Web Pages 1243

39.1.3 ASP.NET MVC 1244

39.2 Web技术 1244

39.2.1 HTML 1244

39.2.2 CSS 1245

39.2.3 JavaScript和jQuery 1245

39.3 托管和配置 1246

39.4 处理程序和模块 1248

39.4.1 创建自定义处理程序 1249

39.4.2 ASP.NET处理程序 1250

39.4.3 创建自定义模块 1251

39.4.4 通用模块 1253

39.5 全局的应用程序类 1254

39.6 请求和响应 1254

39.6.1 使用HttpRequest对象 1255

39.6.2 使用HttpResponse对象 1256

39.7 状态管理 1256

39.7.1 视图状态 1257

39.7.2 cookie 1258

39.7.3 会话 1259

39.7.4 应用程序状态 1261

39.7.5 缓存 1262

39.7.6 配置文件 1263

39.8 成员和角色 1267

39.8.1 配置成员 1267

39.8.2 使用成员API 1269

39.8.3 启用角色API 1270

39.9 小结 1270

第40章 ASP.NETWeb Forms 1271

40.1 概述 1271

40.2 ASPX页面模型 1272

40.2.1 添加控件 1272

40.2.2 使用事件 1273

40.2.3 使用回送 1274

40.2.4 使用自动回送 1275

40.2.5 回送到其他页面 1275

40.2.6 定义强类型化的跨页面回送 1276

40.2.7 使用页面事件 1277

40.2.8 ASPX代码 1278

40.2.9 服务器端控件 1280

40.3 母版页 1281

40.3.1 创建母版页 1281

40.3.2 使用母版页 1283

40.3.3 在内容页中定义母版页内容 1284

40.4 导航 1285

40.4.1 站点地图 1286

40.4.2 Menu控件 1286

40.4.3 菜单路径 1287

40.5 验证用户输入 1287

40.5.1 使用验证控件 1287

40.5.2 使用验证摘要 1289

40.5.3 验证组 1289

40.6 访问数据 1290

40.6.1 使用Entity Framework 1291

40.6.2 使用Entity Data Source 1291

40.6.3 排序和编辑 1293

40.6.4 定制列 1294

40.6.5 在网格中使用模板 1295

40.6.6 定制对象上下文的创建过程 1297

40.6.7 对象数据源 1298

40.7 安全性 1299

40.7.1 启用表单身份验证 1299

40.7.2 登录控件 1300

40.8 Ajax 1301

40.8.1 ASP.NET AJAX的概念 1302

40.8.2 ASP.NET AJAX网站示例 1305

40.8.3 支持ASP.NET AJAX的网站配置 1308

40.8.4 添加ASP.NET AJAX功能 1308

40.9 小结 1315

第41章 ASP.NET MVC 1316

41.1 ASP.NET MVC概述 1316

41.2 定义路由 1318

41.2.1 添加路由 1319

41.2.2 路由约束 1319

41.3 创建控制器 1320

41.3.1 动作方法 1321

41.3.2 参数 1321

41.3.3 返回数据 1322

41.4 创建视图 1323

41.4.1 向视图传递数据 1325

41.4.2 Razor语法 1325

41.4.3 强类型视图 1326

41.4.4 布局 1327

41.4.5 部分视图 1330

41.5 从客户端提交数据 1334

41.5.1 模型绑定器 1335

41.5.2 注释和验证 1337

41.6 HTML Helper 1338

41.6.1 简单的Helper 1338

41.6.2 使用模型数据 1339

41.6.3 定义HTML特性 1340

41.6.4 创建列表 1340

41.6.5 强类型化的Helper 1341

41.6.6 编辑器扩展 1342

41.6.7 创建自定义Helper 1342

41.6.8 模板 1343

41.7 创建数据驱动的应用程序 1344

41.7.1 定义模型 1344

41.7.2 创建控制器和视图 1345

41.8 动作过滤器 1350

41.9 身份验证和授权 1352

41.9.1 登录模型 1352

41.9.2 登录控制器 1352

41.9.3 登录视图 1354

41.10 ASP.NET Web API 1355

41.10.1 使用Entity Framework Code-First进行数据访问 1355

41.10.2 为ASP.NET Web API定义路由 1357

41.10.3 控制器实现 1357

41.10.4 使用jQuery的客户端应用程序 1358

41.11 小结 1360

第42章 ASP.NET动态数据 1361

42.1 概述 1361

42.2 创建动态数据Web应用程序 1362

42.2.1 配置Scaffolding 1363

42.2.2 查看结果 1364

42.3 定制动态数据网站 1366

42.3.1 控制框架 1367

42.3.2 定制模板 1368

42.3.3 配置路由 1373

42.4 小结 1374

第Ⅵ部分 通 信 1376

第43章 WCF 1376

43.1 WCF概述 1376

43.1.1 SOAP 1378

43.1.2 WSDL 1378

43.1.3 REST 1379

43.1.4 JSON 1379

43.2 创建简单的服务和客户端 1379

43.2.1 定义服务和数据协定 1380

43.2.2 数据访问 1382

43.2.3 服务的实现 1383

43.2.4 WCF服务宿主和WCF测试客户端 1384

43.2.5 自定义服务宿主 1386

43.2.6 WCF客户端 1388

43.2.7 诊断 1390

43.2.8 与客户端共享协定程序集 1392

43.3 协定 1393

43.3.1 数据协定 1394

43.3.2 版本问题 1394

43.3.3 服务协定 1395

43.3.4 消息协定 1396

43.3.5 错误协定 1396

43.4 服务的行为 1398

43.5 绑定 1401

43.5.1 标准的绑定 1401

43.5.2 标准绑定的特性 1402

43.5.3 Web套接字 1404

43.6 宿主 1407

43.6.1 自定义宿主 1407

43.6.2 WAS宿主 1408

43.6.3 预配置的宿主类 1408

43.7 客户端 1410

43.7.1 使用元数据 1410

43.7.2 共享类型 1411

43.8 双工通信 1411

43.8.1 双工通信的协定 1412

43.8.2 双工通信的服务 1412

43.8.3 双工通信的客户端应用程序 1413

43.9 路由 1414

43.9.1 示例应用程序 1415

43.9.2 路由接口 1416

43.9.3 WCF路由服务 1416

43.9.4 为失败使用路由器 1417

43.9.5 改变协定的桥梁 1418

43.9.6 过滤器的类型 1419

43.10 小结 1419

第44章 WCF数据服务 1420

44.1 概述 1420

44.2 包含CLR对象的自定义宿主 1421

44.2.1 CLR对象 1422

44.2.2 数据模型 1424

44.2.3 数据服务 1424

44.2.4 驻留服务 1425

44.2.5 其他服务操作 1426

44.3 HTTP客户端应用程序 1426

44.4 使用WCF数据服务和ADO.NET Entity Framework 1431

44.4.1 ASP.NET宿主和EDM 1432

44.4.2 使用WCF数据服务客户库 1433

44.5 小结 1441

第45章 Windows WF 4 1442

45.1 工作流概述 1442

45.2 Hello World示例 1443

45.3 活动 1444

45.3.1 If活动 1445

45.3.2 InvokeMethod活动 1446

45.3.3 Parallel活动 1446

45.3.4 Delay活动 1447

45.3.5 Pick活动 1447

45.4 自定义活动 1448

45.4.1 活动的验证 1449

45.4.2 设计器 1450

45.4.3 自定义复合活动 1452

45.5 工作流 1454

45.5.1 实参和变量 1455

45.5.2 WorkflowApplication 1455

45.5.3 存放WCF工作流 1459

45.5.4 工作流的版本 1463

45.5.5 驻留设计器 1464

45.6 小结 1468

第46章 对等网络 1469

46.1 P2P网络概述 1469

46.1.1 客户端-服务器体系结构 1469

46.1.2 P2P体系结构 1470

46.1.3 P2P体系结构的挑战 1471

46.1.4 P2P术语 1472

46.1.5 P2P解决方案 1472

46.2 PNRP 1472

46.3 构建P2P应用程序 1475

46.4 小结 1481

第47章 消息队列 1482

47.1 概述 1482

47.1.1 使用消息队列的场合 1483

47.1.2 消息队列功能 1484

47.2 Message Queuing产品 1485

47.3 消息队列体系结构 1486

47.3.1 消息 1486

47.3.2 消息队列 1486

47.4 Message Queuing管理工具 1487

47.4.1 创建消息队列 1487

47.4.2 消息队列属性 1488

47.5 消息队列的编程实现 1489

47.5.1 创建消息队列 1489

47.5.2 查找队列 1490

47.5.3 打开已知队列 1490

47.5.4 发送消息 1492

47.5.5 接收消息 1494

47.6 课程订单应用程序 1496

47.6.1 课程订单类库 1496

47.6.2 课程订单消息发送程序 1499

47.6.3 发送优先级和可恢复的消息 1501

47.6.4 课程订单消息接收应用程序 1502

47.7 接收结果 1508

47.7.1 确认队列 1508

47.7.2 响应队列 1509

47.8 事务队列 1509

47.9 消息队列和WCF 1510

47.9.1 带数据协定的实体类 1511

47.9.2 WCF服务协定 1512

47.9.3 WCF消息接收应用程序 1513

47.9.4 WCF消息发送应用程序 1515

47.10 消息队列的安装 1517

47.11 小结 1517