第Ⅰ部分 C# 语 言
第1章 .NET体系结构 3
1.1 C#与.NET的关系 3
1.2 公共语言运行库 3
1.3 详细介绍中间语言 6
1.3.1 面向对象和接口的支持 7
1.3.2 相异值类型和引用类型 8
1.3.3 强数据类型 8
1.3.4 通过异常方法处理错误 14
1.3.5 特性的使用 14
1.4 程序集 14
1.4.1 私有程序集 15
1.4.2 共享程序集 16
1.4.3 反射 16
1.5 .NET Framework类 16
1.6 命名空间 17
1.7 用C#创建.NET应用程序 18
1.7.1 创建ASP.NET应用程序 18
1.7.2 创建Windows窗体 20
1.7.3 Windows控件 20
1.7.4 Windows服务 20
1.8 C#在.NET企业体系结构中
的作用 20
1.9 小结 22
第2章 C#基础 23
2.1 引言 23
2.2 第一个C#程序 23
2.2.1 代码 24
2.2.2 编译并运行程序 24
2.2.3 详细介绍 25
2.3 变量 27
2.3.1 变量的初始化 27
2.3.2 变量的作用域 28
2.3.3 常量 31
2.4 预定义数据类型 32
2.4.1 值类型和引用类型 32
2.4.2 CTS类型 33
2.4.3 预定义的值类型 33
2.4.4 预定义的引用类型 36
2.5 流控制 39
2.5.1 条件语句 39
2.5.2 循环 43
2.5.3 跳转语句 46
2.6 枚举 47
2.7 数组 49
2.8 命名空间 50
2.8.1 using语句 51
2.8.2 命名空间的别名 52
2.9 Main()方法 53
2.9.1 多个Main()方法 53
2.9.2 给Main()方法传送参数 54
2.10 有关编译C#文件的更多内容 55
2.11 控制台I/O 56
2.12 使用注释 58
2.12.1 源文件中的内部注释 58
2.12.2 XML文档说明 59
2.13 C#预处理器指令 61
2.13.1 #define和 #undef 61
2.13.2 #if, #elif, #else和#endif 62
2.13.3 #warning和# error 63
2.13.4 #region和#endregion 63
2.13.5 #line 64
2.13.6 #pragma 64
2.14 C#编程规则 64
2.14.1 用于标识符的规则 64
2.14.2 用法约定 65
2.15 小结 71
第3章 对象和类型 72
3.1 类和结构 72
3.2 类成员 73
3.2.1 数据成员 73
3.2.2 函数成员 74
3.2.3 只读字段 88
3.3 结构 89
3.3.1 结构是值类型 90
3.3.2 结构和继承 91
3.3.3 结构的构造函数 91
3.4 部分类 92
3.5 静态类 94
3.6 Object类 94
3.6.1 System.Object方法 94
3.6.2 ToString()方法 95
3.7 小结 97
第4章 继承 98
4.1 继承的类型 98
4.1.1 实现继承和接口继承 98
4.1.2 多重继承 99
4.1.3 结构和类 99
4.2 实现继承 99
4.2.1 虚方法 100
4.2.2 隐藏方法 101
4.2.3 调用函数的基类版本 102
4.2.4 抽象类和抽象函数 103
4.2.5 密封类和密封方法 103
4.2.6 派生类的构造函数 104
4.3 修饰符 109
4.3.1 可见性修饰符 109
4.3.2 其他修饰符 110
4.4 接口 111
4.4.1 定义和实现接口 112
4.4.2 派生的接口 116
4.5 小结 118
第5章 运算符和类型强制转换 119
5.1 运算符 119
5.1.1 运算符的简化操作 120
5.1.2 三元运算符 121
5.1.3 checked和unchecked运算符 122
5.1.4 is运算符 123
5.1.5 as运算符 123
5.1.6 sizeof运算符 123
5.1.7 typeof运算符 124
5.1.8 可空类型和运算符 124
5.1.9 空接合运算符 124
5.1.10 运算符的优先级 125
5.2 类型的安全性 125
5.2.1 类型转换 126
5.2.2 装箱和拆箱 130
5.3 对象的相等比较 130
5.3.1 引用类型的相等比较 131
5.3.2 值类型的相等比较 132
5.4 运算符重载 132
5.4.1 运算符的工作方式 133
5.4.2 运算符重载的示例:
Vector结构 134
5.5 用户定义的数据类型转换 141
5.5.1 执行用户定义的类型转换 142
5.5.2 多重数据类型转换 149
5.6 小结 152
第6章 委托和事件 153
6.1 委托 153
6.1.1 在C#中声明委托 154
6.1.2 在C#中使用委托 155
6.2 匿名方法 158
6.2.1 简单的委托示例 159
6.2.2 BubbleSorter示例 161
6.2.3 多播委托 164
6.3 事件 166
6.3.1 从客户的角度讨论事件 167
6.3.2 生成事件 169
6.4 小结 173
第7章 内存管理和指针 174
7.1 后台内存管理 174
7.1.1 值数据类型 174
7.1.2 引用数据类型 176
7.1.3 垃圾收集 178
7.2 释放未托管的资源 179
7.2.1 析构函数 179
7.2.2 IDisposable接口 180
7.2.3 实现IDisposable接口和
析构函数 182
7.3 不安全的代码 183
7.3.1 指针 183
7.3.2 指针示例PointerPlayaround 193
7.3.3 使用指针优化性能 197
7.4 小结 201
第8章 字符串和正则表达式 202
8.1 System.String类 202
8.1.1 创建字符串 203
8.1.2 StringBuilder成员 206
8.1.3 格式化字符串 207
8.2 正则表达式 213
8.2.1 正则表达式概述 213
8.2.2 RegularExpressionsPlayaround
示例 214
8.2.3 显示结果 216
8.2.4 匹配、组合和捕获 218
8.3 小结 220
第9章 集合 221
9.1 对象组 221
9.1.1 集合 222
9.1.2 数组列表 225
9.1.3 Stack类 229
9.1.4 Queue类 231
9.1.5 SortedList类 232
9.1.6 字典和散列表 234
9.1.7 泛型 243
9.2 小结 244
第10章 泛型 245
10.1 概述 245
10.1.1 性能 245
10.1.2 类型安全 246
10.1.3 二进制代码的重用 247
10.1.4 代码的扩展 247
10.1.5 命名约定 248
10.2 泛型集合类 248
10.2.1 泛型集合概述 248
10.2.2 使用List类 251
10.2.3 使用Queue类 256
10.2.4 使用LinkedList类 260
10.3 创建定制的泛型类 265
10.3.1 默认值 267
10.3.2 约束 267
10.4 泛型方法 270
10.5 泛型委托 272
10.6 Framework的其他泛型类型 274
10.6.1 结构Nullable 274
10.6.2 EventHandler
276
10.6.3 ArraySegment 276
10.7 小结 277
第11章 反射 278
11.1 定制特性 278
11.1.1 编写定制特性 279
11.1.2 定制特性示例:
WhatsNewAttributes 282
11.2 反射 286
11.2.1 System.Type类 286
11.2.2 TypeView示例 288
11.2.3 Assembly类 291
11.2.4 完成WhatsNewAttributes
示例 292
11.3 小结 296
第12章 错误和异常 297
12.1 错误和异常处理 297
12.1.1 异常类 297
12.1.2 捕获异常 299
12.1.3 用户定义的异常类 308
12.2 小结 316
第13章 线程 317
13.1 线程 317
13.2 多线程应用程序 318
13.3 线程的处理 319
13.3.1 ThreadPlayaround示例 322
13.3.2 线程的优先级 325
13.3.3 同步 326
13.4 使用ThreadPool创建线程 330
13.5 小结 334
第Ⅱ部分 .NET 环 境
第14章 Visual Studio 2005 337
14.1 使用Visual Studio 2005 337
14.1.1 创建项目 341
14.1.2 解决方案和项目 347
14.1.3 Windows应用程序代码 349
14.1.4 读取Visual Studio 6项目 350
14.1.5 项目的浏览和编码 350
14.1.6 生成项目 360
14.1.7 调试 363
14.2 修订功能 366
14.3 小结 368
第15章 程序集 369
15.1 程序集的含义 369
15.1.1 DLL Hell的解决方案 370
15.1.2 程序集的特性 370
15.1.3 应用程序域和程序集 371
15.2 程序集的结构 374
15.2.1 程序集的清单 374
15.2.2 命名空间、程序集和组件 375
15.2.3 私有程序集和共享程序集 375
15.2.4 查看程序集 375
15.2.5 构建程序集 376
15.3 跨语言支持 380
15.3.1 CTS和CLS 380
15.3.2 语言无关性 381
15.3.3 CLS要求 389
15.4 全局程序集缓存 391
15.4.1 本机图像生成器 391
15.4.2 全局程序集缓存查看器 392
15.4.3 全局程序集缓存工具
(gacutil.exe) 393
15.5 创建共享程序集 393
15.5.1 共享程序集名 393
15.5.2 创建共享程序集 395
15.6 配置 400
15.6.1 配置类别 400
15.6.2 版本问题 401
15.6.3 配置目录 409
15.7 小结 411
第16章 .NET的安全性 412
16.1 代码访问的安全性 412
16.1.1 代码组 413
16.1.2 代码访问权限和权限集 419
16.1.3 策略的级别:Machine、
User和Enterprise 423
16.2 对Framework中安全性的
支持 425
16.2.1 要求权限 426
16.2.2 请求权限 427
16.2.3 隐式的权限 430
16.2.4 拒绝权限 431
16.2.5 断言权限 432
16.2.6 创建代码访问权限 433
16.2.7 声明的安全性 434
16.3 安全策略的管理 435
16.3.1 安全配置文件 435
16.3.2 代码组和权限的管理 438
16.3.3 安全性的启用和禁用 438
16.3.4 重置安全策略 439
16.3.5 代码组的创建 439
16.3.6 代码组的删除 440
16.3.7 代码组权限的更改 440
16.3.8 权限集的创建和应用 441
16.3.9 使用强名发布代码 443
16.3.10 使用证书发布代码 445
16.3.11 区域的管理 449
16.4 基于角色的安全性 451
16.4.1 Principal 451
16.4.2 Windows Principal 452
16.4.3 角色 454
16.4.4 声明基于角色的安全性 454
16.5 小结 455
第17章 本地化 456
17.1 System.Globalization
命名空间 456
17.1.1 Unicode问题 456
17.1.2 文化和区域 457
17.1.3 使用文化 461
17.1.4 排序 466
17.2 资源 467
17.2.1 创建资源文件 468
17.2.2 资源文件生成器 468
17.2.3 ResourceWriter 468
17.2.4 使用资源文件 469
17.2.5 System.Resources
命名空间 474
17.3 使用Visual Studio的本地化
示例 475
17.3.1 编程修改文化 480
17.3.2 使用定制资源文件 481
17.3.3 资源的自动回退 482
17.3.4 外包翻译 482
17.4 用ASP.NET本地化 483
17.5 定制的资源读取器 485
17.5.1 创建DatabaseResource
Reader类 485
17.5.2 创建DatabaseResource
Set类 487
17.5.3 创建DatabaseResource
Manager类 487
17.5.4 DatabaseResourceReader的
客户应用程序 488
17.6 创建定制文化 489
17.7 小结 489
第18章 部署 490
18.1 部署的设计 490
18.2 部署选项 490
18.2.1 Xcopy实用工具 491
18.2.2 Copy Web工具 491
18.2.3 发布Web站点 491
18.2.4 部署项目 491
18.2.5 ClickOnce 491
18.3 部署的要求 491
18.4 简单的部署 492
18.4.1 Xcopy部署 493
18.4.2 Xcopy和Web应用程序 493
18.4.3 Copy Web工具 493
18.4.4 发布Web站点 494
18.5 Installer项目 494
18.5.1 Windows Installer 495
18.5.2 创建安装程序 495
18.6 ClickOnce 504
18.6.1 ClickOnce操作 504
18.6.2 发布应用程序 504
18.6.3 ClickOnce设置 505
18.6.4 应用程序缓存 505
18.6.5 安全性 506
18.6.6 高级选项 506
18.7 小结 511
第Ⅲ部分 数 据
第19章 .NET数据访问 515
19.1 ADO.NET概述 515
19.1.1 命名空间 516
19.1.2 共享类 516
19.1.3 数据库特定的类 516
19.2 使用数据库连接 517
19.2.1 管理连接字符串 518
19.2.2 高效地使用连接 520
19.2.3 事务处理 522
19.3 命令 524
19.3.1 执行命令 525
19.3.2 调用存储过程 528
19.4 快速数据访问:数据读取器 531
19.5 管理数据和关系:DataSet类 534
19.5.1 数据表 535
19.5.2 数据列 536
19.5.3 数据关系 541
19.5.4 数据约束 542
19.6 XML模式 544
19.7 填充数据集 552
19.7.1 用数据适配器来填充
DataSet 552
19.7.2 从XML中给数据集填充
数据 553
19.8 保存对数据集的修改 553
19.8.1 通过数据适配器进行更新 554
19.8.2 写入XML输出结果 556
19.9 使用ADO.NET 558
19.9.1 分层开发 558
19.9.2 生成SQL Server的键 559
19.9.3 命名约定 561
19.10 小结 562
第20章 .NET编程和
SQL Server 2005 564
20.1 .NET运行库的主机 564
20.2 Microsoft.SqlServer.Server 565
20.3 用户定义的类型 566
20.3.1 创建UDT 566
20.3.2 使用UDT 572
20.3.3 在客户端代码中使用UDT 573
20.4 用户定义的合计函数 574
20.4.1 创建用户定义的合计函数 574
20.4.2 使用用户定义的合计函数 575
20.5 存储过程 576
20.5.1 创建存储过程 576
20.5.2 使用存储过程 577
20.6 用户定义的函数 578
20.6.1 创建用户定义的函数 578
20.6.2 使用用户定义的函数 579
20.7 触发器 579
20.7.1 创建触发器 580
20.7.2 使用触发器 581
20.8 XML数据类型 581
20.8.1 包含XML数据的表 582
20.8.2 数据的查询 584
20.8.3 XML数据修改语言
(XML DML) 585
20.8.4 XML索引 586
20.8.5 强类型化的XML 587
20.9 小结 588
第21章 处理XML 589
21.1 .NET支持的XML标准 589
21.2 System.Xml命名空间 590
21.3 在.NET中使用MSXML 591
21.4 使用System.Xml类 593
21.5 读写流格式的XML 593
21.5.1 使用 XmlReader类 594
21.5.2 使用XmlReader类进行
验证 597
21.5.3 使用XmlWriter类 599
21.6 在.NET中使用DOM 601
21.7 使用XPathNavigator 607
21.7.1 System.Xml.Xpath
命名空间 607
21.7.2 System.Xml.Xsl命名空间 612
21.8 XML和ADO.NET 617
21.8.1 将ADO.NET数据转换为
XML文档 617
21.8.2 把XML文档转换为
ADO.NET数据 624
21.8.3 读写DiffGram 626
21.9 在XML中串行化对象 629
21.10 小结 639
第22章 使用Active Directory 640
22.1 Active Directory的体系结构 640
22.1.1 特性 641
22.1.2 Active Directory的概念 641
22.1.3 Active Directory数据的
特性 645
22.1.4 模式 645
22.2 Active Directory的管理工具 646
22.2.1 Active Directory Users and
Computers工具 646
22.2.2 ADSI Edit工具 647
22.3 Active Directory编程 648
22.3.1 System.DirectoryServices命名
空间中的类 649
22.3.2 绑定 650
22.3.3 获取目录项 654
22.3.4 对象集合 655
22.3.5 缓存 656
22.3.6 创建新对象 657
22.3.7 更新目录项 658
22.3.8 访问内部的ADSI对象 658
22.3.9 在Active Directory中搜索 660
22.4 搜索用户对象 663
22.4.1 用户界面 663
22.4.2 获取模式命名环境 664
22.4.3 获取User类的属性名 665
22.4.4 搜索用户对象 666
22.5 DSML 668
22.5.1 命名空间
System.DirectoryServices.
Protocols中的类 668
22.5.2 用DSML搜索Active
Directory对象 669
22.6 小结 671
第Ⅳ部分 Windows应用程序
第23章 Windows窗体 675
23.1 创建Windows窗体应用程序 675
23.2 Control类 681
23.2.1 大小和位置 682
23.2.2 外观 683
23.2.3 用户交互操作 683
23.2.4 Windows功能 684
23.2.5 杂项功能 685
23.3 标准控件和组件 685
23.3.1 Button控件 686
23.3.2 CheckBox控件 686
23.3.3 RadioButton控件 687
23.3.4 ComboBox控件、ListBox
控件和CheckedListBox控件 687
23.3.5 DateTimePicker控件 690
23.3.6 ErrorProvider组件 690
23.3.7 HelpProvider组件 691
23.3.8 ImageList组件 692
23.3.9 Label控件 692
23.3.10 ListView控件 692
23.3.11 PictureBox控件 694
23.3.12 ProgressBar控件 695
23.3.13 TextBox控件、RichTextBox
控件与MaskedTextBox
控件 695
23.3.14 Panel控件 696
23.3.15 FlowLayoutPanel和
TableLayoutPanel控件 696
23.3.16 SplitContainer控件 697
23.3.17 TabControl控件和TabPages
控件 698
23.3.18 ToolStrip控件 698
23.3.19 MenuStrip控件 701
23.3.20 ContextMenuStrip控件 701
23.3.21 ToolStripMenuItem控件 701
23.3.22 ToolStripManager类 702
23.3.23 ToolStripContainer控件 702
23.4 窗体 702
23.4.1 Form类 703
23.4.2 多文档界面 708
23.4.3 定制控件 708
23.5 小结 721
第24章 查看.NET数据 722
24.1 DataGridView控件 722
24.1.1 显示列表数据 722
24.1.2 数据源 724
24.2 DataGridView类的层次结构 732
24.3 数据绑定 735
24.3.1 简单的绑定 735
24.3.2 数据绑定对象 735
24.4 Visual Studio.NET和
数据访问 739
24.4.1 创建一个连接 740
24.4.2 选择数据 742
24.4.3 更新数据源 743
24.4.4 构建模式 743
24.4.5 其他常见的要求 749
24.5 小结 757
第25章 使用GDI+绘图 758
25.1 理解绘图规则 758
25.1.1 GDI和GDI+ 758
25.1.2 绘制图形 760
25.1.3 使用OnPaint()绘制图形 763
25.1.4 使用剪切区域 764
25.2 测量坐标和区域 766
25.2.1 Point和PointF结构 766
25.2.2 Size和SizeF结构 767
25.2.3 Rectangle和RectangleF
结构 769
25.2.4 Region 770
25.3 调试须知 770
25.4 绘制可滚动的窗口 771
25.5 世界、页面和设备坐标 776
25.6 颜色 777
25.6.1 红绿蓝(RGB)值 777
25.6.2 命名的颜色 777
25.6.3 图形显示模式和安全的
调色板 778
25.6.4 安全调色板 779
25.7 画笔和钢笔 779
25.7.1 画笔 779
25.7.2 钢笔 780
25.8 绘制图形和线条 781
25.9 显示图像 783
25.10 处理图像时所涉及到的问题 785
25.11 绘制文本 786
25.12 简单的文本示例 787
25.13 字体和字体系列 788
25.14 示例:枚举字体系列 790
25.15 编辑文本文档:CapsEditor
示例 792
25.15.1 Invalidate()方法 796
25.15.2 计算项和文档的大小 797
25.15.3 OnPaint() 799
25.15.4 坐标转换 800
25.15.5 响应用户的输入 802
25.16 打印 805
25.17 小结 810
第Ⅴ部分 Web应用程序
第26章 ASP.NET页面 813
26.1 ASP.NET概述 813
26.2 ASP.NET Web窗体 814
26.2.1 ASP.NET代码模型 818
26.2.2 ASP.NET服务器控件 818
26.3 ADO.NET和数据绑定 833
26.3.1 更新会议登记应用程序 833
26.3.2 数据绑定的更多内容 840
26.4 应用程序配置 845
26.5 小结 847
第27章 ASP.NET开发 848
27.1 定制控件 848
27.1.1 用户控件 849
27.1.2 PCSDemoSite中的用户
控件 855
27.1.3 定制控件 856
27.2 Master页面 860
27.3 站点导航 864
27.4 安全性 867
27.4.1 使用安全向导添加Forms
身份验证功能 867
27.4.2 实现登录系统 870
27.4.3 Web 登录服务器控件 871
27.4.4 保护目录 872
27.4.5 PCSDemoSite中的安全性 872
27.5 主题 874
27.5.1 把主题应用于页面 875
27.5.2 定义主题 876
27.5.3 PCSDemoSite中的主题 876
27.6 小结 879
第Ⅵ部分 通 信
第28章 Web服务 883
28.1 SOAP 883
28.2 WSDL 885
28.3 Web服务 886
28.3.1 创建Web服务 886
28.3.2 使用Web服务 890
28.4 扩充会议登记示例 892
28.4.1 会议登记Web服务 892
28.4.2 会议登记客户程序 897
28.5 使用SOAP标题交换数据 901
28.6 小结 906
第29章 .NET Remoting 908
29.1 .NET Remoting的含义 908
29.1.1 应用程序类型和协议 909
29.1.2 CLR Object Remoting 909
29.2 .NET Remoting概述 910
29.3 环境 912
29.3.1 激活 913
29.3.2 特性和属性 913
29.3.3 环境之间的通信 914
29.4 远程对象、客户机和服务器 914
29.4.1 远程对象 914
29.4.2 简单的服务器 915
29.4.3 简单的客户机 916
29.5 .NET Remoting体系结构 917
29.5.1 信道 918
29.5.2 格式标识符 922
29.5.3 ChannelServices和
RemotingConfiguration 922
29.5.4 对象的激活 924
29.5.5 消息接收器 927
29.5.6 在远程方法中传递对象 928
29.5.7 生存期管理 933
29.6 .NET Remoting的其他特性 936
29.6.1 配置文件 936
29.6.2 利用ASP.NET驻留远程
服务器 946
29.6.3 类、接口和Soapsuds 948
29.6.4 异步远程调用 949
29.6.5 .NET Remoting的安全性 950
29.6.6 远程调用和事件 952
29.6.7 调用环境 958
29.7 小结 960
第30章 Enterprise Services 961
30.1 概述 961
30.1.1 Enterprise Services简史 961
30.1.2 使用Enterprise Services的
场合 962
30.1.3 环境 963
30.1.4 自动的事务处理 963
30.1.5 分布式事务处理 963
30.1.6 对象池 963
30.1.7 基于角色的安全性 964
30.1.8 排队的组件 964
30.1.9 松散藕合的事件 964
30.1.10 没有组件的服务 964
30.2 创建简单的COM+应用程序 965
30.2.1 类ServicedComponent 965
30.2.2 标记程序集 965
30.2.3 程序集的属性 965
30.2.4 创建组件 966
30.3 部署 967
30.3.1 自动部署 967
30.3.2 手工部署 968
30.3.3 创建安装软件包 968
30.4 Component Services浏览器 969
30.5 客户应用程序 971
30.6 事务处理 971
30.6.1 ACID属性 972
30.6.2 事务处理的属性 972
30.6.3 事务处理的结果 973
30.7 示例应用程序 973
30.7.1 实体类 974
30.7.2 OrderControl组件 978
30.7.3 OrderData组件 978
30.7.4 OrderLineData组件 981
30.7.5 客户应用程序 983
30.8 没有组件的服务 984
30.9 小结 986
第31章 消息队列 988
31.1 概述 988
31.1.1 使用Message Queuing
的场合 989
31.1.2 Message Queuing特性 990
31.2 Message Queuing产品 990
31.3 Message Queuing结构 991
31.3.1 消息 991
31.3.2 消息队列 992
31.4 Message Queuing管理工具 992
31.4.1 创建消息队列 992
31.4.2 消息队列属性 993
31.5 Message Queuing的编程实现 994
31.5.1 创建消息队列 994
31.5.2 查找队列 995
31.5.3 打开已知的队列 996
31.5.4 发送消息 997
31.5.5 接收消息 1000
31.6 课程订单应用程序 1002
31.6.1 课程订单类库 1002
31.6.2 课程订单消息发送程序 1005
31.6.3 发送优先级和可恢复
的消息 1006
31.6.4 课程订单消息接收程序 1007
31.7 接收结果 1010
31.7.1 确认队列 1011
31.7.2 响应队列 1012
31.8 事务队列 1012
31.9 消息队列的安装 1013
31.10 小结 1014
第32章 分布式编程的未来产品 1015
32.1 现有技术的问题 1015
32.2 Web服务 1016
32.2.1 安全性 1017
32.2.2 可靠性 1018
32.2.3 事务处理 1020
32.2.4 性能 1021
32.3 WCF概述 1023
32.4 用WCF编程 1025
32.4.1 契约 1025
32.4.2 服务程序的实现 1027
32.4.3 绑定 1028
32.4.4 主机 1030
32.4.5 客户程序 1031
32.5 准备使用WCF 1032
32.5.1 .NET Remoting 1032
32.5.2 ASP.NET Web服务 1033
32.5.3 Enterprise Services 1033
32.5.4 Message Queuing 1034
32.6 小结 1035
第Ⅶ部分 互 操 作 性
第33章 COM的互操作性 1039
33.1 .NET和COM 1039
33.1.1 元数据 1040
33.1.2 释放内存 1040
33.1.3 接口 1040
33.1.4 方法绑定 1042
33.1.5 数据类型 1042
33.1.6 注册 1042
33.1.7 线程 1043
33.1.8 错误处理 1044
33.1.9 事件处理 1045
33.2 编组 1045
33.3 在.NET客户程序中使用COM
组件 1046
33.3.1 创建COM组件 1046
33.3.2 创建Runtime Callable
Wrapper 1050
33.3.3 线程问题 1053
33.3.4 添加连接点 1053
33.3.5 在Windows窗体中使用
ActiveX控件 1055
33.3.6 在ASP.NET中使用COM
对象 1058
33.4 在COM客户程序中使用.NET
组件 1058
33.4.1 COM Callable Wrapper 1058
33.4.2 创建.NET组件 1059
33.4.3 创建类型库 1060
33.4.4 COM互操作特性 1062
33.4.5 COM注册 1065
33.4.6 创建COM客户程序 1066
33.4.7 添加连接点 1068
33.4.8 用sink对象创建
客户程序 1069
33.4.9 在Internet Explorer中运行
Windows窗体控件 1070
33.5 小结 1070
第Ⅷ部分 Windows基本服务
第34章 文件和注册表操作 1073
34.1 管理文件系统 1073
34.1.1 表示文件和文件夹的
.NET类 1074
34.1.2 Path类 1077
34.1.3 示例:文件浏览器 1077
34.2 移动、复制和删除文件 1082
34.2.1 FilePropertiesAndMovement
示例 1082
34.2.2 示例
FilePropertiesAndMovement
的代码 1083
34.3 读写文件 1087
34.3.1 读取文件 1087
34.3.2 写入文件 1089
34.3.3 流 1090
34.3.4 缓存的流 1092
34.3.5 读写二进制文件 1092
34.3.6 读写文本文件 1097
34.4 读取驱动器信息 1103
34.5 文件的安全性 1105
34.5.1 从文件中读取ACL 1106
34.5.2 从目录中读取ACL 1107
34.5.3 添加和删除文件中的
ACL项 1109
34.6 读写注册表 1110
34.6.1 注册表 1111
34.6.2 .NET注册表类 1112
34.6.3 SelfPlacingWindow示例 1115
34.7 小结 1121
第35章 访问Internet 1122
35.1 WebClient类 1122
35.1.1 下载文件 1123
35.1.2 基本的Web客户示例 1123
35.1.3 上传文件 1124
35.2 WebRequest类和WebResponse
类 1125
35.3 把输出结果显示为HTML
页面 1128
35.3.1 在应用程序中进行简单的
Web浏览 1128
35.3.2 启动Internet Explorer
实例 1130
35.3.3 给应用程序提供更多的IE
类型特性 1131
35.3.4 使用WebBrowser控件显示
文档 1137
35.3.5 使用WebBrowser
控件打印 1138
35.3.6 显示请求页面的代码 1138
35.3.7 WebRequest和WebResponse
的层次结构 1140
35.4 实用工具类 1140
35.4.1 URI 1140
35.4.2 IP地址和DNS名称 1141
35.5 较低层的协议 1144
35.6 小结 1150
第36章 Windows服务 1151
36.1 Windows服务 1151
36.2 Windows服务的体系结构 1152
36.2.1 服务程序 1152
36.2.2 服务控制程序 1153
36.2.3 服务配置程序 1154
36.3 System.ServiceProcess
命名空间 1154
36.4 创建Windows服务 1154
36.4.1 使用套接字的类库 1155
36.4.2 TcpClient示例 1159
36.4.3 Windows服务项目 1160
36.4.4 线程和服务 1166
36.4.5 服务的安装 1166
36.4.6 安装程序 1166
36.5 服务的监视和控制 1171
36.5.1 MMC计算机管理 1171
36.5.2 net.exe 1172
36.5.3 sc.exe 1173
36.5.4 Visual Studio Server
Explorer 1173
36.5.5 ServiceController类 1174
36.6 故障排除 1179
36.6.1 交互式服务 1180
36.6.2 事件日志 1181
36.6.3 性能监视 1186
36.7 电源事件 1190
36.8 小结 1191