C#和.NET 2.0实战-平台、语言与框架
分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,.net,综合,
品牌: 斯梅切尔
基本信息·出版社:人民邮电出版社
·页码:765 页
·出版日期:2008年
·ISBN:711516620X/9787115166203
·条形码:9787115166203
·包装版本:第1版
·装帧:平装
·开本:16开
产品信息有问题吗?请帮我们更新产品信息。
内容简介《C#和.NET 2.0实战:平台、语言与框架》是一本知识密集的C#技术经典图书,Microsoft.NET MVP力作,众多.NET专家口口相传的一本秘籍。全书分为三个部分,第一部分讲述底层的.NET平台,涵盖了.NET各方面的基础知识和工作原理;第二部分是C#语言部分,通过与C++比较的方式进行讲解,清晰易懂;第三部分讲述.NETFramework中的基本类库,内容几乎涉及.NET常见领域的全部知识。
编辑推荐《C#和.NET 2.0实战:平台、语言与框架》主要面向熟悉.NET的编程人员,也适合.NET技术的初学者阅读。
目录
第1章.NET简介1.1什么是.NET1.1.1微软软件开发平台1.1.2一组规范1.1.3.NET概览1.2发展历程1.2.1过去1.2.2现在1.2.3未来1.3微软和Windows以外的.NET1.3.1ECMA组织与.NET1.3.2W3C联盟1.3.3Mono项目1.3.4微软SSCLI项目1.4.NET资源链接1.4.1网站1.4.2新闻组1.4.3博客第一部分.NET平台第2章程序集、模块和IL语言2.1程序集、模块和资源文件2.1.1程序集和模块2.1.2资源文件2.1.3程序集、模块、类型和资源2.1.4为何对多模块程序集感兴趣2.1.5ILMerge工具2.2模块的剖析2.2.1可移植的可执行文件简介2.2.2模块的结构2.2.3清单的结构2.2.4类型元数据段的结构2.3使用ildasm.exe和Reflector工具分析程序集2.3.1创建需要分析的程序集2.3.2使用ildasm.exe分析模块2.3.3Reflector工具2.4程序集attribute和版本设定2.4.1程序集的标准attribute2.4.2程序集的版本设定2.4.3友元程序集2.5强名称程序集2.5.1简介2.5.2sn.exe工具2.5.3公钥记号2.5.4为程序集签名2.5.5具体示例2.5.6程序集的延迟签名2.6国际化/本地化与卫星程序集2.6.1区域设置和本地化2.6.2资源文件2.6.3在代码中使用资源2.6.4创建卫星程序集2.6.5部署和使用卫星程序集2.6.6避免在资源无法找到时引发异常2.6.7Visual Studio与卫星程序集2.6.8区域设置与字符串格式化2.7IL语言简介2.7.1栈及其特殊的IL指令2.7.2示例1:局部变量与栈2.7.3示例2:方法调用与栈2.7.4用于比较、分支和跳转的IL指令2.7.5IL的面向对象特性2.7.6元数据符号第3章生成、部署以及配置.NET应用程序3.1用MSBuild生成应用程序3.2MSBuild:目标、任务、属性、项与条件3.2.1.proj文件、目标与任务3.2.2属性3.2.3项3.2.4条件3.3高级 MSBuild3.3.1增量生成与目标间的依赖3.3.2MSBuild转换3.3.3将一个MSBuild项目分解到多个文件3.3.4Visual Studio 2005如何利用MSBuild3.3.5创建自定义MSBuild任务3.4配置文件3.4.1machine.config文件3.4.2标准配置参数3.4.3使用 appSettings 元素定义配置参数3.4.4使用配置节定义配置参数3.4.5使用Visual Studio 2005创建配置节3.4.6配置节的注意事项3.5程序集部署:XCopy与GAC3.5.1XCopy部署3.5.2共享程序集与GAC文件夹3.5.3GAC的并存存储模型是如何解决DLL hell问题的3.5.4并存执行3.5.5查看及编辑GAC文件夹3.6发布者策略程序集3.6.1潜在的问题3.6.2解决方案3.6.3创建发布者策略程序集3.7.NET应用程序部署简介3.7.1MSI、cab、XCopy、ClickOnce 和NTD之间的对比3.7.2MSI与ClickOnce的对比3.8使用cab文件部署应用程序3.9使用MSI技术部署应用程序3.9.1添加文件3.9.2安装快捷方式3.9.3在GAC文件夹中添加一个共享程序集3.9.4安装项目属性3.9.5更新注册表3.9.6指定在安装期间执行的自定义动作3.9.7为安装提供一个自定义用户界面3.10使用ClickOnce技术部署应用程序3.10.1部署文件夹3.10.2为ClickOnce部署做准备3.10.3ClickOnce部署与移动代码安全3.10.4按需安装与下载组3.10.5更新一个使用ClickOnce安装的应用程序3.10.6应用程序所需的CAS权限集的工作机制3.10.7ClickOnce应用程序安装与执行的细节3.11使用无接触部署(NTD)技术部署应用程序3.12如果目标机器上没有安装.NET运行库怎么办第4章CLR4.1应用程序域4.1.1简介4.1.2线程与AppDomain4.1.3卸载AppDomain4.1.4AppDomain和孤立性4.1.5System.AppDomain类4.1.6在一个进程中承载多个应用程序4.1.7在其他AppDomain的上下文中运行代码4.1.8AppDomain类的事件4.1.9在同一个进程的AppDomain之间共享信息4.2在Windows进程内通过运行库宿主加载CLR4.2.1mscorsvr.dll和mscorwks.dll4.2.2mscorlib.dll程序集4.2.3运行库宿主介绍4.2.4在同一台计算机上承载多个版本的CLR4.2.5使用CorBindToRuntimeExO函数加载CLR4.2.6创建一个自定义的运行库宿主4.2.7在自定义运行库宿主中调整CLR4.2.8SQL Server 2005运行库宿主的特性4.3剖析.NET应用程序的执行状况4.4定位和加载程序集4.4.1CLR何时尝试定位程序集4.4.2CLR使用的定位算法4.4.3配置文件的 assemblyBinding 元素4.4.4定位算法示意图4.4.5影子复制机制4.5运行库类型解析4.5.1显式或隐式加载程序集4.5.2编译时引用程序集4.5.3示例4.5.4类型解析算法示意图4.6JIT(即时)编译4.6.1可移植的二进制代码4.6.2即时编译技术简介4.6.3ngen.exe工具4.6.4性能计数器与JIT编译4.7垃圾收集器和托管堆4.7.1垃圾收集技术简介4.7.2垃圾收集算法遇到的问题4.7.3.NET的GC4.7.4第一步:寻找根对象4.7.5第二步:建立活动对象树4.7.6第三步:解除分配非活动对象4.7.7第四步:清理堆碎片4.7.8第五步:重新计算托管引用所使用的物理地址4.7.9推荐做法4.7.10针对大对象的特殊堆4.7.11多线程环境下的垃圾收集4.7.12弱引用4.7.13使用System.GC类影响GC的行为4.8提高代码可靠性的机制4.8.1异步异常及托管代码可靠性4.8.2受约束执行区域4.8.3如何定义CER4.8.4内存门4.8.5可靠性契约4.8.6关键终结器4.8.7临界区4.9CLI和CLS4.9.1.NET语言必须满足的要求4.9.2从开发人员的观点看CLI和CLS第5章进程、线程与同步5.1简介5.2进程5.2.1简介5.2.2System.Diagnostics.Process类5.2.3创建和销毁子进程5.2.4避免在一台机器上同时运行同一应用程序的多个实例5.2.5终止当前进程5.3线程5.3.1简介5.3.2受托管的线程与Windows线程5.3.3抢占式多任务处理5.3.4进程与线程的优先级5.3.5System.Threading.Thread类5.3.6创建与联结线程5.3.7挂起线程5.3.8终止线程5.3.9前台线程与后台线程5.3.10受托管线程的状态图5.4访问资源同步简介5.4.1竞态条件5.4.2死锁5.5使用volatile字段与Interlocked类实现同步5.5.1volatile字段5.5.2System.Threading.Inter-locked类5.5.3Interlocked类提供的其他功能5.6使用System.Threading.Monitor类与C#的lock关键字实现同步5.6.1EnterO方法和ExitO方法5.6.2C#的lock关键字5.6.3SyncRoot模式5.6.4线程安全类5.6.5Monitor.TryEnterO方法5.6.6Monitor类的WaitO方法、PulseO方法以及PulseAllO方法5.7使用Win32对象同步:互斥体、事件与信号量5.7.1共享Win32同步对象5.7.2互斥体5.7.3事件5.7.4信号量5.8利用System.Threading.Reader-WriterLock类实现同步1135.9利用System.Runtime.Remoting.Contexts.SynchronizationAttr-ibute实现同步5.9.1同步域简介5.9.2System.Runtime.Remoting.Contexts.Synchronization与同步域5.9.3重入与同步域5.9.4另一个名为Synchronization 的attribute5.10CLR的线程池5.10.1简介5.10.2使用线程池5.11定时器5.11.1System.Timers.Timer类5.11.2System.Threading.Timer类5.11.3System.Windows.Forms.Timer类5.12异步方法调用5.12.1异步委托5.12.2回调方法5.12.3向回调方法传递状态5.12.4one-way调用5.13线程-资源亲缘性5.13.1System.ThreadStatic-Attribute5.13.2线程本地存储(TLS)5.13.3System.ComponentModel. ISynchronizeInvoke接口5.14执行上下文简介第6章安全性6.1代码访问安全性(CAS)概述6.1.1什么是移动代码6.1.2CAS:全局观6.1.3给程序集代码授予权限6.1.4在运行程序集的代码时检查权限6.2CAS:证据和权限6.2.1什么是证据6.2.2.NET Framework所提供的标准证据6.2.3谁提供证据6.2.4权限6.2.5标准权限6.2.6标识权限6.2.7安全权限6.2.8自定义权限6.3CAS:通过应用安全策略根据证据授予权限6.3.1安全策略级别6.3.2剖析安全策略6.3.3用于应用安全策略的算法6.3.4默认安全策略配置6.3.5配置安全策略6.4CAS:FullTrust权限6.5CAS:从源代码进行命令式的权限检查6.5.1CodeAccessPermissions类和PermissionSet类6.5.2DemandO方法6.5.3DenyO方法、RevertDenyO方法、PermitOnlyO方法和RevertPermitOnlyO方法6.5.4AssertO方法和RevertAssertO方法6.5.5FromXmlO方法和ToXmlO方法6.5.6System.Security.IPermission接口6.6CAS:使用attribute进行声明式的权限检查6.6.1加载程序集时调整所授权限集合的attribute6.6.2命令式与声明式的对比6.7CAS:测试和调试移动代码的实用机制6.8CAS:独立存储区权限6.9.NET、Windows 用户与角色6.9.1Windows安全简介6.9.2IIdentity接口与IPrincipal接口6.9.3Windows 安全标识符6.9.4在底层Windows线程中模拟用户6.10.NET与Windows资源的访问控制6.10.1Windows访问控制简介6.10.2在.NET代码中使用特殊的SD6.10.3在.NET代码中使用通用的SD6.11.NET与角色6.11.1定义应用程序域的主体策略6.11.2检查用户是否属于某个特定角色6.11.3COM+角色6.12.NET与密码学:对称算法6.12.1对称算法概述6.12.2.NET Framework与对称算法6.13.NET与密码学:非对称算法(公钥/私钥)6.13.1非对称算法概述6.13.2安全会话简介6.13.3RSA 算法6.13.4非对称算法与数字签名6.13.5.NET Framework与RSA算法6.14数据保护API6.14.1Windows的数据保护API6.14.2System.Security.Crypto-graphy.ProtectedData类6.14.3System.Security.Crypto-graphy.ProtectedMemory类6.14.4System.Security.SecureString类6.14.5保护配置文件中的数据6.14.6确保网络传输中数据的安全6.15使用Authenticode 技术与X.509证书验证程序集6.15.1Authenticode与强名称6.15.2证书与证书认证中心6.15.3根证书6.15.4Windows、.NET与Authenti- code技术第7章反射、后期绑定与attribute7.1反射7.1.1何时需要反射7.1.2.NET反射有何新意7.1.3对载入AppDomain的程序集的反射7.1.4从元数据获取信息7.2后期绑定7.2.1“绑定类”的含义7.2.2早期绑定与动态绑定7.2.3后期绑定7.2.4在C#编译到IL期间如何实例化一个未知的类7.2.5使用后期绑定7.2.6利用接口:使用后期绑定的正确方法7.3attribute7.3.1attribute是什么7.3.2何时需要attribute7.3.3关于attribute应该知道的事7.3.4可以应用attribute的代码元素7.3.5.NET Framework中的一些标准attribute7.3.6自定义的attribute的示例7.3.7条件attribute7.4动态生成程序集并在运行中使用7.4.1为什么要考虑动态生成程序集7.4.2一个实际的问题1867.4.3理想的第三种解决方案——动态创建程序集7.4.4将程序集保存到磁盘上的能力7.4.5结论第8章.NET与本机代码/COM/COM+之间的互操作性8.1P/Invoke8.1.1DllImportAttribute8.1.2类型转换8.1.3使用指针传递参数8.1.4传递字符串8.1.5传递结构与联合8.1.6方向attribute8.1.7委托与非托管的函数指针8.2C++/CLI语言互操作性简介8.2.1IJW功能8.2.2托管类型与非托管类型共存8.2.3在本机代码中使用托管对象8.3.NET与Win32句柄8.3.1简介8.3.2HandleCollector类8.3.3SafeHandle类与Critical-Handle类8.4在.NET 中使用COM 对象8.4.1类型元数据与类型库8.4.2Interop程序集与Runtime Callable Wrapper类8.4.3访问不使用类型库的COM组件中的COM类8.4.4使用Visual Studio导入ActiveX8.4.5使用RCW类时需要牢记的COM特性8.4.6COM类的显式后期绑定8.4.7免注册COM8.5将.NET对象包装成CCW8.5.1CCW简介8.5.2从.NET程序集中生成描述CCW类的COM类型库8.5.3在操作系统上注册CCW8.5.4将.NET程序集作为COM组件使用8.5.5.NET异常与CCW8.5.6处理对象生命周期8.6COM+简介8.6.1COM+是什么8.6.2在.NET中使用COM+:企业服务8.7COM+企业服务简介8.7.1COM+企业服务的完整列表8.7.2你需要COM+企业服务吗8.8在.NET类中利用COM+服务8.8.1服务组件简介8.8.2声明服务组件使用的企业服务8.8.3COM+上下文与服务组件8.8.4COM+应用程序简介8.8.5COM+目录8.8.6COM+应用程序的激活模式8.8.7安装服务组件8.8.8查看并操作COM+目录8.8.9构建一个使用服务组件的客户第二部分C#语言第9章语言基本概念9.1源代码组织9.1.1命名空间9.1.2命名空间中可声明的全套语法元素9.1.3C#项目的结构9.1.4命名空间和程序集的组织9.2编译步骤9.3预处理器9.3.1预处理符号与条件编译9.3.2预处理符号与条件attribute9.3.3#error指令和#warning指令9.3.4#pragma warning disable 指令和#pragma warning restore指令9.3.5#line指令9.3.6#region指令和#endregion指令9.4csc.exe编译器9.5别名机制9.5.1创建命名空间和类型的别名9.5.2命名空间别名限定符9.5.3全局限定符9.5.4外部别名9.6注释和自动文档9.6.1注释9.6.2使用Visual Studio的任务列表9.6.3自动文档9.7标识符9.8控制结构9.8.1条件语句(if/else、?:和switch)9.8.2循环语句(do、while、for和foreach)9.8.3goto语句9.9MainO方法第10章从C# 2.0的角度看.NET 2.0类型系统10.1对象在内存中的存储10.1.1对象的分配和解除分配10.1.2托管线程栈10.1.3托管堆10.1.4对象存储:托管线程栈与托管堆的比较10.1.5静态分配与动态分配的比较10.2引用类型和值类型10.3公共类型系统(CTS)10.3.1.NET类型不与任何编程语言关联10.3.2CTS:全局观10.4System.Object类10.5对象比较10.5.1等价与恒等10.5.2自定义相等比较规则10.5.3相等性与散列表10.5.4自定义大小比较规则10.6对象克隆10.7装箱和拆箱10.7.1装箱10.7.2装箱导致的危险问题10.7.3拆箱10.8基本类型10.8.1整型10.8.2实型10.8.3布尔型10.8.4字符型10.8.5整数和字符串之间的转换10.9基本类型的运算10.9.1同一基本类型上的算术运算10.9.2处理被零除的错误10.9.3处理溢出10.9.4运算符的优先级10.9.5前缀和后缀递增/递减运算符10.9.6不同基本类型之间的算术运算10.9.7位运算10.10结构10.11枚举10.11.1枚举和整型10.11.2System.Enum类10.11.3位域(一组标志)10.12字符串10.12.1System.String类10.12.2字符串字面常量10.12.3无转义字符串字面常量10.12.4使用字符串10.12.5格式化字符串10.12.6System.Text.StringBui-lder类10.13委托类和委托对象10.13.1简介10.13.2委托对象与静态方法10.13.3C# 2.0编译器的委托类推测功能10.13.4委托对象与实例方法10.13.5用一个委托对象引用多个方法10.13.6System.Delegate类10.13.7更改引用方法列表10.14可空类型10.14.1值类型和空值范式10.14.2System.Nullable T 结构10.14.3C#语法革新:Nullable T 关键字和null关键字10.14.4C#语法革新:Nullable T 的等价写法T?10.14.5C# 2.0中bool?的无差别对待10.14.6可空类型与装箱/拆箱10.14.7可空结构和可空枚举10.15部分类型10.15.1必须在每个部分声明上重复出现的类型声明元素10.15.2在每个部分声明上可选重复出现的类型声明元素10.15.3在多个部分声明上重复出现就会累积效果的类型声明元素10.15.4仅在某个部分声明上起作用的类型声明元素第11章类和对象11.1简介11.2术语11.3类的定义11.4字段11.4.1字段初始化11.4.2常数字段11.4.3字段初始化的潜在问题11.5方法11.5.1按值或按引用传递参数11.5.2C#的默认规则11.5.3按引用传递任意参数11.5.4在引用类型上使用ref关键字11.5.5参数初始化11.5.6输出参数11.5.7params关键字11.5.8方法重载11.6属性11.6.1get访问器11.6.2set访问器11.6.3关于属性的注释11.7索引器11.8事件11.8.1介绍11.8.2C#语法11.8.3一个实际的例子11.8.4异步事件处理11.8.5在同步条件下保护代码不受订阅者方法所抛异常的影响11.9嵌套类型11.10封装性和可见性11.10.1成员的可见性11.10.2类型的可见性11.10.3属性和索引器访问器的可见性11.10.4私有成员的附加说明11.10.5IL语言可见性的附加说明11.11this关键字11.12构造函数11.12.1构造函数的声明11.12.2创建对象时访问构造函数11.13对象终结和析构11.13.1析构函数、终结器和Object.FinalizeO方法11.13.2IDisposable接口和DisposeO方法11.13.3何时需要终结器和DisposeO方法11.14静态成员11.14.1静态字段、属性和事件11.14.2静态方法11.14.3静态构造函数11.14.4静态类11.15运算符重载11.15.1算术运算符的重载11.15.2类型转换运算符的重载11.15.3比较运算符的重载11.15.4运算符重载和CLS第12章继承、多态性与抽象性12.1目标:代码重用12.1.1潜在问题12.1.2解决方案之一:类的继承12.2类的继承12.2.1语法12.2.2保护及内部或保护可见性级别12.2.3类继承图12.2.4调用基类的构造函数12.2.5基类成员的可见性12.2.6封闭类12.3虚方法和多态性12.3.1潜在问题12.3.2解决方案之一:虚方法和多态性12.3.3示例一则12.3.4屏蔽多态性12.4抽象性12.4.1潜在的问题12.4.2解决方案之一:抽象类和抽象方法12.4.3示例一则12.4.4同时使用abstract关键字和override关键字12.5接口12.5.1强制代码使用者使用抽象体代替实现体12.5.2解决方法命名的冲突12.5.3解决接口扩展带来的冲突12.5.4覆写接口的实现方法12.5.5接口与结构12.6虚拟或抽象属性、事件和索引器12.7is和as运算符12.7.1is运算符12.7.2as运算符12.8代码重用的解决方案第13章泛型13.1C# 1.0的一个问题以及使用C# 2.0 泛型的解决方法13.1.1C# 1.0中集合项的类型化问题13.1.2C# 2.0泛型带来的理想方案13.2.NET 2.0泛型概览13.2.1声明多个类型参数13.2.2开放和封闭泛型类型13.2.3.NET泛型与C++模板的比较13.2.4泛型类型的可见性13.2.5泛型结构与接口13.2.6泛型类型与别名13.3类型参数的约束13.3.1默认构造函数约束13.3.2派生约束13.3.3引用类型或值类型约束13.4泛型类型的成员13.4.1方法重载13.4.2静态字段13.4.3静态方法13.4.4类构造函数13.4.5运算符重载13.4.6嵌套类型13.5运算符与泛型13.5.1类型参数的相等、不等及比较运算符13.5.2typeof运算符与泛型13.5.3params及lock关键字与泛型13.5.4default运算符13.6类型转换与泛型13.6.1基本规则13.6.2类型转换与泛型数组13.6.3is和as运算符13.7继承与泛型13.7.1基本规则13.7.2覆写泛型类型的虚方法13.8泛型方法13.8.1简介13.8.2泛型方法与约束13.8.3虚拟泛型方法13.8.4泛型方法类型参数的推测13.8.5C# 2.0语法的二义性13.9委托、事件与泛型13.9.1简介13.9.2泛型委托与泛型方法13.9.3泛型与委托的协变性及反变性13.9.4事件和泛型委托13.10反射、attribute、IL与泛型13.10.1泛型与System.Type类13.10.2泛型与System.Reflection.MethodBase类及System.Reflection.MethodInfo类13.10.3attribute与泛型13.10.4IL语言与泛型13.11.NET Framework 2.0中的泛型13.11.1对象序列化与泛型13.11.2.NET Remoting与泛型13.11.3集合与泛型13.11.4不支持泛型的领域第14章不安全代码、异常、匿名方法和迭代器14.1指针和不安全代码14.1.1允许不安全代码的编译器选项14.1.2在C#中声明不安全代码14.2在C#中使用指针14.2.1.NET中支持指针的类型14.2.2声明指针14.2.3提领和间接运算符14.2.4取大小运算符14.2.5指针运算14.2.6指针类型转换14.2.7双重指针14.2.8定址对象14.2.9指针和数组14.2.10固定数组14.2.11使用stackalloc关键字在栈上分配内存14.2.12字符串与指针14.3利用异常处理错误14.3.1潜在问题:如何恰当处理运行时出现的大多数错误14.3.2C#异常处理简介14.4异常对象和定义自己的异常类14.4.1System.Exception类14.4.2定义自己的异常类14.4.3从自己的代码中抛出异常14.4.4C#的非检查型异常14.5catch块和finally块14.5.1catch块的一些说明(异常处理程序)14.5.2finally块14.5.3增加异常语义14.6从构造函数或终结器中抛出的异常14.6.1静态构造函数所抛异常或静态字段初始化时所抛异常14.6.2终结器所抛异常14.7异常处理与CLR14.8异常处理与Visual Studio14.9异常管理使用指南14.9.1何时考虑抛出异常14.9.2在异常处理程序中做什么14.9.3在何处放置异常处理程序14.9.4异常与返回错误代码的对比14.9.5永远不要预测bug造成的后果能够被异常处理程序所捕获14.10匿名方法14.10.1C# 2.0匿名方法简介14.10.2匿名方法可以接受参数14.10.3一个精妙的特殊语法14.10.4匿名方法与泛型14.10.5匿名方法的实际应用14.11C# 2.0编译器与匿名方法14.11.1简单的方式14.11.2捕获局部变量14.11.3捕获的局部变量与代码复杂性14.11.4匿名方法访问外围方法的参数14.11.5匿名方法访问外围类的成员14.12匿名方法的高级用法14.12.1定义:闭包与词法环境14.12.2漫谈闭包14.12.3使用闭包代替类14.12.4委托与闭包14.12.5使用匿名方法处理集合14.13C# 1.x迭代器14.13.1可枚举对象、枚举器和Iterator设计模式14.13.2实例一则14.13.3一个可枚举对象对应多个枚举器14.13.4C# 1.x迭代器的缺点14.14C# 2.0迭代器14.14.1yield return关键字14.14.2迭代器与泛型14.14.3一个可枚举对象对应多个枚举14.14.4yield break关键字14.14.5yield return关键字和yield break关键字的语法限制14.14.6递归迭代器实例14.15C# 2.0编译器与迭代器14.15.1编译器自动创建并使用的枚举器类14.15.2关于生成类的说明14.16C# 2.0迭代器的高级用法14.16.1定义:协同例程和延拓14.16.2通过迭代器利用协同例程和延拓的威力14.16.3Pipeline模式14.16.4延拓与多线程的比较14.16.5C# 2.0迭代器的一个限制第三部分.NET Framework第15章集合15.1使用foreach和in关键字迭代访问集合中的项15.1.1在数组上使用foreach和in15.1.2交错数组上的foreach语法15.1.3在自定义集合类上支持foreach语法15.2数组15.2.1创建和引用数组15.2.2访问数组的项和处理越界访问15.2.3交错数组15.2.4初始化数组的项15.2.5数组的协变15.2.6System.Array类15.2.7位数组15.3序列15.3.1System.Collections.Generic.ICollection T 接口15.3.2System.Collections.Generic.IList T 接口15.3.3System.Collections.Generic.List T 类15.3.4System.ComponentModel.IBindingList接口和System.ComponentModel.IListSource接口15.3.5System.Collections.Generic.LinkedList T 类15.3.6字符串列表15.3.7System.Collections.Generic.Queue T 类15.3.8System.Collections.Generic.Stack T 类15.4字典15.4.1System.Collections.Generic.IDictionary K,V 接口15.4.2System.Collections.Generic.SortedDictionary K,V 类15.4.3System.Collections.Generic.Dictionary K,V 类15.4.4迭代访问字典中的项15.5对集合中的项进行排序15.5.1IComparer T 接口和Icom-parable T 接口15.5.2对数组中的项排序15.5.3对List T 实例中的元素排序15.6用于处理集合的函数对象15.6.1特化的委托类型15.6.2使用匿名方法15.6.3List T 类和Array类支持函数对象15.6.4C# 2.0的迭代器和集合15.7System.Collections.Generic和System.Collections之间的联系第16章基类16.1数学16.1.1System.Math类16.1.2System.Random类16.2时间、日期和持续时间16.2.1System.DateTime结构16.2.2System.TimeSpan结构16.2.3System.Diagnostics. Stopwatch类16.3驱动器、目录、文件和路径16.3.1操作驱动器16.3.2操作目录16.3.3操作文件16.3.4操作路径16.3.5文件系统监视器16.4注册表16.4.1引言16.4.2注册表的结构16.4.3注册表的层级16.4.4用.NET读/写注册表16.5调试16.5.1用来自定义对象调试时的视图的attribute16.5.2调试“仅我的代码”16.5.3调试模式16.5.4解决调试问题16.6跟踪16.6.1监听器16.6.2跟踪源和源级别16.6.3筛选跟踪源16.6.4跟踪缩进16.7正则表达式16.7.1引言16.7.2语法16.7.3示例16.7.4.NET和正则表达式16.7.5优化正则表达式的求值16.8控制台16.8.1光标16.8.2显示16.8.3大小与位置16.8.4颜色16.8.5数据输入16.8.6重定向控制台的流16.8.7杂项第17章输入、输出和流17.1流的简介17.1.1流的类层次结构17.1.2操作流的工具17.1.3流数据的类型化17.1.4字符串编码17.2读写文件17.2.1简单的文件读写17.2.2读写二进制数据文件17.2.3读写文本文件17.2.4以异步的方式操作流17.3用套接字来使用TCP/IP17.3.1套接字和TCP/IP简介17.3.2以同步的方式操作套接字17.3.3以异步的方式操作套接字17.4获取网络接口和状态的信息17.4.1发现可用网络接口17.4.2Ping17.4.3网络发生更改时所触发的事件17.4.4网络活动统计17.5HTTP和FTP客户端17.5.1URI17.5.2WebClient类17.5.3通过URI访问资源的其他类17.6在HTTP.SYS上用HttpListener编HTTP服务器代码17.6.1HTTP.SYS简介17.6.2System.Net.HttpListener类17.6.3以异步方式处理HTTP请求17.7支持邮件协议17.8缓冲和压缩数据流17.8.1通过Decorator设计模式在流上应用服务17.8.2缓冲流数据17.8.3压缩数据流17.9在串行端口上读写数据17.10支持安全通讯协议:SSL、NTLM和Kerberos17.10.1安全通讯协议简介17.10.2安全通讯协议和System.Net.Security命名空间17.10.3SslStream类17.10.4NegociateStream类17.10.5加密数据流第18章Windows Forms应用程序18.1Windows用户界面18.1.1控制台应用程序与窗口应用程序18.1.2Windows消息简介18.1.3Windows应用程序开发的发展18.1.4System.Windows.Forms命名空间简介18.2Windows Forms开发简介18.2.1处理事件18.2.2编写方法18.2.3没有Visual Studio的Windows Forms开发18.3Windows Forms开发工具18.3.1模态/非模态对话框简介18.3.2鼠标和键盘事件18.3.3Paint事件18.3.4异步处理18.3.5其他特性18.4标准控件18.4.1Windows Forms 2.0控件的层次结构18.4.2新增控件概述18.5创建自定义控件18.6显示和编辑数据18.6.1Visual Studio 2005提供的工具18.6.2BindingSource控件18.6.3用BindingSource来利用数据源18.6.4用对象列表作为数据源18.7Windows Forms和本地化18.8GDI+18.8.1System.Drawing.Graphics类18.8.2System.Drawing.Pen类18.8.3System.Drawing.Brush类18.8.4绘制文本18.8.5处理图像18.8.6优化图像的处理18.8.7动画和双缓冲第19章ADO.NET 2.019.1数据库简介19.1.1DBMS19.1.2RDBMS19.1.3SQL语言19.1.4分布式架构的必要性19.2ADO.NET简介19.2.1连接模式与非连接模式19.2.2数据提供程序19.2.3ADO.NET:全局观19.2.4我们将在范例中使用的DB19.3连接与数据提供程序19.3.1解除应用程序与数据提供程序之间的耦合19.3.2连接字符串19.3.3如何存储连接字符串以及连接字符串存储在哪里19.3.4连接池19.3.5访问数据源的元数据19.4使用DataReader在连接模式下工作19.4.1使用DataReader从数据库中获取数据19.4.2在数据库端进行标量运算19.4.3使用SQL查询来修改数据19.5使用DataSet在非连接模式下工作19.5.1使用来自数据库的数据填充缓存19.5.2在DataSet中对多表之间的关联进行操作19.5.3将DataSet中更新的数据保存到数据库19.5.4非连接模式与乐观/悲观并发策略19.5.5DataSet中数据表的约束19.5.6DataView类19.6强类型DataSet19.6.1创建强类型DataSet类19.6.2TableAdapter和强类型SQL请求19.7连接模式和非连接模式之间的桥接器19.8对象与关系数据之间的桥接器19.8.1结构问题19.8.2行为问题19.8.3解决上述问题的途径19.8.4用于对象关系映射的.NET工具19.9SQL Server数据提供程序的专有功能19.9.1异步请求19.9.2批量复制19.9.3SqlClient连接上的统计数据19.9.4SQL Server 2005 Express版本第20章事务20.1事务简介20.1.1事务管理器、资源管理器和数据源20.1.2分布式事务以及2PC算法简介20.1.3在SQL Server连接上进行的本地事务20.1.4分布式事务协调器20.2System.Transactions20.2.1LTM、持久RM和易变RM简介20.2.2System.Transactions 实现的隐式事务20.2.3在事务中被触发的事件20.2.4System.Transactions揭秘20.2.5事务隔离级别简介20.2.6事务作用域20.2.7System.Transactions 实现的显式事务20.3System.Transactions的高级用法20.3.1在多个线程中执行一个事务20.3.2以异步方式完成事务20.3.3System.Transactions和CAS20.4用于实现自定义RM的机制第21章XML21.1简介21.1.1XML所解决的问题21.1.2统一文档世界和数据世界21.1.3XML文档的结构21.2XSD、XPath、XSLT和XQuery简介21.2.1用XSD schema类型化XML文档及其数据21.2.2Xpath21.2.3XSLT21.2.4XQuery21.3遍历和编辑XML文档的方法21.4使用XmlReader类和XmlWriter类的Cursor方法21.4.1使用XmlReader类读取数据21.4.2在读取数据时对其进行验证21.4.3使用XmlWriter类编辑数据21.5使用XmlDocument类的Tree/DOM方法21.5.1使用XmlDocument类装载和遍历XML文档21.5.2使用XmlDocument类编辑和保存XML数据21.5.3使用XmlDocument类验证XML文档21.5.4XmlDocument类的事件21.6使用XPath遍历和编辑XML文档21.6.1对内存中的DOM树应用XPath表达式21.6.2用XPathNavigator对象遍历XPathDocument对象21.6.3用XPathNodeIterator对象遍历XPath的选择结果集21.6.4用XPathNavigator对象编辑XmlDocument对象21.7使用XSLT样式表转换XML文档21.8连接关系型数据与XML文档的桥接器21.8.1从DataSet获取XML文档21.8.2用XML文档填充DataSet21.8.3System.Xml.XmlDataDocument类21.8.4XML和SQL Server21.9连接对象与XML文档的桥梁21.9.1System.Xml.XmlSerialization类21.9.2用于XML序列化的attribute21.9.3sgen.exe工具21.9.4xsd.exe工具21.10Visual Studio和XML21.10.1创建、查看以及编辑XML 文档和XSD schema21.10.2用XSD schema验证XML文档21.10.3编辑和调试XSLT程序第22章.NET Remoting22.1简介22.1.1什么是.NET Remoting22.1.2FAQ22.2按引用封送22.3按值封送和二进制序列化22.4ObjectHandle类22.5对象的激活22.5.1分布式体系的组件22.5.2宿主概览22.5.3信道概览22.5.4同步方式、异步方式和单向方式调用22.5.5对象激活与对象创建22.6well-known对象的激活22.7客户端激活的对象22.7.1使用new关键字激活对象22.7.2潜在的问题22.8Factory设计模式和soapsuds.exe工具22.8.1Factory设计模式22.8.2soapsuds.exe工具22.9well-known和客户端激活的对象的生命周期22.10配置.NET Remoting22.10.1配置宿主22.10.2配置客户端22.10.3联合使用接口和配置文件22.11.NET Remoting服务器的部署22.11.1Windows服务22.11.2IIS22.12安全的.NET Remoting信道22.12.1安全的TCP信道22.12.2安全的HTTP信道22.13代理和消息22.13.1把方法调用转换成消息22.13.2IMessage接口的层次结构22.13.3透明代理、真实代理和ObjRef类22.13.4通过ObjRef类发布对象22.13.5消息接收器22.13.6为何考虑自定义真实代理22.13.7开发自定义真实代理22.13.8在类的所有实例上使用自定义真实代理22.13.9读写方法调用的参数22.14信道22.14.1简介22.14.2发送方信道和代理22.14.3接收方信道和服务器对象22.14.4消息接收器、格式化程序和信道22.14.5信道接收器提供程序22.14.6示例:显示网络消息的大小22.15.NET上下文22.15.1简介22.15.2上下文绑定和上下文灵活对象22.15.3上下文attribute和上下文属性22.15.4消息接收器区域22.15.5使用区域的示例22.15.6调用上下文22.16小结22.16.1激活对象的方式22.16.2截获消息第23章ASP.NET 2.023.1简介23.1.1历史23.1.2ASP与ASP.NET23.1.3ASP.NET 1.x与ASP.NET 2.023.2ASP.NET概览23.2.1Web Form23.2.2运行期的ASP.NET、IIS和Web应用程序23.2.3在你自己的.NET应用程序中承载ASP.NET23.2.4基于HTTP.SYS使用ASP.NET23.3ASP.NET应用程序的源代码23.3.1内联代码23.3.2服务器端脚本的代码段23.3.3代码隐藏23.4编译和部署模型23.4.1动态编译23.4.2就地预编译23.4.3部署预编译23.5Web Form和控件23.5.1服务器控件23.5.2客户端和服务器端之间的交互23.5.3视图状态23.5.4回发事件和非回发事件23.5.5控件状态23.5.6跨页面传递23.5.7HTML服务器控件与Web服务器控件23.6页面生命周期23.7ASP.NET应用程序配置23.7.1Web.Config文件的组织23.7.2Web.Config文件的部分23.7.3 processModel 部分23.7.4更新配置23.7.5在运行期应用配置更新23.8HTTP管线23.8.1简介23.8.2HttpApplication类和Global.asax文件23.8.3HTTP上下文23.8.4HTTP模块23.8.5HTTP处理程序23.9状态和会话管理23.9.1会话管理23.9.2处理会话标识符23.9.3会话存储的标准实现23.9.4为存储会话提供自定义实现23.10Provider设计模式23.11错误处理23.11.1 system .Web 配置元素和 customErrors 配置元素23.11.2Application_Error事件23.11.3ErrorPage属性23.12跟踪、诊断以及事件管理23.12.1trace.axd HTTP处理程序23.12.2ASP.NET性能计数器23.12.3ASP.NET状态监视23.13输入数据的校验23.13.1校验控件23.13.2实现自定义校验23.13.3校验组23.13.4ValidationSummary类23.14用户控件23.14.1复合用户控件23.14.2用户控件事件23.14.3用户控件状态23.14.4用户控件与Visual Studio的设计时支持23.15缓存23.15.1页面缓存23.15.2缓存页面的多个版本23.15.3页面片段缓存23.15.4缓存后替换23.15.5数据缓存23.15.6缓存依赖23.15.7SQL Server缓存依赖23.15.8自定义缓存依赖23.16数据源23.16.1通过程序的方式绑定控件和数据源23.16.2声明式绑定控件和数据源23.16.3平铺数据源与层次数据源23.16.4ObjectDataSource类23.16.5利用数据源更新数据23.17查看并编辑数据 23.17.1GridView控件23.17.2模板23.17.3DetailsView控件23.17.4FormView控件23.17.5显示XML数据23.18母版页23.18.1母版页和内容页面23.18.2嵌套母版页23.18.3配置母版页23.18.4从内容页面访问母版页23.19ASP.NET 2.0与本地化23.20站点导航23.21安全23.21.1通过IIS验证Windows用户23.21.2ASP.NET验证23.21.3表单验证提供程序23.21.4管理用户23.21.5管理角色23.21.6安全服务器控件23.22个性化与用户配置23.22.1配置提供程序以及用户数据的管理23.22.2匿名识别23.22.3个性化与会话23.23样式、主题与皮肤23.23.1CSS样式和控件23.23.2主题23.23.3皮肤23.23.4命名的皮肤23.24WebPart23.24.1创建包含WebPart的页面23.24.2设计方式23.24.3WebPart目录23.24.4编辑方式23.24.5连接WebPart第24章使用.NET进行Web服务开发24.1简介24.1.1SOA:面向服务架构24.1.2SOAP和WSDL24.1.3WS-I基本概要24.1.4消息交换模式24.2开发一个简单的Web服务24.2.1不使用Visual Studio开发一个简单的Web服务24.2.2使用Visual Studio开发一个简单的Web服务24.3测试与调试Web服务24.3.1测试Web服务24.3.2调试Web服务24.4创建Web服务的.NET客户端24.4.1不使用Visual Studio来创建Web服务的.NET客户端24.4.2使用Visual Studio创建Web 服务的.NET客户端24.5异步调用与消息交换模式24.6通过.NET Remoting客户端使用Web服务24.7SOAP消息24.7.1简介24.7.2定义以及处理SOAP首部24.7.3对SOAP消息体编码24.7.4SOAP错误消息24.7.5SOAP与底层传输协议24.8Web服务契约与WSDL语言24.8.1WSDL能够表达什么24.8.2剖析WSDL文档24.9WSE与WS-*规范简介24.9.1WSE简介24.9.2WSE 3.0所支持的规范24.9.3安装WSE24.9.4WSE是如何利用SOAP扩展的24.9.5使用WSE诊断的第一个测试24.10WSE尚未支持的WS-*规范24.10.1WS-PolicyAttachment与WS-MetadataExchange24.10.2WS-ReliableMessage24.10.3UDDI and WS-Discovery24.10.4WS-Federation24.10.5WS-Coordination24.10.6WS-AtomicTransaction与WS-BusinessActivity24.10.7WS-Enumeration24.10.8WS-Eventing24.10.9WS-Management24.11WCF简介附录AC# 2.0的关键字附录B.NET 2.0的新增功能附录C设计模式简介附录D针对.NET 2.0平台的工具
……[看更多目录]