上卷 3
第Ⅰ部分 C#语言 3
第1章 .NET体系结构 3
1.1 C#与.NET的关系 3
1.2 公共语言运行库 4
1.3 中间语言 7
1.3.1 面向对象和接口的支持 7
1.3.2 相异值类型和引用类型 8
1.3.3 强数据类型 8
1.3.4 通过异常处理错误 14
1.3.5 特性的使用 15
1.4 程序集 15
1.4.1 私有程序集 16
1.4.2 共享程序集 16
1.4.3 反射 17
1.5 .NET Framework类 17
1.6 命名空间 18
1.7 用C#创建.NET应用程序 18
1.7.1 创建ASP.NET应用程序 19
1.7.2 创建Windows窗体 21
1.7.3 使用Windows Presentation Foundation(WPF) 21
1.7.4 Windows控件 21
1.7.5 Windows服务 21
1.7.6 Windows Communication Foundation(WCF) 22
1.8 C#在.NET企业体系结构中的作用 22
1.9 小结 23
第2章 C#基础 25
2.1 引言 25
2.2 第一个C#程序 26
2.2.1 代码 26
2.2.2 编译并运行程序 26
2.2.3 详细介绍 27
2.3 变量 29
2.3.1 变量的初始化 30
2.3.2 变量的作用域 31
2.3.3 常量 33
2.4 预定义数据类型 34
2.4.1 值类型和引用类型 34
2.4.2 CTS类型 35
2.4.3 预定义的值类型 36
2.4.4 预定义的引用类型 39
2.5 流控制 41
2.5.1 条件语句 41
2.5.2 循环 45
2.5.3 跳转语句 49
2.6 枚举 50
2.7 数组 52
2.8 命名空间 53
2.8.1 using语句 54
2.8.2 命名空间的别名 55
2.9 Main()方法 55
2.9.1 多个Main()方法 56
2.9.2 给Main()方法传送参数 57
2.10 有关编译C#文件的更多内容 57
2.11 控制台I/O 59
2.12 使用注释 61
2.12.1 源文件中的内部注释 61
2.12.2 XML文档说明 61
2.13 C#预处理器指令 63
2.13.1 #define和#undef 64
2.13.2 #if,#elif,#else和#endif 64
2.13.3 #warning和#error 65
2.13.4 #region和#endregion 66
2.13.5 #line 66
2.13.6 #pragma 66
2.14 C#编程规则 67
2.14.1 用于标识符的规则 67
2.14.2 用法约定 68
2.15 小结 73
第3章 对象和类型 75
3.1 类和结构 75
3.2 类成员 76
3.2.1 数据成员 77
3.2.2 函数成员 77
3.2.3 只读字段 90
3.3 结构 91
3.3.1 结构是值类型 93
3.3.2 结构和继承 94
3.3.3 结构的构造函数 94
3.4 部分类 95
3.5 静态类 96
3.6 Object类 97
3.6.1 System.Object方法 97
3.6.2 ToString()方法 98
3.7 小结 100
第4章 继承 101
4.1 继承的类型 101
4.1.1 实现继承和接口继承 101
4.1.2 多重继承 102
4.1.3 结构和类 102
4.2 实现继承 102
4.2.1 虚方法 103
4.2.2 隐藏方法 104
4.2.3 调用函数的基类版本 105
4.2.4 抽象类和抽象函数 106
4.2.5 密封类和密封方法 107
4.2.6 派生类的构造函数 108
4.3 修饰符 112
4.3.1 可见性修饰符 112
4.3.2 其他修饰符 113
4.4 接口 114
4.4.1 定义和实现接口 115
4.4.2 派生的接口 119
4.5 小结 120
第5章 数组 121
5.1 简单数组 121
5.1.1 数组的声明 121
5.1.2 数组的初始化 121
5.1.3 访问数组元素 122
5.1.4 使用引用类型 123
5.2 多维数组 125
5.3 锯齿数组 126
5.4 Array类 127
5.4.1 属性 127
5.4.2 创建数组 128
5.4.3 复制数组 129
5.4.4 排序 130
5.5 数组和集合接口 132
5.5.1 IEumerable接口 132
5.5.2 ICollection接口 133
5.5.3 IList接口 133
5.6 枚举 134
5.6.1 IEnumerator接口 134
5.6.2 foreach语句 135
5.6.3 yield语句 135
5.7 小结 140
第6章 运算符和类型强制转换 141
6.1 运算符 141
6.1.1 运算符的简化操作 143
6.1.2 三元运算符 144
6.1.3 checked和unchecked运算符 144
6.1.4 is运算符 145
6.1.5 as运算符 145
6.1.6 sizeof运算符 146
6.1.7 typeof运算符 146
6.1.8 可空类型和运算符 146
6.1.9 空接合运算符 147
6.1.10 运算符的优先级 147
6.2 类型的安全性 148
6.2.1 类型转换 148
6.2.2 装箱和拆箱 152
6.3 对象的相等比较 153
6.3.1 引用类型的相等比较 153
6.3.2 值类型的相等比较 154
6.4 运算符重载 155
6.4.1 运算符的工作方式 156
6.4.2 运算符重载的示例:Vector结构 157
6.5 用户定义的数据类型转换 164
6.5.1 执行用户定义的类型转换 165
6.5.2 多重数据类型转换 171
6.6 小结 175
第7章 委托和事件 177
7.1 委托 177
7.1.1 在C#中声明委托 178
7.1.2 在C#中使用委托 179
7.2 委托推断 182
7.3 匿名方法 182
7.3.1 简单的委托示例 184
7.3.2 BubbleSorter示例 186
7.3.3 多播委托 189
7.4 事件 192
7.4.1 从客户的角度讨论事件 193
7.4.2 生成事件 196
7.5 小结 199
第8章 字符串和正则表达式 201
8.1 System.String类 201
8.1.1 创建字符串 203
8.1.2 StringBuilder成员 205
8.1.3 格式化字符串 206
8.2 正则表达式 212
8.2.1 正则表达式概述 212
8.2.2 RegularExpressions Playaround示例 213
8.2.3 显示结果 216
8.2.4 匹配、组合和捕获 217
8.3 小结 219
第9章 泛型 221
9.1 概述 221
9.1.1 性能 222
9.1.2 类型安全 223
9.1.3 二进制代码的重用 223
9.1.4 代码的扩展 224
9.1.5 命名约定 224
9.2 创建泛型类 224
9.3 泛型类的特性 229
9.3.1 默认值 230
9.3.2 约束 230
9.3.3 继承 233
9.3.4 静态成员 234
9.4 泛型接口 234
9.5 泛型方法 235
9.6 泛型委托 237
9.6.1 执行委托调用的方法 237
9.6.2 对Array类使用泛型委托 239
9.7 Framework的其他泛型类型 242
9.7.1 结构Nullable<T> 242
9.7.2 EventHandler<TEventArgs> 243
9.7.3 ArraySegment<T> 244
9.8 小结 245
第10章 集合 247
10.1 集合接口和类型 247
10.2 列表 249
10.2.1 创建列表 251
10.2.2 只读集合 260
10.3 队列 260
10.4 栈 264
10.5 链表 266
10.6 有序表 273
10.7 字典 275
10.7.1 键的类型 275
10.7.2 字典示例 277
10.7.3 其他字典类 280
10.8 带多个键的字典 281
10.9 位数组 286
10.9.1 BitArray 286
10.9.2 BitVector32 289
10.10 性能 291
10.11 小结 292
第11章 内存管理和指针 293
11.1 后台内存管理 293
11.1.1 值数据类型 293
11.1.2 引用数据类型 295
11.1.3 垃圾收集 297
11.2 释放未托管的资源 298
11.2.1 析构函数 298
11.2.2 IDisposable接口 300
11.2.3 实现IDisposable接口和析构函数 301
11.3 不安全的代码 303
11.3.1 指针 303
11.3.2 指针示例:Pointer Playaround 312
11.3.3 使用指针优化性能 317
11.4 小结 320
第12章 反射 321
12.1 定制特性 322
12.1.1 编写定制特性 322
12.1.2 定制特性示例:WhatsNewAttributes 326
12.2 反射 329
12.2.1 System.Type类 329
12.2.2 TypeView示例 331
12.2.3 Assembly类 334
12.2.4 完成WhatsNewAttributes示例 336
12.3 小结 340
第13章 错误和异常 341
13.1 错误和异常处理 341
13.1.1 异常类 342
13.1.2 捕获异常 343
13.1.3 用户定义的异常类 353
13.2 小结 360
第Ⅱ部分 Visual Studio 363
第14章 Visual Studio 2005 363
14.1 使用Visual Studio 2005 363
14.1.1 创建项目 368
14.1.2 解决方案和项目 374
14.1.3 Windows应用程序代码 377
14.1.4 读取Visual Studio 6项目 377
14.1.5 项目的浏览和编码 378
14.1.6 生成项目 388
14.1.7 调试 392
14.2 修订功能 394
14.3 Visual Studio 2005 for.NET Framework 3.0 396
14.3.1 .NET 3.0的项目类型 397
14.3.2 在Visual Studio中建WPF应用程序 398
14.3.3 在Visual Studio中建立WF应用程序 400
14.4 小结 401
第15章 部署 403
15.1 部署的设计 403
15.2 部署选项 404
15.2.1 Xcopy实用工具 404
15.2.2 Copy Web工具 404
15.2.3 发布Web站点 404
15.2.4 部署项目 404
15.2.5 ClickOnce 404
15.3 部署的要求 404
15.4 部署.NET运行库 405
15.5 简单的部署 406
15.5.1 Xcopy部署 407
15.5.2 Xcopy和Web应用程序 407
15.5.3 Copy Web工具 407
15.5.4 发布Web站点 407
15.6 Installer项目 408
15.6.1 Windows Installer 409
15.6.2 创建安装程序 409
15.7 ClickOnce 418
15.7.1 ClickOnce操作 418
15.7.2 发布应用程序 419
15.7.3 ClickOnce设置 419
15.7.4 应用程序缓存 420
15.7.5 安全性 420
15.7.6 高级选项 421
15.8 小结 426
第Ⅲ部分 基类库 429
第16章 程序集 429
16.1 程序集的含义 429
16.1.1 DLL Hell的解决方案 430
16.1.2 程序集的特性 430
16.1.3 应用程序域和程序集 431
16.2 程序集的结构 434
16.2.1 程序集的清单 434
16.2.2 命名空间、程序集和组件 435
16.2.3 私有程序集和共享程序集 435
16.2.4 查看程序集 436
16.2.5 构建程序集 437
16.3 跨语言支持 441
16.3.1 CTS和CLS 441
16.3.2 语言无关性 442
16.3.3 CLS要求 451
16.4 全局程序集缓存 452
16.4.1 本机图像生成器 452
16.4.2 全局程序集缓存查看器 453
16.4.3 全局程序集缓存工具(gacutil.exe) 455
16.5 创建共享程序集 455
16.5.1 共享程序集名 455
16.5.2 创建共享程序集 458
16.6 配置 463
16.6.1 配置类别 463
16.6.2 版本问题 464
16.6.3 配置目录 472
16.7 小结 474
第17章 跟踪和事件 477
17.1 跟踪 477
17.1.1 跟踪源 478
17.1.2 跟踪开关 479
17.1.3 跟踪监听器 480
17.1.4 过滤器 483
17.1.5 断言 484
17.2 事件日志 485
17.2.1 事件日志体系架构 486
17.2.2 事件日志类 487
17.2.3 创建事件源 488
17.2.4 写入事件日志 489
17.2.5 资源文件 489
17.3 性能监控 494
17.3.1 性能监控类 494
17.3.2 性能计数器的构建 495
17.3.3 添加PerformanceCounter组件 496
17.3.4 perfmon.exe 498
17.4 小结 499
第18章 线程和同步 501
18.1 概述 501
18.2 异步委托 503
18.2.1 投票 503
18.2.2 等待句柄 504
18.2.3 异步回调 505
18.3 Thread类 506
18.3.1 给线程传送数据 508
18.3.2 后台线程 510
18.3.3 线程的优先级 511
18.3.4 控制线程 511
18.4 线程池 512
18.5 线程问题 513
18.5.1 竞态条件 513
18.5.2 死锁 516
18.6 同步 518
18.6.1 lock语句和线程安全 518
18.6.2 Interlocked 524
18.6.3 Monitor类 525
18.6.4 等待句柄 526
18.6.5 Mutex类 527
18.6.6 Semaphore类 529
18.6.7 Events类 531
18.7 COM单元 533
18.8 BackgroundWorker组件 534
18.8.1 激活取消功能 537
18.8.2 激活进度功能 538
18.9 小结 540
第19章 .NET的安全性 541
19.1 代码访问的安全性 541
19.1.1 代码组 542
19.1.2 代码访问权限和权限集 548
19.1.3 策略的级别:Machine、User和Enterprise 552
19.2 对Framework中安全性的支持 554
19.2.1 要求权限 555
19.2.2 请求权限 556
19.2.3 隐式的权限 559
19.2.4 拒绝权限 560
19.2.5 断言权限 561
19.2.6 创建代码访问权限 562
19.2.7 声明的安全性 563
19.3 安全策略的管理 564
19.3.1 安全配置文件 564
19.3.2 代码组和权限的管理 567
19.3.3 安全性的启用和禁用 568
19.3.4 重置安全策略 568
19.3.5 代码组的创建 568
19.3.6 代码组的删除 569
19.3.7 代码组权限的更改 569
19.3.8 权限集的创建和应用 570
19.3.9 使用强名发布代码 572
19.3.10 使用证书发布代码 574
19.3.11 区域的管理 580
19.4 基于角色的安全性 582
19.4.1 Principal 582
19.4.2 Windows Principal 583
19.4.3 角色 585
19.4.4 声明基于角色的安全性 585
19.5 小结 586
第20章 本地化 587
20.1 System.Globalization命名空间 587
20.1.1 Unicode问题 588
20.1.2 文化和区域 588
20.1.3 使用文化 593
20.1.4 排序 597
20.2 资源 599
20.2.1 创建资源文件 599
20.2.2 资源文件生成器 599
20.2.3 ResourceWriter 600
20.2.4 使用资源文件 601
20.2.5 System.Resources命名空间 605
20.3 使用Visual Studio的本地化示例 606
20.3.1 编程修改文化 611
20.3.2 使用定制资源文件 612
20.3.3 资源的自动回退 613
20.3.4 外包翻译 614
20.4 用ASP.NET本地化 615
20.5 定制的资源读取器 616
20.5.1 创建DatabaseResource-Reader类 617
20.5.2 创建DatabaseResource-Set类 619
20.5.3 创建DatabaseResource-Manager类 619
20.5.4 DatabaseResourceReader的客户应用程序 620
20.6 创建定制文化 621
20.7 小结 622
第21章 事务处理 623
21.1 概述 623
21.1.1 事务处理阶段 624
21.1.2 ACID属性 625
21.2 数据库和类 625
21.3 传统的事务处理 627
21.3.1 ADO.NET事务处理 628
21.3.2 System.Enterprise-Services 629
21.4 System.Transactions 630
21.4.1 可提交的事务处理 632
21.4.2 事务处理的升级 634
21.4.3 依赖的事务处理 636
21.4.4 环境事务处理 638
21.4.5 嵌套的作用域和环境事务处理 640
21.5 隔离级别 641
21.6 定制资源管理器 643
21.7 Windows Vista的事务处理 650
21.8 小结 653
第22章 Windows服务 655
22.1 Windows服务 655
22.2 Windows服务的体系结构 656
22.2.1 服务程序 657
22.2.2 服务控制程序 658
22.2.3 服务配置程序 658
22.3 System.ServiceProcess命名空间 658
22.4 创建Windows服务 659
22.4.1 使用套接字的类库 659
22.4.2 TcpClient示例 663
22.4.3 Windows服务项目 665
22.4.4 线程和服务 671
22.4.5 服务的安装 671
22.4.6 安装程序 671
22.5 服务的监视和控制 676
22.5.1 MMC计算机管理 676
22.5.2 net.exe 677
22.5.3 sc.exe 678
22.5.4 Visual Studio Server-Explorer 679
22.5.5 ServiceController类 679
22.6 故障排除 686
22.6.1 交互式服务 687
22.6.2 事件日志 688
22.7 电源事件 688
22.8 小结 689
第23章 COM的互操作性 691
23.1 .NET和COM 691
23.1.1 元数据 692
23.1.2 释放内存 692
23.1.3 接口 693
23.1.4 方法绑定 694
23.1.5 数据类型 695
23.1.6 注册 695
23.1.7 线程 695
23.1.8 错误处理 697
23.1.9 事件处理 697
23.2 编组 698
23.3 在.NET客户程序中使用COM组件 699
23.3.1 创建COM组件 699
23.3.2 创建Runtime Callable-Wrapper 704
23.3.3 使用RCW 705
23.3.4 可交互操作的主程序集 707
23.3.5 线程问题 707
23.3.6 添加连接点 708
23.3.7 在Windows窗体中使用ActiveX控件 710
23.3.8 在ASP.NET中使用COM对象 714
23.4 在COM客户程序中使用.NET组件 714
23.4.1 COM Callable Wrapper 714
23.4.2 创建.NET组件 715
23.4.3 创建类型库 716
23.4.4 COM互操作特性 718
23.4.5 COM注册 721
23.4.6 创建COM客户程序 721
23.4.7 添加连接点 723
23.4.8 用sink对象创建客户程序 724
23.4.9 在Internet Explorer中运行Windows窗体控件 725
23.5 平台调用 725
23.6 小结 728
第Ⅳ部分 数据 731
第24章 文件和注册表操作 731
24.1 管理文件系统 731
24.1.1 表示文件和文件夹的.NET类 732
24.1.2 Path类 735
24.1.3 示例:文件浏览器 735
24.2 移动、复制和删除文件 740
24.2.1 FilePropertiesAnd-Movement示例 741
24.2.2 示例FilePropertiesAnd-Movement的代码 742
24.3 读写文件 745
24.3.1 读取文件 745
24.3.2 写入文件 747
24.3.3 流 748
24.3.4 缓存的流 750
24.3.5 使用FileStream类读写二进制文件 750
24.3.6 读写文本文件 755
24.4 读取驱动器信息 761
24.5 文件的安全性 763
24.5.1 从文件中读取ACL 764
24.5.2 从目录中读取ACL 765
24.5.3 添加和删除文件中的ACL项 766
24.6 读写注册表 768
24.6.1 注册表 768
24.6.2 .NET注册表类 770
24.6.3 SelfPlacingWindow示例 773
24.7 读写独立存储器 778
24.8 小结 783
第25章 .NET数据访问 785
25.1 ADO.NET概述 785
25.1.1 命名空间 786
25.1.2 共享类 786
25.1.3 数据库特定的类 787
25.2 使用数据库连接 788
25.2.1 管理连接字符串 789
25.2.2 高效地使用连接 791
25.2.3 事务处理 793
25.3 命令 794
25.3.1 执行命令 795
25.3.2 调用存储过程 799
25.4 快速数据访问:数据读取器 802
25.5 管理数据和关系:DataSet类 805
25.5.1 数据表 805
25.5.2 数据列 806
25.5.3 数据关系 811
25.5.4 数据约束 813
25.6 XML模式 815
25.7 填充数据集 822
25.7.1 用数据适配器来填充DataSet 822
25.7.2 从XML中给数据集填充数据 823
25.8 保存对数据集的修改 824
25.8.1 通过数据适配器进行更新 824
25.8.2 写入XML输出结果 826
25.9 使用ADO.NET 828
25.9.1 分层开发 828
25.9.2 生成SQL Server的键 829
25.9.3 命名约定 831
25.10 小结 833
第26章 处理XML 835
26.1 .NET支持的XML标准 836
26.2 System.Xml命名空间 836
26.3 在.NET中使用MSXML 837
26.4 使用System.Xml类 839
26.5 读写流格式的XML 839
26.5.1 使用XmlReader类 840
26.5.2 使用XmlReader类进行验证 843
26.5.3 使用XmlWriter类 845
26.6 在.NET中使用DOM 847
26.7 使用XPathNavigator 852
26.7.1 System.Xml.XPath命名空间 853
26.7.2 System.Xml.Xsl命名空间 858
26.8 XML和ADO.NET 863
26.8.1 将ADO.NET数据转换为XML文档 863
26.8.2 把XML文档转换为ADO.NET数据 870
26.8.3 读写DiffGram 872
26.9 在XML中串行化对象 875
26.10 小结 884
第27章 .NET编程和SQL Server 2005 885
27.1 .NET运行库的主机 885
27.2 Microsoft.SqlServer.Server 887
27.3 用户定义的类型 888
27.3.1 创建UDT 888
27.3.2 使用UDT 893
27.3.3 在客户端代码中使用UDT 894
27.4 用户定义的合计函数 895
27.4.1 创建用户定义的合计函数 895
27.4.2 使用用户定义的合计函数 897
27.5 存储过程 897
27.5.1 创建存储过程 898
27.5.2 使用存储过程 899
27.6 用户定义的函数 900
27.6.1 创建用户定义的函数 900
27.6.2 使用用户定义的函数 901
27.7 触发器 901
27.7.1 创建触发器 902
27.7.2 使用触发器 903
27.8 XML数据类型 903
27.8.1 包含XML数据的表 904
27.8.2 数据的查询 906
27.8.3 XML数据修改语言(XML DML) 908
27.8.4 XML索引 909
27.8.5 强类型化的XML 910
27.9 小结 911
下卷 915
第Ⅴ部分 显示 915
第28章 Windows窗体 915
28.1 创建Windows窗体应用程序 915
28.2 Control类 921
28.2.1 大小和位置 922
28.2.2 外观 923
28.2.3 用户交互操作 924
28.2.4 Windows功能 925
28.2.5 杂项功能 925
28.3 标准控件和组件 925
28.3.1 Button控件 926
28.3.2 CheckBox控件 927
28.3.3 RadioButton控件 927
28.3.4 ComboBox控件、ListBox控件和CheckedListBox控件 928
28.3.5 DateTimePicker控件 930
28.3.6 ErrorProvider组件 930
28.3.7 HelpProvider组件 932
28.3.8 ImageList组件 932
28.3.9 Label控件 932
28.3.10 ListView控件 933
28.3.11 PictureBox控件 935
28.3.12 ProgressBar控件 935
28.3.13 TextBox控件、RichTextBox控件与MaskedTextBox控件 935
28.3.14 Panel控件 937
28.3.15 FlowLayoutPanel和TableLayoutPanel控件 937
28.3.16 SplitContainer控件 938
28.3.17 TabControl控件和TabPages控件 938
28.3.18 ToolStrip控件 938
28.3.19 MenuStrip控件 941
28.3.20 ContextMenuStrip控件 942
28.3.21 ToolStripMenuItem控件 942
28.3.22 ToolStripManager类 942
28.3.23 ToolStripContainer控件 942
28.4 窗体 943
28.4.1 Form类 943
28.4.2 多文档界面 948
28.4.3 定制控件 949
28.5 小结 960
第29章 查看.NET数据 961
29.1 DataGridView控件 961
29.1.1 显示列表数据 961
29.1.2 数据源 963
29.2 DataGridView类的 974
29.3 数据绑定 974
29.3.1 简单的绑定 975
29.3.2 数据绑定对象 975
29.4 Visual Studio.NET和数据访问 979
29.4.1 创建一个连接 980
29.4.2 选择数据 983
29.4.3 更新数据源 983
29.4.4 其他常见的要求 984
29.5 小结 992
第30章 使用GDI+绘图 993
30.1 理解绘图规则 993
30.1.1 GDI和GDI+ 994
30.1.2 绘制图形 995
30.1.3 使用OnPaint()绘制图形 998
30.1.4 使用剪切区域 999
30.2 测量坐标和区域 1001
30.2.1 Point和PointF结构 1001
30.2.2 Size和SizeF结构 1003
30.2.3 Rectangle和RectangleF结构 1004
30.2.4 Region 1005
30.3 调试须知 1006
30.4 绘制可滚动的窗口 1007
30.5 世界、页面和设备坐标 1011
30.6 颜色 1012
30.6.1 红绿蓝(RGB)值 1012
30.6.2 命名的颜色 1013
30.6.3 图形显示模式和安全的调色板 1014
30.6.4 安全调色板 1014
30.7 画笔和钢笔 1015
30.7.1 画笔 1015
30.7.2 钢笔 1016
30.8 绘制图形和线条 1016
30.9 显示图像 1019
30.10 处理图像时所涉及到的问题 1021
30.11 绘制文本 1022
30.12 简单的文本示例 1022
30.13 字体和字体系列 1023
30.14 示例:枚举字体系列 1025
30.15 编辑文本文档:CapsEditor示例 1027
30.15.1 Invalidate()方法 1031
30.15.2 计算项和文档的大小 1032
30.15.3 OnPaint() 1034
30.15.4 坐标转换 1035
30.15.5 响应用户的输入 1036
30.16 打印 1039
30.17 小结 1045
第31章 Windows Presentation-Foundation 1047
31.1 概述 1047
31.1.1 XAML 1048
31.1.2 设计人员和开发人员的合作 1052
31.1.3 类层次结构 1053
31.1.4 命名空间 1055
31.2 形状 1056
31.3 控件 1059
31.3.1 简单控件 1059
31.3.2 内容控件 1060
31.3.3 有标题的内容控件 1062
31.3.4 项控件 1063
31.3.5 带标题的项控件 1063
31.4 布局 1063
31.4.1 StackPanel 1064
31.4.2 WrapPanel 1064
31.4.3 Canvas 1065
31.4.4 DockPanel 1066
31.4.5 Grid 1067
31.5 事件处理 1068
31.6 命令 1069
31.7 样式、模板和资源 1072
31.7.1 样式 1073
31.7.2 资源 1074
31.7.3 创建列表框的样式 1087
31.8 动画 1093
31.9 数据绑定 1099
31.9.1 概述 1099
31.9.2 用XAML绑定 1100
13.9.3 简单对象的绑定 1102
31.9.4 对象数据提供程序 1105
31.9.5 列表绑定 1107
31.9.6 绑定到XML上 1114
31.10 Windows窗体集成 1117
31.10.1 Windows窗体中的WPF控件 1117
31.10.2 WPF应用程序中的Windows窗体控件 1119
31.11 小结 1121
第32章 ASP.NET页面 1123
32.1 ASP.NET概述 1123
32.2 ASP.NET Web窗体 1125
32.2.1 ASP.NET代码模型 1128
32.2.2 ASP.NET服务器控件 1129
32.3 ADO.NET和数据绑定 1143
32.3.1 更新会议登记应用程序 1144
32.3.2 数据绑定的更多内容 1151
32.4 应用程序配置 1156
32.5 小结 1158
第33章 ASP.NET开发 1159
33.1 定制控件 1159
33.1.1 用户控件 1160
33.1.2 PCSDemoSite中的用户控件 1167
33.1.3 定制控件 1167
33.2 Master页面 1171
33.2.1 在Web页面中访问Master页面 1173
33.2.2 PCSDemoSite中的Master页面 1173
33.3 站点导航 1175
33.4 安全性 1178
33.4.1 使用安全向导添加Forms身份验证功能 1179
33.4.2 实现登录系统 1182
33.4.3 Web登录服务器控件 1183
33.4.4 保护目录 1183
33.4.5 PCSDemoSite中的安全性 1184
33.5 主题 1186
33.5.1 把主题应用于页面 1186
33.5.2 定义主题 1187
33.5.3 PCSDemoSite中的主题 1188
33.6 Web Parts 1191
33.6.1 Web Parts应用程序组件 1191
33.6.2 Web Parts示例 1193
33.7 小结 1199
第34章 ASP.NET AJAX 1201
34.1 Ajax的概念 1202
34.2 ASP.NET AJAX 1203
34.2.1 核心功能 1204
34.2.2 ASP.NET AJAX Control Toolkit 1206
34.2.3 ASP.NET 2.0 AJAX Futures CTP 1207
34.3 支持ASP.NET AJAX的网站 1207
34.3.1 支持AJAX的网站示例 1207
34.3.2 支持ASP.NET AJAX的网站配置 1211
34.3.3 添加ASP.NET AJAX功能 1215
34.3.4 使用AJAX库 1222
34.4 小结 1231
第Ⅵ部分 通信 1235
第35章 访问Internet 1235
35.1 WebClient类 1235
35.1.1 下载文件 1236
35.1.2 基本的Web客户示例 1236
35.1.3 上传文件 1237
35.2 WebRequest类和WebResponse类 1238
35.3 把输出结果显示为HTML页面 1241
35.3.1 在应用程序中进行简单的Web浏览 1241
35.3.2 启动Internet Explorer实例 1243
35.3.3 给应用程序提供更多的IE类型特性 1244
35.3.4 使用WebBrowser控件打印 1249
35.3.5 显示请求页面的代码 1250
35.3.6 WebRequest和WebResponse的层次结构 1251
35.4 实用工具类 1252
35.4.1 URI 1252
35.4.2 IP地址和DNS名称 1253
35.5 较低层的协议 1255
35.6 小结 1264
第36章 Web服务和ASP.NET 1267
36.1 SOAP 1267
36.2 WSDL 1269
36.3 Web服务 1270
36.3.1 创建Web服务 1270
36.3.2 使用Web服务 1274
36.4 扩充会议登记示例 1276
36.4.1 会议登记Web服务 1276
36.4.2 会议登记客户程序 1281
36.5 使用SOAP标题交换数据 1285
36.6 小结 1290
第37章 .NET Remoting 1291
37.1 .NET Remoting的含义 1291
CLR Object Remoting 1293
37.2 .NET Remoting概述 1293
37.3 环境 1296
37.3.1 激活 1296
37.3.2 特性和属性 1297
37.3.3 环境之间的通信 1297
37.4 远程对象、客户机和服务器 1297
37.4.1 远程对象 1298
37.4.2 简单的服务器 1298
37.4.3 简单的客户机 1299
37.5 .NET Remoting体系结构 1301
37.5.1 信道 1301
37.5.2 格式标识符 1305
37.5.3 ChannelServices和RemotingConfiguration 1306
37.5.4 对象的激活 1307
37.5.5 消息接收器 1311
37.5.6 在远程方法中传递对象 1311
37.5.7 生存期管理 1316
37.6 .NET Remoting的其他特性 1319
37.6.1 配置文件 1319
37.6.2 利用ASP.NET驻留远程服务器 1328
37.6.3 类、接口和Soapsuds 1329
37.6.4 异步远程调用 1330
37.6.5 .NET Remoting的安全性 1332
37.6.6 远程调用和事件 1333
37.6.7 调用环境 1339
37.7 小结 1341
第38章 Enterprise Services 1343
38.1 概述 1343
38.1.1 Enterprise Services简史 1344
38.1.2 使用Enterprise Services的场合 1344
38.1.3 环境 1345
38.1.4 自动的事务处理 1345
38.1.5 分布式事务处理 1346
38.1.6 对象池 1346
38.1.7 基于角色的安全性 1346
38.1.8 排队的组件 1346
38.1.9 松散藕合的事件 1347
38.2 创建简单的COM+应用程序 1347
38.2.1 类ServicedComponent 1347
38.2.2 标记程序集 1348
38.2.3 程序集的属性 1348
38.2.4 创建组件 1349
38.3 部署 1350
38.3.1 自动部署 1350
38.3.2 手工部署 1351
38.3.3 创建安装软件包 1351
38.4 Component Services浏览器 1352
38.5 客户应用程序 1354
38.6 事务处理 1355
38.6.1 事务处理的属性 1355
38.6.2 事务处理的结果 1356
38.7 示例应用程序 1356
38.7.1 实体类 1357
38.7.2 OrderControl组件 1360
38.7.3 OrderData组件 1361
38.7.4 OrderLineData组件 1364
38.7.5 客户应用程序 1365
38.8 集成WCF和Enterprise Services 1366
38.8.1 WCF服务Fa?ade 1366
38.8.2 客户程序 1369
38.9 小结 1370
第39章 消息队列 1371
39.1 概述 1371
39.1.1 使用Message Queuing的场合 1372
39.1.2 Message Queuing特性 1373
39.2 Message Queuing产品 1373
39.3 Message Queuing结构 1374
39.3.1 消息 1374
39.3.2 消息队列 1375
39.4 Message Queuing管理工具 1375
39.4.1 创建消息队列 1376
39.4.2 消息队列属性 1376
39.5 Message Queuing的编程实现 1377
39.5.1 创建消息队列 1377
39.5.2 查找队列 1378
39.5.3 打开已知的队列 1379
39.5.4 发送消息 1380
39.5.5 接收消息 1383
39.6 课程订单应用程序 1385
39.6.1 课程订单类库 1385
39.6.2 课程订单消息发送程序 1388
39.6.3 发送优先级和可恢复的消息 1389
39.6.4 课程订单消息接收程序 1390
39.7 接收结果 1393
39.7.1 确认队列 1393
39.7.2 响应队列 1394
39.8 事务队列 1395
39.9 消息队列的安装 1396
39.10 小结 1396
第40章 Windows Communication Foundation 1397
40.1 概述 1397
40.2 简单的服务和客户 1398
40.2.1 服务合同 1401
40.2.2 服务的实现 1402
40.2.3 服务主机 1403
40.2.4 客户程序 1405
40.3 合同 1408
40.3.1 服务合同 1408
40.3.2 数据合同 1409
40.3.3 消息合同 1410
40.4 服务的实现 1411
40.5 绑定 1416
40.6 主机 1418
40.7 客户程序 1419
40.8 双向通信 1421
40.9 小结 1423
第41章 Windows Workflow Foundation 1425
41.1 Hello World示例 1425
41.2 活动 1427
41.2.1 IfElseActivity 1427
41.2.2 ParallelActivity 1429
41.2.3 CallExternalMethod-Activity 1430
41.2.4 DelayActivity 1431
41.2.5 ListenActivity 1431
41.2.6 活动的执行模型 1432
41.3 定制的活动 1433
41.3.1 活动的有效性验证 1435
41.3.2 主题和设计器 1436
41.3.3 ActivityToolboxItem和图标 1438
41.3.4 定制的复合活动 1440
41.4 工作流 1447
41.4.1 系列工作流 1447
41.4.2 状态机工作流 1447
41.4.3 给工作流传送参数 1450
41.4.4 从工作流中返回结果 1450
41.4.5 将参数绑定到活动上 1451
41.5 工作流运行库 1452
41.6 工作流服务 1453
41.6.1 持续服务 1455
41.6.2 跟踪服务 1456
41.6.3 定制服务 1458
41.7 保存工作流 1459
41.8 工作流设计器 1461
41.9 小结 1461
41.10 下载信息 1461
第42章 目录服务 1463
42.1 Active Directory的体系结构 1464
42.1.1 特性 1464
42.1.2 Active Directory的概念 1464
42.1.3 Active Directory数据的特性 1468
42.1.4 模式 1468
42.2 Active Directory的管理工具 1469
42.2.1 Active Directory Uses and Computers工具 1470
42.2.2 ADSI Edit工具 1471
42.3 Active Directory编程 1472
42.3.1 System.DirectoryServices命名空间中的类 1473
42.3.2 绑定 1473
42.3.3 获取目录项 1477
42.3.4 对象集合 1478
42.3.5 缓存 1480
42.3.6 创建新对象 1480
42.3.7 更新目录项 1481
42.3.8 访问内部的ADSI对象 1482
42.3.9 在Active Directory中搜索 1483
42.4 搜索用户对象 1486
42.4.1 用户界面 1486
42.4.2 获取模式命名环境 1487
42.4.3 获取User类的属性名 1488
42.4.4 搜索用户对象 1490
42.5 DSML 1491
42.5.1 命名空间System.-DirectoryServices.-Protocols中的类 1492
42.5.2 用DSML搜索Active-Directory对象 1492
42.6 小结 1494
第Ⅶ部分 其他信息 1497
第43章 C#、Visual Basic和C++/CLI 1497
43.1 命名空间 1498
43.2 定义类型 1499
43.2.1 引用类型 1499
43.2.2 值类型 1500
43.2.3 接口 1501
43.2.4 枚举 1502
43.3 方法 1503
43.3.1 方法的参数和返回类型 1503
43.3.2 参数的修饰符 1504
43.3.3 构造函数 1505
43.3.4 属性 1507
43.4 静态成员 1508
43.5 数组 1509
43.6 控制语句 1510
43.6.1 if语句 1510
43.6.2 条件操作符 1510
43.6.3 switch语句 1511
43.7 循环 1512
43.7.1 for语句 1512
43.7.2 while和do..while语句 1513
43.7.3 foreach语句 1514
43.8 异常处理 1514
43.9 继承 1516
43.9.1 访问修饰符 1516
43.9.2 关键字 1516
43.10 资源管理 1518
43.10.1 IDisposable接口的实现 1518
43.10.2 using语句 1519
43.10.3 重写Finalize() 1519
43.11 委托 1521
43.12 事件 1522
43.13 泛型 1524
43.14 C++/CLI混合内置代码和托管代码 1526
43.15 小结 1527
第44章 Windows Vista 1529
44.1 Vista Bridge 1529
44.2 用户账户控制 1530
44.2.1 需要管理权限的应用程序 1530
44.2.2 保护图标 1532
44.3 目录结构 1533
44.4 新控件和对话框 1535
44.4.1 命令链接 1535
44.4.2 任务对话框 1536
44.4.3 文件对话框 1539
44.5 搜索 1541
44.5.1 OLE DB提供程序 1543
44.5.2 高级查询语法 1546
44.6 小结 1548
第45章 Language Integrated Query 1549
45.1 传统的查询 1549
45.1.1 对象列表中的查询 1550
45.1.2 数据库查询 1553
45.1.3 XML 1554
45.2 LINQ查询 1557
45.2.1 对象列表 1557
45.2.2 关系数据 1557
45.2.3 XML 1559
45.3 查询表达式 1560
45.4 扩展方法 1561
45.5 标准的查询操作符 1562
45.6 λ表达式 1567
45.7 推迟查询的执行 1568
45.8 表达式树 1570
45.9 类型推断 1571
45.10 对象和集合初始化器 1571
45.11 匿名类型 1573
45.12 小结 1573