Windows应用高级编程-C#编程篇
【作者】Christian Nagel Bill Evjen Jay Glynn等著 李敏波翻译 【出版社】清华大学出版社【ISBN】7302138036【出版日期】2006年10月C#经典名著!也是Wrox红皮书中最畅销的品种之一,从第一版开始就名满天下;其第3版被中华读书报、CSDN、《程序员》等机构评选为2005年最权威的十大IT图书之一(第2名);在中国版协、中国出版科学研究所、《出版参考》杂志组织的“2005年度输出版、引进版优秀图书”评选活动中获得“20 05年度引进版科技类优秀图书”奖。第4版面向C# 2005,在全面展示.NET新特性的同时继续完善原有的内容,是有一些C#基础知识的学习者或者想迁移到C#的其他程序员全面掌握C#的首选教程。C#和.NET全面革新了编写程序的方式。本书以最新的.NET Framework 2.0和Visual Studio 2005为基础,全面介绍了C#编程的工具,提供了理解.NET体系结构的工作原理所必需的背景知识。目 录 第Ⅰ部分 C# 语 言第1章 .NET体系结构 31.1 C#与.NET的关系 31.2 公共语言运行库 31.3 详细介绍中间语言 61.3.1 面向对象和接口的支持 71.3.2 相异值类型和引用类型 81.3.3 强数据类型 81.3.4 通过异常方法处理错误 141.3.5 特性的使用 141.4 程序集 141.4.1 私有程序集 151.4.2 共享程序集 161.4.3 反射 161.5 .NET Framework类 161.6 命名空间 171.7 用C#创建.NET应用程序 181.7.1 创建ASP.NET应用程序 181.7.2 创建Windows窗体 201.7.3 Windows控件 201.7.4 Windows服务 201.8 C#在.NET企业体系结构中的作用 201.9 小结 22第2章 C#基础 232.1 引言 232.2 第一个C#程序 232.2.1 代码 242.2.2 编译并运行程序 242.2.3 详细介绍 252.3 变量 272.3.1 变量的初始化 272.3.2 变量的作用域 282.3.3 常量 312.4 预定义数据类型 322.4.1 值类型和引用类型 322.4.2 CTS类型 332.4.3 预定义的值类型 332.4.4 预定义的引用类型 362.5 流控制 392.5.1 条件语句 392.5.2 循环 432.5.3 跳转语句 462.6 枚举 472.7 数组 492.8 命名空间 502.8.1 using语句 512.8.2 命名空间的别名 522.9 Main()方法 532.9.1 多个Main()方法 532.9.2 给Main()方法传送参数 542.10 有关编译C#文件的更多内容 552.11 控制台I/O 562.12 使用注释 582.12.1 源文件中的内部注释 582.12.2 XML文档说明 592.13 C#预处理器指令 612.13.1 #define和 #undef 612.13.2 #if, #elif, #else和#endif 622.13.3 #warning和# error 632.13.4 #region和#endregion 632.13.5 #line 642.13.6 #pragma 642.14 C#编程规则 642.14.1 用于标识符的规则 642.14.2 用法约定 652.15 小结 71第3章 对象和类型 723.1 类和结构 723.2 类成员 733.2.1 数据成员 733.2.2 函数成员 743.2.3 只读字段 883.3 结构 893.3.1 结构是值类型 903.3.2 结构和继承 913.3.3 结构的构造函数 913.4 部分类 923.5 静态类 943.6 Object类 943.6.1 System.Object方法 943.6.2 ToString()方法 953.7 小结 97第4章 继承 984.1 继承的类型 984.1.1 实现继承和接口继承 984.1.2 多重继承 994.1.3 结构和类 994.2 实现继承 994.2.1 虚方法 1004.2.2 隐藏方法 1014.2.3 调用函数的基类版本 1024.2.4 抽象类和抽象函数 1034.2.5 密封类和密封方法 1034.2.6 派生类的构造函数 1044.3 修饰符 1094.3.1 可见性修饰符 1094.3.2 其他修饰符 1104.4 接口 1114.4.1 定义和实现接口 1124.4.2 派生的接口 1164.5 小结 118第5章 运算符和类型强制转换 1195.1 运算符 1195.1.1 运算符的简化操作 1205.1.2 三元运算符 1215.1.3 checked和unchecked运算符 1225.1.4 is运算符 1235.1.5 as运算符 1235.1.6 sizeof运算符 1235.1.7 typeof运算符 1245.1.8 可空类型和运算符 1245.1.9 空接合运算符 1245.1.10 运算符的优先级 1255.2 类型的安全性 1255.2.1 类型转换 1265.2.2 装箱和拆箱 1305.3 对象的相等比较 1305.3.1 引用类型的相等比较 1315.3.2 值类型的相等比较 1325.4 运算符重载 1325.4.1 运算符的工作方式 1335.4.2 运算符重载的示例:Vector结构 1345.5 用户定义的数据类型转换 1415.5.1 执行用户定义的类型转换 1425.5.2 多重数据类型转换 1495.6 小结 152第6章 委托和事件 1536.1 委托 1536.1.1 在C#中声明委托 1546.1.2 在C#中使用委托 1556.2 匿名方法 1586.2.1 简单的委托示例 1596.2.2 BubbleSorter示例 1616.2.3 多播委托 1646.3 事件 1666.3.1 从客户的角度讨论事件 1676.3.2 生成事件 1696.4 小结 173第7章 内存管理和指针 1747.1 后台内存管理 1747.1.1 值数据类型 1747.1.2 引用数据类型 1767.1.3 垃圾收集 1787.2 释放未托管的资源 1797.2.1 析构函数 1797.2.2 IDisposable接口 1807.2.3 实现IDisposable接口和析构函数 1827.3 不安全的代码 1837.3.1 指针 1837.3.2 指针示例PointerPlayaround 1937.3.3 使用指针优化性能 1977.4 小结 201第8章 字符串和正则表达式 2028.1 System.String类 2028.1.1 创建字符串 2038.1.2 StringBuilder成员 2068.1.3 格式化字符串 2078.2 正则表达式 2138.2.1 正则表达式概述 2138.2.2 RegularExpressionsPlayaround示例 2148.2.3 显示结果 2168.2.4 匹配、组合和捕获 2188.3 小结 220第9章 集合 2219.1 对象组 2219.1.1 集合 2229.1.2 数组列表 2259.1.3 Stack类 2299.1.4 Queue类 2319.1.5 SortedList类 2329.1.6 字典和散列表 2349.1.7 泛型 2439.2 小结 244第10章 泛型 24510.1 概述 24510.1.1 性能 24510.1.2 类型安全 24610.1.3 二进制代码的重用 24710.1.4 代码的扩展 24710.1.5 命名约定 24810.2 泛型集合类 24810.2.1 泛型集合概述 24810.2.2 使用List类 25110.2.3 使用Queue类 25610.2.4 使用LinkedList类 26010.3 创建定制的泛型类 26510.3.1 默认值 26710.3.2 约束 26710.4 泛型方法 27010.5 泛型委托 27210.6 Framework的其他泛型类型 27410.6.1 结构Nullable 27410.6.2 EventHandler27610.6.3 ArraySegment 27610.7 小结 277第11章 反射 27811.1 定制特性 27811.1.1 编写定制特性 27911.1.2 定制特性示例:WhatsNewAttributes 28211.2 反射 28611.2.1 System.Type类 28611.2.2 TypeView示例 28811.2.3 Assembly类 29111.2.4 完成WhatsNewAttributes示例 29211.3 小结 296第12章 错误和异常 29712.1 错误和异常处理 29712.1.1 异常类 29712.1.2 捕获异常 29912.1.3 用户定义的异常类 30812.2 小结 316第13章 线程 31713.1 线程 31713.2 多线程应用程序 31813.3 线程的处理 31913.3.1 ThreadPlayaround示例 32213.3.2 线程的优先级 32513.3.3 同步 32613.4 使用ThreadPool创建线程 33013.5 小结 334第Ⅱ部分 .NET 环 境第14章 Visual Studio 2005 33714.1 使用Visual Studio 2005 33714.1.1 创建项目 34114.1.2 解决方案和项目 34714.1.3 Windows应用程序代码 34914.1.4 读取Visual Studio 6项目 35014.1.5 项目的浏览和编码 35014.1.6 生成项目 36014.1.7 调试 36314.2 修订功能 36614.3 小结 368第15章 程序集 36915.1 程序集的含义 36915.1.1 DLL Hell的解决方案 37015.1.2 程序集的特性 37015.1.3 应用程序域和程序集 37115.2 程序集的结构 37415.2.1 程序集的清单 37415.2.2 命名空间、程序集和组件 37515.2.3 私有程序集和共享程序集 37515.2.4 查看程序集 37515.2.5 构建程序集 37615.3 跨语言支持 38015.3.1 CTS和CLS 38015.3.2 语言无关性 38115.3.3 CLS要求 38915.4 全局程序集缓存 39115.4.1 本机图像生成器 39115.4.2 全局程序集缓存查看器 39215.4.3 全局程序集缓存工具(gacutil.exe) 39315.5 创建共享程序集 39315.5.1 共享程序集名 39315.5.2 创建共享程序集 39515.6 配置 40015.6.1 配置类别 40015.6.2 版本问题 40115.6.3 配置目录 40915.7 小结 411第16章 .NET的安全性 41216.1 代码访问的安全性 41216.1.1 代码组 41316.1.2 代码访问权限和权限集 41916.1.3 策略的级别:Machine、User和Enterprise 42316.2 对Framework中安全性的支持 42516.2.1 要求权限 42616.2.2 请求权限 42716.2.3 隐式的权限 43016.2.4 拒绝权限 43116.2.5 断言权限 43216.2.6 创建代码访问权限 43316.2.7 声明的安全性 43416.3 安全策略的管理 43516.3.1 安全配置文件 43516.3.2 代码组和权限的管理 43816.3.3 安全性的启用和禁用 43816.3.4 重置安全策略 43916.3.5 代码组的创建 43916.3.6 代码组的删除 44016.3.7 代码组权限的更改 44016.3.8 权限集的创建和应用 44116.3.9 使用强名发布代码 44316.3.10 使用证书发布代码 44516.3.11 区域的管理 44916.4 基于角色的安全性 45116.4.1 Principal 45116.4.2 Windows Principal 45216.4.3 角色 45416.4.4 声明基于角色的安全性 45416.5 小结 455第17章 本地化 45617.1 System.Globalization命名空间 45617.1.1 Unicode问题 45617.1.2 文化和区域 45717.1.3 使用文化 46117.1.4 排序 46617.2 资源 46717.2.1 创建资源文件 46817.2.2 资源文件生成器 46817.2.3 ResourceWriter 46817.2.4 使用资源文件 46917.2.5 System.Resources命名空间 47417.3 使用Visual Studio的本地化示例 47517.3.1 编程修改文化 48017.3.2 使用定制资源文件 48117.3.3 资源的自动回退 48217.3.4 外包翻译 48217.4 用ASP.NET本地化 48317.5 定制的资源读取器 48517.5.1 创建DatabaseResourceReader类 48517.5.2 创建DatabaseResourceSet类 48717.5.3 创建DatabaseResourceManager类 48717.5.4 DatabaseResourceReader的客户应用程序 48817.6 创建定制文化 48917.7 小结 489第18章 部署 49018.1 部署的设计 49018.2 部署选项 49018.2.1 Xcopy实用工具 49118.2.2 Copy Web工具 49118.2.3 发布Web站点 49118.2.4 部署项目 49118.2.5 ClickOnce 49118.3 部署的要求 49118.4 简单的部署 49218.4.1 Xcopy部署 49318.4.2 Xcopy和Web应用程序 49318.4.3 Copy Web工具 49318.4.4 发布Web站点 49418.5 Installer项目 49418.5.1 Windows Installer 49518.5.2 创建安装程序 49518.6 ClickOnce 50418.6.1 ClickOnce操作 50418.6.2 发布应用程序 50418.6.3 ClickOnce设置 50518.6.4 应用程序缓存 50518.6.5 安全性 50618.6.6 高级选项 50618.7 小结 511第Ⅲ部分 数 据第19章 .NET数据访问 51519.1 ADO.NET概述 51519.1.1 命名空间 51619.1.2 共享类 51619.1.3 数据库特定的类 51619.2 使用数据库连接 51719.2.1 管理连接字符串 51819.2.2 高效地使用连接 52019.2.3 事务处理 52219.3 命令 52419.3.1 执行命令 52519.3.2 调用存储过程 52819.4 快速数据访问:数据读取器 53119.5 管理数据和关系:DataSet类 53419.5.1 数据表 53519.5.2 数据列 53619.5.3 数据关系 54119.5.4 数据约束 54219.6 XML模式 54419.7 填充数据集 55219.7.1 用数据适配器来填充DataSet 55219.7.2 从XML中给数据集填充数据 55319.8 保存对数据集的修改 55319.8.1 通过数据适配器进行更新 55419.8.2 写入XML输出结果 55619.9 使用ADO.NET 55819.9.1 分层开发 55819.9.2 生成SQL Server的键 55919.9.3 命名约定 56119.10 小结 562第20章 .NET编程和SQL Server 2005 56420.1 .NET运行库的主机 56420.2 Microsoft.SqlServer.Server 56520.3 用户定义的类型 56620.3.1 创建UDT 56620.3.2 使用UDT 57220.3.3 在客户端代码中使用UDT 57320.4 用户定义的合计函数 57420.4.1 创建用户定义的合计函数 57420.4.2 使用用户定义的合计函数 57520.5 存储过程 57620.5.1 创建存储过程 57620.5.2 使用存储过程 57720.6 用户定义的函数 57820.6.1 创建用户定义的函数 57820.6.2 使用用户定义的函数 57920.7 触发器 57920.7.1 创建触发器 58020.7.2 使用触发器 58120.8 XML数据类型 58120.8.1 包含XML数据的表 58220.8.2 数据的查询 58420.8.3 XML数据修改语言(XML DML) 58520.8.4 XML索引 58620.8.5 强类型化的XML 58720.9 小结 588第21章 处理XML 58921.1 .NET支持的XML标准 58921.2 System.Xml命名空间 59021.3 在.NET中使用MSXML 59121.4 使用System.Xml类 59321.5 读写流格式的XML 59321.5.1 使用 XmlReader类 59421.5.2 使用XmlReader类进行验证 59721.5.3 使用XmlWriter类 59921.6 在.NET中使用DOM 60121.7 使用XPathNavigator 60721.7.1 System.Xml.Xpath命名空间 60721.7.2 System.Xml.Xsl命名空间 61221.8 XML和ADO.NET 61721.8.1 将ADO.NET数据转换为XML文档 61721.8.2 把XML文档转换为ADO.NET数据 62421.8.3 读写DiffGram 62621.9 在XML中串行化对象 62921.10 小结 639第22章 使用Active Directory 64022.1 Active Directory的体系结构 64022.1.1 特性 64122.1.2 Active Directory的概念 64122.1.3 Active Directory数据的特性 64522.1.4 模式 64522.2 Active Directory的管理工具 64622.2.1 Active Directory Users and Computers工具 64622.2.2 ADSI Edit工具 64722.3 Active Directory编程 64822.3.1 System.DirectoryServices命名空间中的类 64922.3.2 绑定 65022.3.3 获取目录项 65422.3.4 对象集合 65522.3.5 缓存 65622.3.6 创建新对象 65722.3.7 更新目录项 65822.3.8 访问内部的ADSI对象 65822.3.9 在Active Directory中搜索 66022.4 搜索用户对象 66322.4.1 用户界面 66322.4.2 获取模式命名环境 66422.4.3 获取User类的属性名 66522.4.4 搜索用户对象 66622.5 DSML 66822.5.1 命名空间System.DirectoryServices.Protocols中的类 66822.5.2 用DSML搜索Active Directory对象 66922.6 小结 671第Ⅳ部分 Windows应用程序第23章 Windows窗体 67523.1 创建Windows窗体应用程序 67523.2 Control类 68123.2.1 大小和位置 68223.2.2 外观 68323.2.3 用户交互操作 68323.2.4 Windows功能 68423.2.5 杂项功能 68523.3 标准控件和组件 68523.3.1 Button控件 68623.3.2 CheckBox控件 68623.3.3 RadioButton控件 68723.3.4 ComboBox控件、ListBox控件和CheckedListBox控件 68723.3.5 DateTimePicker控件 69023.3.6 ErrorProvider组件 69023.3.7 HelpProvider组件 69123.3.8 ImageList组件 69223.3.9 Label控件 69223.3.10 ListView控件 69223.3.11 PictureBox控件 69423.3.12 ProgressBar控件 69523.3.13 TextBox控件、RichTextBox控件与MaskedTextBox控件 69523.3.14 Panel控件 69623.3.15 FlowLayoutPanel和TableLayoutPanel控件 69623.3.16 SplitContainer控件 69723.3.17 TabControl控件和TabPages控件 69823.3.18 ToolStrip控件 69823.3.19 MenuStrip控件 70123.3.20 ContextMenuStrip控件 70123.3.21 ToolStripMenuItem控件 70123.3.22 ToolStripManager类 70223.3.23 ToolStripContainer控件 70223.4 窗体 70223.4.1 Form类 70323.4.2 多文档界面 70823.4.3 定制控件 70823.5 小结 721第24章 查看.NET数据 72224.1 DataGridView控件 72224.1.1 显示列表数据 72224.1.2 数据源 72424.2 DataGridView类的层次结构 73224.3 数据绑定 73524.3.1 简单的绑定 73524.3.2 数据绑定对象 73524.4 Visual Studio.NET和数据访问 73924.4.1 创建一个连接 74024.4.2 选择数据 74224.4.3 更新数据源 74324.4.4 构建模式 74324.4.5 其他常见的要求 74924.5 小结 757第25章 使用GDI+绘图 75825.1 理解绘图规则 75825.1.1 GDI和GDI+ 75825.1.2 绘制图形 76025.1.3 使用OnPaint()绘制图形 76325.1.4 使用剪切区域 76425.2 测量坐标和区域 76625.2.1 Point和PointF结构 76625.2.2 Size和SizeF结构 76725.2.3 Rectangle和RectangleF结构 76925.2.4 Region 77025.3 调试须知 77025.4 绘制可滚动的窗口 77125.5 世界、页面和设备坐标 77625.6 颜色 77725.6.1 红绿蓝(RGB)值 77725.6.2 命名的颜色 77725.6.3 图形显示模式和安全的调色板 77825.6.4 安全调色板 77925.7 画笔和钢笔 77925.7.1 画笔 77925.7.2 钢笔 78025.8 绘制图形和线条 78125.9 显示图像 78325.10 处理图像时所涉及到的问题 78525.11 绘制文本 78625.12 简单的文本示例 78725.13 字体和字体系列 78825.14 示例:枚举字体系列 79025.15 编辑文本文档:CapsEditor示例 79225.15.1 Invalidate()方法 79625.15.2 计算项和文档的大小 79725.15.3 OnPaint() 79925.15.4 坐标转换 80025.15.5 响应用户的输入 80225.16 打印 80525.17 小结 810第Ⅴ部分 Web应用程序第26章 ASP.NET页面 81326.1 ASP.NET概述 81326.2 ASP.NET Web窗体 81426.2.1 ASP.NET代码模型 81826.2.2 ASP.NET服务器控件 81826.3 ADO.NET和数据绑定 83326.3.1 更新会议登记应用程序 83326.3.2 数据绑定的更多内容 84026.4 应用程序配置 84526.5 小结 847第27章 ASP.NET开发 84827.1 定制控件 84827.1.1 用户控件 84927.1.2 PCSDemoSite中的用户控件 85527.1.3 定制控件 85627.2 Master页面 86027.3 站点导航 86427.4 安全性 86727.4.1 使用安全向导添加Forms身份验证功能 86727.4.2 实现登录系统 87027.4.3 Web 登录服务器控件 87127.4.4 保护目录 87227.4.5 PCSDemoSite中的安全性 87227.5 主题 87427.5.1 把主题应用于页面 87527.5.2 定义主题 87627.5.3 PCSDemoSite中的主题 87627.6 小结 879第Ⅵ部分 通 信第28章 Web服务 88328.1 SOAP 88328.2 WSDL 88528.3 Web服务 88628.3.1 创建Web服务 88628.3.2 使用Web服务 89028.4 扩充会议登记示例 89228.4.1 会议登记Web服务 89228.4.2 会议登记客户程序 89728.5 使用SOAP标题交换数据 90128.6 小结 906第29章 .NET Remoting 90829.1 .NET Remoting的含义 90829.1.1 应用程序类型和协议 90929.1.2 CLR Object Remoting 90929.2 .NET Remoting概述 91029.3 环境 91229.3.1 激活 91329.3.2 特性和属性 91329.3.3 环境之间的通信 91429.4 远程对象、客户机和服务器 91429.4.1 远程对象 91429.4.2 简单的服务器 91529.4.3 简单的客户机 91629.5 .NET Remoting体系结构 91729.5.1 信道 91829.5.2 格式标识符 92229.5.3 ChannelServices和RemotingConfiguration 92229.5.4 对象的激活 92429.5.5 消息接收器 92729.5.6 在远程方法中传递对象 92829.5.7 生存期管理 93329.6 .NET Remoting的其他特性 93629.6.1 配置文件 93629.6.2 利用ASP.NET驻留远程服务器 94629.6.3 类、接口和Soapsuds 94829.6.4 异步远程调用 94929.6.5 .NET Remoting的安全性 95029.6.6 远程调用和事件 95229.6.7 调用环境 95829.7 小结 960第30章 Enterprise Services 96130.1 概述 96130.1.1 Enterprise Services简史 96130.1.2 使用Enterprise Services的场合 96230.1.3 环境 96330.1.4 自动的事务处理 96330.1.5 分布式事务处理 96330.1.6 对象池 96330.1.7 基于角色的安全性 96430.1.8 排队的组件 96430.1.9 松散藕合的事件 96430.1.10 没有组件的服务 96430.2 创建简单的COM+应用程序 96530.2.1 类ServicedComponent 96530.2.2 标记程序集 96530.2.3 程序集的属性 96530.2.4 创建组件 96630.3 部署 96730.3.1 自动部署 96730.3.2 手工部署 96830.3.3 创建安装软件包 96830.4 Component Services浏览器 96930.5 客户应用程序 97130.6 事务处理 97130.6.1 ACID属性 97230.6.2 事务处理的属性 97230.6.3 事务处理的结果 97330.7 示例应用程序 97330.7.1 实体类 97430.7.2 OrderControl组件 97830.7.3 OrderData组件 97830.7.4 OrderLineData组件 98130.7.5 客户应用程序 98330.8 没有组件的服务 98430.9 小结 986第31章 消息队列 98831.1 概述 98831.1.1 使用Message Queuing的场合 98931.1.2 Message Queuing特性 99031.2 Message Queuing产品 99031.3 Message Queuing结构 99131.3.1 消息 99131.3.2 消息队列 99231.4 Message Queuing管理工具 99231.4.1 创建消息队列 99231.4.2 消息队列属性 99331.5 Message Queuing的编程实现 99431.5.1 创建消息队列 99431.5.2 查找队列 99531.5.3 打开已知的队列 99631.5.4 发送消息 99731.5.5 接收消息 100031.6 课程订单应用程序 100231.6.1 课程订单类库 100231.6.2 课程订单消息发送程序 100531.6.3 发送优先级和可恢复的消息 100631.6.4 课程订单消息接收程序 100731.7 接收结果 101031.7.1 确认队列 101131.7.2 响应队列 101231.8 事务队列 101231.9 消息队列的安装 101331.10 小结 1014第32章 分布式编程的未来产品 101532.1 现有技术的问题 101532.2 Web服务 101632.2.1 安全性 101732.2.2 可靠性 101832.2.3 事务处理 102032.2.4 性能 102132.3 WCF概述 102332.4 用WCF编程 102532.4.1 契约 102532.4.2 服务程序的实现 102732.4.3 绑定 102832.4.4 主机 103032.4.5 客户程序 103132.5 准备使用WCF 103232.5.1 .NET Remoting 103232.5.2 ASP.NET Web服务 103332.5.3 Enterprise Services 103332.5.4 Message Queuing 103432.6 小结 1035第Ⅶ部分 互 操 作 性第33章 COM的互操作性 103933.1 .NET和COM 103933.1.1 元数据 104033.1.2 释放内存 104033.1.3 接口 104033.1.4 方法绑定 104233.1.5 数据类型 104233.1.6 注册 104233.1.7 线程 104333.1.8 错误处理 104433.1.9 事件处理 104533.2 编组 104533.3 在.NET客户程序中使用COM组件 104633.3.1 创建COM组件 104633.3.2 创建Runtime Callable Wrapper 105033.3.3 线程问题 105333.3.4 添加连接点 105333.3.5 在Windows窗体中使用ActiveX控件 105533.3.6 在ASP.NET中使用COM对象 105833.4 在COM客户程序中使用.NET组件 105833.4.1 COM Callable Wrapper 105833.4.2 创建.NET组件 105933.4.3 创建类型库 106033.4.4 COM互操作特性 106233.4.5 COM注册 106533.4.6 创建COM客户程序 106633.4.7 添加连接点 106833.4.8 用sink对象创建客户程序 106933.4.9 在Internet Explorer中运行Windows窗体控件 107033.5 小结 1070第Ⅷ部分 Windows基本服务第34章 文件和注册表操作 107334.1 管理文件系统 107334.1.1 表示文件和文件夹的.NET类 107434.1.2 Path类 107734.1.3 示例:文件浏览器 107734.2 移动、复制和删除文件 108234.2.1 FilePropertiesAndMovement示例 108234.2.2 示例FilePropertiesAndMovement的代码 108334.3 读写文件 108734.3.1 读取文件 108734.3.2 写入文件 108934.3.3 流 109034.3.4 缓存的流 109234.3.5 读写二进制文件 109234.3.6 读写文本文件 109734.4 读取驱动器信息 110334.5 文件的安全性 110534.5.1 从文件中读取ACL 110634.5.2 从目录中读取ACL 110734.5.3 添加和删除文件中的ACL项 110934.6 读写注册表 111034.6.1 注册表 111134.6.2 .NET注册表类 111234.6.3 SelfPlacingWindow示例 111534.7 小结 1121第35章 访问Internet 112235.1 WebClient类 112235.1.1 下载文件 112335.1.2 基本的Web客户示例 112335.1.3 上传文件 112435.2 WebRequest类和WebResponse类 112535.3 把输出结果显示为HTML页面 112835.3.1 在应用程序中进行简单的Web浏览 112835.3.2 启动Internet Explorer实例 113035.3.3 给应用程序提供更多的IE类型特性 113135.3.4 使用WebBrowser控件显示文档 113735.3.5 使用WebBrowser控件打印 113835.3.6 显示请求页面的代码 113835.3.7 WebRequest和WebResponse的层次结构 114035.4 实用工具类 114035.4.1 URI 114035.4.2 IP地址和DNS名称 114135.5 较低层的协议 114435.6 小结 1150第36章 Windows服务 115136.1 Windows服务 115136.2 Windows服务的体系结构 115236.2.1 服务程序 115236.2.2 服务控制程序 115336.2.3 服务配置程序 115436.3 System.ServiceProcess命名空间 115436.4 创建Windows服务 115436.4.1 使用套接字的类库 115536.4.2 TcpClient示例 115936.4.3 Windows服务项目 116036.4.4 线程和服务 116636.4.5 服务的安装 116636.4.6 安装程序 116636.5 服务的监视和控制 117136.5.1 MMC计算机管理 117136.5.2 net.exe 117236.5.3 sc.exe 117336.5.4 Visual Studio ServerExplorer 117336.5.5 ServiceController类 117436.6 故障排除 117936.6.1 交互式服务 118036.6.2 事件日志 118136.6.3 性能监视 118636.7 电源事件 119036.8 小结 1191 05年度引进版科技类优秀图书”奖。第4版面向C# 2005,在全面展示.NET新特性的同时继续完善原有的内容,是有一些C#基础知识的学习者或者想迁移到C#的其他程序员全面掌握C#的首选教程。C#和.NET全面革新了编写程序的方式。本书以最新的.NET Framework 2.0和Visual Studio 2005为基础,全面介绍了C#编程的工具,提供了理解.NET体系结构的工作原理所必需的背景知识。目 录 第Ⅰ部分 C# 语 言第1章 .NET体系结构 31.1 C#与.NET的关系 31.2 公共语言运行库 31.3 详细介绍中间语言 61.3.1 面向对象和接口的支持 71.3.2 相异值类型和引用类型 81.3.3 强数据类型 81.3.4 通过异常方法处理错误 141.3.5 特性的使用 141.4 程序集 141.4.1 私有程序集 151.4.2 共享程序集 161.4.3 反射 161.5 .NET Framework类 161.6 命名空间 171.7 用C#创建.NET应用程序 181.7.1 创建ASP.NET应用程序 181.7.2 创建Windows窗体 201.7.3 Windows控件 201.7.4 Windows服务 201.8 C#在.NET企业体系结构中的作用 201.9 小结 22第2章 C#基础 232.1 引言 232.2 第一个C#程序 232.2.1 代码 242.2.2 编译并运行程序 242.2.3 详细介绍 252.3 变量 272.3.1 变量的初始化 272.3.2 变量的作用域 282.3.3 常量 312.4 预定义数据类型 322.4.1 值类型和引用类型 322.4.2 CTS类型 332.4.3 预定义的值类型 332.4.4 预定义的引用类型 362.5 流控制 392.5.1 条件语句 392.5.2 循环 432.5.3 跳转语句 462.6 枚举 472.7 数组 492.8 命名空间 502.8.1 using语句 512.8.2 命名空间的别名 522.9 Main()方法 532.9.1 多个Main()方法 532.9.2 给Main()方法传送参数 542.10 有关编译C#文件的更多内容 552.11 控制台I/O 562.12 使用注释 582.12.1 源文件中的内部注释 582.12.2 XML文档说明 592.13 C#预处理器指令 612.13.1 #define和 #undef 612.13.2 #if, #elif, #else和#endif 622.13.3 #warning和# error 632.13.4 #region和#endregion 632.13.5 #line 642.13.6 #pragma 642.14 C#编程规则 642.14.1 用于标识符的规则 642.14.2 用法约定 652.15 小结 71第3章 对象和类型 723.1 类和结构 723.2 类成员 733.2.1 数据成员 733.2.2 函数成员 743.2.3 只读字段 883.3 结构 893.3.1 结构是值类型 903.3.2 结构和继承 913.3.3 结构的构造函数 913.4 部分类 923.5 静态类 943.6 Object类 943.6.1 System.Object方法 943.6.2 ToString()方法 953.7 小结 97第4章 继承 984.1 继承的类型 984.1.1 实现继承和接口继承 984.1.2 多重继承 994.1.3 结构和类 994.2 实现继承 994.2.1 虚方法 1004.2.2 隐藏方法 1014.2.3 调用函数的基类版本 1024.2.4 抽象类和抽象函数 1034.2.5 密封类和密封方法 1034.2.6 派生类的构造函数 1044.3 修饰符 1094.3.1 可见性修饰符 1094.3.2 其他修饰符 1104.4 接口 1114.4.1 定义和实现接口 1124.4.2 派生的接口 1164.5 小结 118第5章 运算符和类型强制转换 1195.1 运算符 1195.1.1 运算符的简化操作 1205.1.2 三元运算符 1215.1.3 checked和unchecked运算符 1225.1.4 is运算符 1235.1.5 as运算符 1235.1.6 sizeof运算符 1235.1.7 typeof运算符 1245.1.8 可空类型和运算符 1245.1.9 空接合运算符 1245.1.10 运算符的优先级 1255.2 类型的安全性 1255.2.1 类型转换 1265.2.2 装箱和拆箱 1305.3 对象的相等比较 1305.3.1 引用类型的相等比较 1315.3.2 值类型的相等比较 1325.4 运算符重载 1325.4.1 运算符的工作方式 1335.4.2 运算符重载的示例:Vector结构 1345.5 用户定义的数据类型转换 1415.5.1 执行用户定义的类型转换 1425.5.2 多重数据类型转换 1495.6 小结 152第6章 委托和事件 1536.1 委托 1536.1.1 在C#中声明委托 1546.1.2 在C#中使用委托 1556.2 匿名方法 1586.2.1 简单的委托示例 1596.2.2 BubbleSorter示例 1616.2.3 多播委托 1646.3 事件 1666.3.1 从客户的角度讨论事件 1676.3.2 生成事件 1696.4 小结 173第7章 内存管理和指针 1747.1 后台内存管理 1747.1.1 值数据类型 1747.1.2 引用数据类型 1767.1.3 垃圾收集 1787.2 释放未托管的资源 1797.2.1 析构函数 1797.2.2 IDisposable接口 1807.2.3 实现IDisposable接口和析构函数 1827.3 不安全的代码 1837.3.1 指针 1837.3.2 指针示例PointerPlayaround 1937.3.3 使用指针优化性能 1977.4 小结 201第8章 字符串和正则表达式 2028.1 System.String类 2028.1.1 创建字符串 2038.1.2 StringBuilder成员 2068.1.3 格式化字符串 2078.2 正则表达式 2138.2.1 正则表达式概述 2138.2.2 RegularExpressionsPlayaround示例 2148.2.3 显示结果 2168.2.4 匹配、组合和捕获 2188.3 小结 220第9章 集合 2219.1 对象组 2219.1.1 集合 2229.1.2 数组列表 2259.1.3 Stack类 2299.1.4 Queue类 2319.1.5 SortedList类 2329.1.6 字典和散列表 2349.1.7 泛型 2439.2 小结 244第10章 泛型 24510.1 概述 24510.1.1 性能 24510.1.2 类型安全 24610.1.3 二进制代码的重用 24710.1.4 代码的扩展 24710.1.5 命名约定 24810.2 泛型集合类 24810.2.1 泛型集合概述 24810.2.2 使用List类 25110.2.3 使用Queue类 25610.2.4 使用LinkedList类 26010.3 创建定制的泛型类 26510.3.1 默认值 26710.3.2 约束 26710.4 泛型方法 27010.5 泛型委托 27210.6 Framework的其他泛型类型 27410.6.1 结构Nullable 27410.6.2 EventHandler27610.6.3 ArraySegment 27610.7 小结 277第11章 反射 27811.1 定制特性 27811.1.1 编写定制特性 27911.1.2 定制特性示例:WhatsNewAttributes 28211.2 反射 28611.2.1 System.Type类 28611.2.2 TypeView示例 28811.2.3 Assembly类 29111.2.4 完成WhatsNewAttributes示例 29211.3 小结 296第12章 错误和异常 29712.1 错误和异常处理 29712.1.1 异常类 29712.1.2 捕获异常 29912.1.3 用户定义的异常类 30812.2 小结 316第13章 线程 31713.1 线程 31713.2 多线程应用程序 31813.3 线程的处理 31913.3.1 ThreadPlayaround示例 32213.3.2 线程的优先级 32513.3.3 同步 32613.4 使用ThreadPool创建线程 33013.5 小结 334第Ⅱ部分 .NET 环 境第14章 Visual Studio 2005 33714.1 使用Visual Studio 2005 33714.1.1 创建项目 34114.1.2 解决方案和项目 34714.1.3 Windows应用程序代码 34914.1.4 读取Visual Studio 6项目 35014.1.5 项目的浏览和编码 35014.1.6 生成项目 36014.1.7 调试 36314.2 修订功能 36614.3 小结 368第15章 程序集 36915.1 程序集的含义 36915.1.1 DLL Hell的解决方案 37015.1.2 程序集的特性 37015.1.3 应用程序域和程序集 37115.2 程序集的结构 37415.2.1 程序集的清单 37415.2.2 命名空间、程序集和组件 37515.2.3 私有程序集和共享程序集 37515.2.4 查看程序集 37515.2.5 构建程序集 37615.3 跨语言支持 38015.3.1 CTS和CLS 38015.3.2 语言无关性 38115.3.3 CLS要求 38915.4 全局程序集缓存 39115.4.1 本机图像生成器 39115.4.2 全局程序集缓存查看器 39215.4.3 全局程序集缓存工具(gacutil.exe) 39315.5 创建共享程序集 39315.5.1 共享程序集名 39315.5.2 创建共享程序集 39515.6 配置 40015.6.1 配置类别 40015.6.2 版本问题 40115.6.3 配置目录 40915.7 小结 411第16章 .NET的安全性 41216.1 代码访问的安全性 41216.1.1 代码组 41316.1.2 代码访问权限和权限集 41916.1.3 策略的级别:Machine、User和Enterprise 42316.2 对Framework中安全性的支持 42516.2.1 要求权限 42616.2.2 请求权限 42716.2.3 隐式的权限 43016.2.4 拒绝权限 43116.2.5 断言权限 43216.2.6 创建代码访问权限 43316.2.7 声明的安全性 43416.3 安全策略的管理 43516.3.1 安全配置文件 43516.3.2 代码组和权限的管理 43816.3.3 安全性的启用和禁用 43816.3.4 重置安全策略 43916.3.5 代码组的创建 43916.3.6 代码组的删除 44016.3.7 代码组权限的更改 44016.3.8 权限集的创建和应用 44116.3.9 使用强名发布代码 44316.3.10 使用证书发布代码 44516.3.11 区域的管理 44916.4 基于角色的安全性 45116.4.1 Principal 45116.4.2 Windows Principal 45216.4.3 角色 45416.4.4 声明基于角色的安全性 45416.5 小结 455第17章 本地化 45617.1 System.Globalization命名空间 45617.1.1 Unicode问题 45617.1.2 文化和区域 45717.1.3 使用文化 46117.1.4 排序 46617.2 资源 46717.2.1 创建资源文件 46817.2.2 资源文件生成器 46817.2.3 ResourceWriter 46817.2.4 使用资源文件 46917.2.5 System.Resources命名空间 47417.3 使用Visual Studio的本地化示例 47517.3.1 编程修改文化 48017.3.2 使用定制资源文件 48117.3.3 资源的自动回退 48217.3.4 外包翻译 48217.4 用ASP.NET本地化 48317.5 定制的资源读取器 48517.5.1 创建DatabaseResourceReader类 48517.5.2 创建DatabaseResourceSet类 48717.5.3 创建DatabaseResourceManager类 48717.5.4 DatabaseResourceReader的客户应用程序 48817.6 创建定制文化 48917.7 小结 489第18章 部署 49018.1 部署的设计 49018.2 部署选项 49018.2.1 Xcopy实用工具 49118.2.2 Copy Web工具 49118.2.3 发布Web站点 49118.2.4 部署项目 49118.2.5 ClickOnce 49118.3 部署的要求 49118.4 简单的部署 49218.4.1 Xcopy部署 49318.4.2 Xcopy和Web应用程序 49318.4.3 Copy Web工具 49318.4.4 发布Web站点 49418.5 Installer项目 49418.5.1 Windows Installer 49518.5.2 创建安装程序 49518.6 ClickOnce 50418.6.1 ClickOnce操作 50418.6.2 发布应用程序 50418.6.3 ClickOnce设置 50518.6.4 应用程序缓存 50518.6.5 安全性 50618.6.6 高级选项 50618.7 小结 511第Ⅲ部分 数 据第19章 .NET数据访问 51519.1 ADO.NET概述 51519.1.1 命名空间 51619.1.2 共享类 51619.1.3 数据库特定的类 51619.2 使用数据库连接 51719.2.1 管理连接字符串 51819.2.2 高效地使用连接 52019.2.3 事务处理 52219.3 命令 52419.3.1 执行命令 52519.3.2 调用存储过程 52819.4 快速数据访问:数据读取器 53119.5 管理数据和关系:DataSet类 53419.5.1 数据表 53519.5.2 数据列 53619.5.3 数据关系 54119.5.4 数据约束 54219.6 XML模式 54419.7 填充数据集 55219.7.1 用数据适配器来填充DataSet 55219.7.2 从XML中给数据集填充数据 55319.8 保存对数据集的修改 55319.8.1 通过数据适配器进行更新 55419.8.2 写入XML输出结果 55619.9 使用ADO.NET 55819.9.1 分层开发 55819.9.2 生成SQL Server的键 55919.9.3 命名约定 56119.10 小结 562第20章 .NET编程和SQL Server 2005 56420.1 .NET运行库的主机 56420.2 Microsoft.SqlServer.Server 56520.3 用户定义的类型 56620.3.1 创建UDT 56620.3.2 使用UDT 57220.3.3 在客户端代码中使用UDT 57320.4 用户定义的合计函数 57420.4.1 创建用户定义的合计函数 57420.4.2 使用用户定义的合计函数 57520.5 存储过程 57620.5.1 创建存储过程 57620.5.2 使用存储过程 57720.6 用户定义的函数 57820.6.1 创建用户定义的函数 57820.6.2 使用用户定义的函数 57920.7 触发器 57920.7.1 创建触发器 58020.7.2 使用触发器 58120.8 XML数据类型 58120.8.1 包含XML数据的表 58220.8.2 数据的查询 58420.8.3 XML数据修改语言(XML DML) 58520.8.4 XML索引 58620.8.5 强类型化的XML 58720.9 小结 588第21章 处理XML 58921.1 .NET支持的XML标准 58921.2 System.Xml命名空间 59021.3 在.NET中使用MSXML 59121.4 使用System.Xml类 59321.5 读写流格式的XML 59321.5.1 使用 XmlReader类 59421.5.2 使用XmlReader类进行验证 59721.5.3 使用XmlWriter类 59921.6 在.NET中使用DOM 60121.7 使用XPathNavigator 60721.7.1 System.Xml.Xpath命名空间 60721.7.2 System.Xml.Xsl命名空间 61221.8 XML和ADO.NET 61721.8.1 将ADO.NET数据转换为XML文档 61721.8.2 把XML文档转换为ADO.NET数据 62421.8.3 读写DiffGram 62621.9 在XML中串行化对象 62921.10 小结 639第22章 使用Active Directory 64022.1 Active Directory的体系结构 64022.1.1 特性 64122.1.2 Active Directory的概念 64122.1.3 Active Directory数据的特性 64522.1.4 模式 64522.2 Active Directory的管理工具 64622.2.1 Active Directory Users and Computers工具 64622.2.2 ADSI Edit工具 64722.3 Active Directory编程 64822.3.1 System.DirectoryServices命名空间中的类 64922.3.2 绑定 65022.3.3 获取目录项 65422.3.4 对象集合 65522.3.5 缓存 65622.3.6 创建新对象 65722.3.7 更新目录项 65822.3.8 访问内部的ADSI对象 65822.3.9 在Active Directory中搜索 66022.4 搜索用户对象 66322.4.1 用户界面 66322.4.2 获取模式命名环境 66422.4.3 获取User类的属性名 66522.4.4 搜索用户对象 66622.5 DSML 66822.5.1 命名空间System.DirectoryServices.Protocols中的类 66822.5.2 用DSML搜索Active Directory对象 66922.6 小结 671第Ⅳ部分 Windows应用程序第23章 Windows窗体 67523.1 创建Windows窗体应用程序 67523.2 Control类 68123.2.1 大小和位置 68223.2.2 外观 68323.2.3 用户交互操作 68323.2.4 Windows功能 68423.2.5 杂项功能 68523.3 标准控件和组件 68523.3.1 Button控件 68623.3.2 CheckBox控件 68623.3.3 RadioButton控件 68723.3.4 ComboBox控件、ListBox控件和CheckedListBox控件 68723.3.5 DateTimePicker控件 69023.3.6 ErrorProvider组件 69023.3.7 HelpProvider组件 69123.3.8 ImageList组件 69223.3.9 Label控件 69223.3.10 ListView控件 69223.3.11 PictureBox控件 69423.3.12 ProgressBar控件 69523.3.13 TextBox控件、RichTextBox控件与MaskedTextBox控件 69523.3.14 Panel控件 69623.3.15 FlowLayoutPanel和TableLayoutPanel控件 69623.3.16 SplitContainer控件 69723.3.17 TabControl控件和TabPages控件 69823.3.18 ToolStrip控件 69823.3.19 MenuStrip控件 70123.3.20 ContextMenuStrip控件 70123.3.21 ToolStripMenuItem控件 70123.3.22 ToolStripManager类 70223.3.23 ToolStripContainer控件 70223.4 窗体 70223.4.1 Form类 70323.4.2 多文档界面 70823.4.3 定制控件 70823.5 小结 721第24章 查看.NET数据 72224.1 DataGridView控件 72224.1.1 显示列表数据 72224.1.2 数据源 72424.2 DataGridView类的层次结构 73224.3 数据绑定 73524.3.1 简单的绑定 73524.3.2 数据绑定对象 73524.4 Visual Studio.NET和数据访问 73924.4.1 创建一个连接 74024.4.2 选择数据 74224.4.3 更新数据源 74324.4.4 构建模式 74324.4.5 其他常见的要求 74924.5 小结 757第25章 使用GDI+绘图 75825.1 理解绘图规则 75825.1.1 GDI和GDI+ 75825.1.2 绘制图形 76025.1.3 使用OnPaint()绘制图形 76325.1.4 使用剪切区域 76425.2 测量坐标和区域 76625.2.1 Point和PointF结构 76625.2.2 Size和SizeF结构 76725.2.3 Rectangle和RectangleF结构 76925.2.4 Region 77025.3 调试须知 77025.4 绘制可滚动的窗口 77125.5 世界、页面和设备坐标 77625.6 颜色 77725.6.1 红绿蓝(RGB)值 77725.6.2 命名的颜色 77725.6.3 图形显示模式和安全的调色板 77825.6.4 安全调色板 77925.7 画笔和钢笔 77925.7.1 画笔 77925.7.2 钢笔 78025.8 绘制图形和线条 78125.9 显示图像 78325.10 处理图像时所涉及到的问题 78525.11 绘制文本 78625.12 简单的文本示例 78725.13 字体和字体系列 78825.14 示例:枚举字体系列 79025.15 编辑文本文档:CapsEditor示例 79225.15.1 Invalidate()方法 79625.15.2 计算项和文档的大小 79725.15.3 OnPaint() 79925.15.4 坐标转换 80025.15.5 响应用户的输入 80225.16 打印 80525.17 小结 810第Ⅴ部分 Web应用程序第26章 ASP.NET页面 81326.1 ASP.NET概述 81326.2 ASP.NET Web窗体 81426.2.1 ASP.NET代码模型 81826.2.2 ASP.NET服务器控件 81826.3 ADO.NET和数据绑定 83326.3.1 更新会议登记应用程序 83326.3.2 数据绑定的更多内容 84026.4 应用程序配置 84526.5 小结 847第27章 ASP.NET开发 84827.1 定制控件 84827.1.1 用户控件 84927.1.2 PCSDemoSite中的用户控件 85527.1.3 定制控件 85627.2 Master页面 86027.3 站点导航 86427.4 安全性 86727.4.1 使用安全向导添加Forms身份验证功能 86727.4.2 实现登录系统 87027.4.3 Web 登录服务器控件 87127.4.4 保护目录 87227.4.5 PCSDemoSite中的安全性 87227.5 主题 87427.5.1 把主题应用于页面 87527.5.2 定义主题 87627.5.3 PCSDemoSite中的主题 87627.6 小结 879第Ⅵ部分 通 信第28章 Web服务 88328.1 SOAP 88328.2 WSDL 88528.3 Web服务 88628.3.1 创建Web服务 88628.3.2 使用Web服务 89028.4 扩充会议登记示例 89228.4.1 会议登记Web服务 89228.4.2 会议登记客户程序 89728.5 使用SOAP标题交换数据 90128.6 小结 906第29章 .NET Remoting 90829.1 .NET Remoting的含义 90829.1.1 应用程序类型和协议 90929.1.2 CLR Object Remoting 90929.2 .NET Remoting概述 91029.3 环境 91229.3.1 激活 91329.3.2 特性和属性 91329.3.3 环境之间的通信 91429.4 远程对象、客户机和服务器 91429.4.1 远程对象 91429.4.2 简单的服务器 91529.4.3 简单的客户机 91629.5 .NET Remoting体系结构 91729.5.1 信道 91829.5.2 格式标识符 92229.5.3 ChannelServices和RemotingConfiguration 92229.5.4 对象的激活 92429.5.5 消息接收器 92729.5.6 在远程方法中传递对象 92829.5.7 生存期管理 93329.6 .NET Remoting的其他特性 93629.6.1 配置文件 93629.6.2 利用ASP.NET驻留远程服务器 94629.6.3 类、接口和Soapsuds 94829.6.4 异步远程调用 94929.6.5 .NET Remoting的安全性 95029.6.6 远程调用和事件 95229.6.7 调用环境 95829.7 小结 960第30章 Enterprise Services 96130.1 概述 96130.1.1 Enterprise Services简史 96130.1.2 使用Enterprise Services的场合 96230.1.3 环境 96330.1.4 自动的事务处理 96330.1.5 分布式事务处理 96330.1.6 对象池 96330.1.7 基于角色的安全性 96430.1.8 排队的组件 96430.1.9 松散藕合的事件 96430.1.10 没有组件的服务 96430.2 创建简单的COM+应用程序 96530.2.1 类ServicedComponent 96530.2.2 标记程序集 96530.2.3 程序集的属性 96530.2.4 创建组件 96630.3 部署 96730.3.1 自动部署 96730.3.2 手工部署 96830.3.3 创建安装软件包 96830.4 Component Services浏览器 96930.5 客户应用程序 97130.6 事务处理 97130.6.1 ACID属性 97230.6.2 事务处理的属性 97230.6.3 事务处理的结果 97330.7 示例应用程序 97330.7.1 实体类 97430.7.2 OrderControl组件 97830.7.3 OrderData组件 97830.7.4 OrderLineData组件 98130.7.5 客户应用程序 98330.8 没有组件的服务 98430.9 小结 986第31章 消息队列 98831.1 概述 98831.1.1 使用Message Queuing的场合 98931.1.2 Message Queuing特性 99031.2 Message Queuing产品 99031.3 Message Queuing结构 99131.3.1 消息 99131.3.2 消息队列 99231.4 Message Queuing管理工具 99231.4.1 创建消息队列 99231.4.2 消息队列属性 99331.5 Message Queuing的编程实现 99431.5.1 创建消息队列 99431.5.2 查找队列 99531.5.3 打开已知的队列 99631.5.4 发送消息 99731.5.5 接收消息 100031.6 课程订单应用程序 100231.6.1 课程订单类库 100231.6.2 课程订单消息发送程序 100531.6.3 发送优先级和可恢复的消息 100631.6.4 课程订单消息接收程序 100731.7 接收结果 101031.7.1 确认队列 101131.7.2 响应队列 101231.8 事务队列 101231.9 消息队列的安装 101331.10 小结 1014第32章 分布式编程的未来产品 101532.1 现有技术的问题 101532.2 Web服务 101632.2.1 安全性 101732.2.2 可靠性 101832.2.3 事务处理 102032.2.4 性能 102132.3 WCF概述 102332.4 用WCF编程 102532.4.1 契约 102532.4.2 服务程序的实现 102732.4.3 绑定 102832.4.4 主机 103032.4.5 客户程序 103132.5 准备使用WCF 103232.5.1 .NET Remoting 103232.5.2 ASP.NET Web服务 103332.5.3 Enterprise Services 103332.5.4 Message Queuing 103432.6 小结 1035第Ⅶ部分 互 操 作 性第33章 COM的互操作性 103933.1 .NET和COM 103933.1.1 元数据 104033.1.2 释放内存 104033.1.3 接口 104033.1.4 方法绑定 104233.1.5 数据类型 104233.1.6 注册 104233.1.7 线程 104333.1.8 错误处理 104433.1.9 事件处理 104533.2 编组 104533.3 在.NET客户程序中使用COM组件 104633.3.1 创建COM组件 104633.3.2 创建Runtime Callable Wrapper 105033.3.3 线程问题 105333.3.4 添加连接点 105333.3.5 在Windows窗体中使用ActiveX控件 105533.3.6 在ASP.NET中使用COM对象 105833.4 在COM客户程序中使用.NET组件 105833.4.1 COM Callable Wrapper 105833.4.2 创建.NET组件 105933.4.3 创建类型库 106033.4.4 COM互操作特性 106233.4.5 COM注册 106533.4.6 创建COM客户程序 106633.4.7 添加连接点 106833.4.8 用sink对象创建客户程序 106933.4.9 在Internet Explorer中运行Windows窗体控件 107033.5 小结 1070第Ⅷ部分 Windows基本服务第34章 文件和注册表操作 107334.1 管理文件系统 107334.1.1 表示文件和文件夹的.NET类 107434.1.2 Path类 107734.1.3 示例:文件浏览器 107734.2 移动、复制和删除文件 108234.2.1 FilePropertiesAndMovement示例 108234.2.2 示例FilePropertiesAndMovement的代码 108334.3 读写文件 108734.3.1 读取文件 108734.3.2 写入文件 108934.3.3 流 109034.3.4 缓存的流 109234.3.5 读写二进制文件 109234.3.6 读写文本文件 109734.4 读取驱动器信息 110334.5 文件的安全性 110534.5.1 从文件中读取ACL 110634.5.2 从目录中读取ACL 110734.5.3 添加和删除文件中的ACL项 110934.6 读写注册表 111034.6.1 注册表 111134.6.2 .NET注册表类 111234.6.3 SelfPlacingWindow示例 111534.7 小结 1121第35章 访问Internet 112235.1 WebClient类 112235.1.1 下载文件 112335.1.2 基本的Web客户示例 112335.1.3 上传文件 112435.2 WebRequest类和WebResponse类 112535.3 把输出结果显示为HTML页面 112835.3.1 在应用程序中进行简单的Web浏览 112835.3.2 启动Internet Explorer实例 113035.3.3 给应用程序提供更多的IE类型特性 113135.3.4 使用WebBrowser控件显示文档 113735.3.5 使用WebBrowser控件打印 113835.3.6 显示请求页面的代码 113835.3.7 WebRequest和WebResponse的层次结构 114035.4 实用工具类 114035.4.1 URI 114035.4.2 IP地址和DNS名称 114135.5 较低层的协议 114435.6 小结 1150第36章 Windows服务 115136.1 Windows服务 115136.2 Windows服务的体系结构 115236.2.1 服务程序 115236.2.2 服务控制程序 115336.2.3 服务配置程序 115436.3 System.ServiceProcess命名空间 115436.4 创建Windows服务 115436.4.1 使用套接字的类库 115536.4.2 TcpClient示例 115936.4.3 Windows服务项目 116036.4.4 线程和服务 116636.4.5 服务的安装 116636.4.6 安装程序 116636.5 服务的监视和控制 117136.5.1 MMC计算机管理 117136.5.2 net.exe 117236.5.3 sc.exe 117336.5.4 Visual Studio ServerExplorer 117336.5.5 ServiceController类 117436.6 故障排除 117936.6.1 交互式服务 118036.6.2 事件日志 118136.6.3 性能监视 118636.7 电源事件 119036.8 小结 1191
用户评论