C#高级编程(第4版)

C#高级编程(第4版)
作 者: 内格尔 李敏波
出版社: 清华大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C#
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍李敏波,01年1月获清华大学工学博士,随后在新加坡国立大学从事协同产品设计与门户的博士后研究。02年11月至今 在金蝶软件(中国)公司中央研究院担任高级研究员。现任复旦大学软件学院零售与分销管理系统研究中心的副主任,从事教学和科研工作。

内容简介

C#经典名著!也是Wrox红皮书中最畅销的品种之一,从第一版开始就名满天下:其第3版被中华读书报、CSDN、《程序员》等机构评选为2005年最权威的十大IT图书之一(第2名);在中国版协、中国出版科学研究所、(出版参考、杂志组织的“2005年度输出版、引进版优秀图书”评选活动中获得“2005年度引进版科技类优秀图书”奖。第4版面向C#2005,在全面展示.NET新特性的同时继续完善原有的内容,是有一些C#基础知识的学习者或者想迁移到C#的其他程序员全面掌握C#的首选教程。C#和.NET全面革新了编写程序的方式。本书以最新的.NET Framework 2.0和Visual Studio 2005为基础,全面介绍了C#编程的工具,提供了理解.NET体系结构的工作原理所必需的背景知识。本书首先探讨了C#的基础知识,包括基本语法、数据类型和面向对象的特性。接着阐述了如何把该语言应用于各种使用相关技术的应用程序,例如数据库访问和高级绘图技术。这种方式有助于对c#语言的各个方面进行深入细致的理解,以专业人员的方式开始编程。本书涵盖的内容有助于编写动态Web页面、XML Web服务、分布式应用程序的组件,以及windows桌面应用程序等。本书适用于已具有C++、Visual Basic或J++等编程经验的开发人员。以及了解.NET 1.0,但准备迁移到.NET 2.0和Visual Studio 2005的程序员。

图书目录

第Ⅰ部分 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