《NET之美:NET关键技术深入解析》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:张子阳著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:7111445326
  • 页数:432 页
图书介绍:

第一部分 C#语言基础 2

第1章 C#类型基础 2

1.1 值类型和引用类型 2

1.1.1 值类型 2

1.1.2 引用类型 5

1.1.3 简单类型 6

1.1.4 装箱和拆箱 7

1.2 对象判等 8

1.2.1 引用类型判等 9

1.2.2 简单值类型判等 10

1.2.3 复杂值类型判等 12

1.3 对象复制 14

1.3.1 浅度复制 14

1.3.2 深度复制 17

1.4 不可变类型 19

1.4.1 从类型设计谈起,Class还是Struet 19

1.4.2 数据不一致的问题 20

1.4.3 常量性和原子性 20

1.4.4 避免外部类型对类型内部的访问 21

1.5 本章小结 23

第2章 C#中的泛型 24

2.1 理解泛型 24

2.1.1 为什么要有泛型 24

2.1.2 类型参数约束 27

2.1.3 泛型方法 31

2.2 泛型与集合类型 32

2.2.1 避免隐式的装箱和拆箱 32

2.2.2 编译时的类型安全 34

2.2.3 使用泛型的一个小技巧 34

2.3 本章小结 35

第3章 C#中的委托和事件 36

3.1 理解委托 36

3.1.1 将方法作为方法的参数 36

3.1.2 将方法绑定到委托 39

3.1.3 委托与接口 41

3.2 事件的由来 42

3.2.1 更好的封装性 42

3.2.2 限制类型能力 45

3.3 委托的编译代码 47

3.4 .NET框架中的委托和事件 48

3.4.1 示例说明 48

3.4.2 Observer设计模式简介 49

3.4.3 实现示例的Observer设计模式 50

3.4.4 .NET框架中的委托与事件 51

3.5 委托进阶 53

3.5.1 为什么委托定义的返回值通常都为void 53

3.5.2 如何让事件只允许一个客户订阅 54

3.5.3 获得多个返回值与异常处理 56

3.6 订阅者方法超时的处理 60

3.7 委托和方法的异步调用 64

3.8 不使用委托实现Observer模式 69

3.8.1 设计思想概述 69

3.8.2 Observer模式的接口定义 70

3.8.3 Observer模式的实现 72

3.8.4 推模式和拉模式 74

3.8.5 推模式和拉模式的区别 79

3.9 本章小结 79

第4章 对象的筛选和排序 80

4.1 对象的筛选 80

4.1.1 基于拼装SQL的筛选 80

4.1.2 基于对象的筛选 84

4.1.3 事件探查器 89

4.2 对象的排序 89

4.2.1 简单排序——对固定属性的默认排序 90

4.2.2 高级排序——多个属性组合排序 92

4.2.3 页面调用 96

4.3 本章小结 96

第5章 LINQ 97

5.1 LINQ预备知识 98

5.1.1 泛型和委托 98

5.1.2 隐式类型的局部变量 100

5.1.3 匿名类型 101

5.1.4 扩展方法 102

5.1.5 匿名方法和Lambda表达式 104

5.2 集合 107

5.2.1 理解集合 107

5.2.2 创建集合类 108

5.2.3 实现IEnumerable<T>接口 113

5.3 LINQ查询 115

5.3.1 LINQ to Objects 115

5.3.2 查询表达式 116

5.3.3 延迟加载 117

5.3.4 混合使用LINQ to Objects 120

5.4 LINQ查询运算符 121

5.4.1 返回IEnumerable<T> 121

5.4.2 返回其他序列类型 127

5.4.3 返回序列中元素 127

5.4.4 返回标量值 129

5.4.5 其他方法 130

5.5 本章小结 130

第二部分 .NET框架 132

第6章 认识.NET平台 132

6.1 引子 132

6.2 CIL——公共中间语言 133

6.3 BCI和FCL 136

6.3.1 BCI——基类库 136

6.3.2 FCI——框架类库 140

6.4 CTS——公共类型系统 140

6.5 CLS——公共语言规范 141

6.6 CLR——公共语言运行时 143

6.6.1 程序集概述 143

6.6.2 运行程序集 145

6.7 CLI——公共语言基础 147

6.8 本章小结 147

第7章 程序集 148

7.1 程序集详探 148

7.1.1 程序集模块 148

7.1.2 清单和元数据 151

7.1.3 程序集资源 153

7.2 强名称程序集 159

7.2.1 非强名称程序集的问题 159

7.2.2 强名称的定义 161

7.2.3 为程序集赋予强名称 162

7.2.4 防篡改和数字签名 163

7.2.5 全局程序集缓存 165

7.2.6 延迟签名 167

7.3 本章小结 168

第8章 流和序列化 169

8.1 文件 169

8.1.1 不同视角下的文件 169

8.1.2 位、字节和字节数组 170

8.2 流 171

8.2.1 关于流的类比 171

8.2.2 使用流进行文件复制 172

8.2.3 流的类型体系 175

8.3 序列化 180

8.3.1 基本操作 180

8.3.2 事件响应 183

8.3.3 自定义序列化过程 186

8.4 本章小结 188

第9章 .NET中的加密和解密 189

9.1 加密和解密的相关概念 189

9.1.1 散列运算 190

9.1.2 对称加密 191

9.1.3 非对称加密 192

9.1.4 数字签名 194

9.1.5 综合实现 195

9.1.6 证书机制 195

9.2 .NET对加密和解密的支持 196

9.2.1 散列运算 196

9.2.2 对称加密和解密 198

9.2.3 非对称加密 201

9.3 本章小结 206

第10章 网络编程 207

10.1 网络编程基本概念 207

10.1.1 面向连接的传输协议——TCP 207

10.1.2 即时通信程序的三种模式 209

10.2 基本操作 211

10.2.1 服务端对端口进行侦听 211

10.2.2 客户端与服务端连接 212

10.2.3 服务端获取客户端连接 215

10.3 同步传输字符串 218

10.3.1 客户端发送,服务端接收并输出 218

10.3.2 服务端回发,客户端接收并输出 224

10.3 中英文字符大小和文本边界问题 226

10.4.1 ASCII、UTF8、Unicode编码下的中英文字符大小 226

10.4.2 文本边界问题 228

10.5 异步传输字符串 233

10.5.1 服务端的实现 234

10.5.2 客户端的实现 235

10.5.3 程序测试 237

10.6 文件传输 238

10.6.1 订立协议 239

10.6.2 协议处理类的实现 240

10.6.3 客户端发送文件 242

10.7 本章小结 249

第11章 .NET Remoting 250

11.1 理解Remoting 250

11.1.1 应用程序域基本概念 250

11.1.2 应用程序域的基本操作 251

11.1.3 在默认应用程序域中创建对象 252

11.1.4 在新建应用程序域中创建对象 253

11.1.5 代理和封送 254

11.1.6 传引用封送示例 256

11.1.7 服务程序集、服务端应用程序(域)和客户端应用程序(域) 258

11.2 Remoting架构 258

11.2.1 客户端(客户应用程序域) 259

11.2.2 服务端(宿主应用程序域) 259

11.2.3 Remoting对象的三种激活方式 259

11.3 Remoting程序的基本操作 261

11.3.1 服务程序集 261

11.3.2 服务端应用程序 262

11.3.3 客户端应用程序 265

11.3.4 程序运行测试 267

11.4 Remoting中的传值封送 271

11.5 分离服务程序集元数据和代码实现 272

11.5.1 使用接口分离服务程序集 273

11.5.2 使用“空类”分离服务程序集 275

11.5.3 使用Soapsuds.exe分离程序集 278

11.5.4 使用工厂方法实现分离 280

11.6 Remoting中的方法回调 283

11.6.1 远程回调方式说明 283

11.6.2 客户端类型和服务端类型 284

11.6.3 服务端、客户端会话模型 286

11.6.4 宿主应用程序 286

11.6.5 程序运行测试 288

11.7 本章小结 289

第12章 在.NET中操作XML 290

12.1 XML概述 290

12.1.1 为什么要有XML 290

12.1.2 XML文档结构 292

12.1.3 XML的处理模型 296

12.1.4 XML验证——XSD、DTD和XDR 297

12.1.5 XML格式转换——XSLT 299

12.1.6 XML选择器——XPATH 299

12.2 操作XML 300

12.2.1 节点类型 300

12.2.2 使用XmlReader和XmlWriter 302

12.2.3 使用XmlDocument和XPath 306

12.2.4 使用XSD验证XML 309

12.2.5 使用XSLT对XML进行转换 311

12.3 本章小结 312

第13章 .NET应用程序配置 314

13.1 .NET中的程序配置介绍 314

13.2 .NET应用程序配置方法 316

13.2.1 使用.NET内置节点和.NET内置处理程序 316

13.2.2 使用自定义节点和.NET内置处理程序 318

13.2.3 使用自定义节点和自定义处理程序 321

13.2.4 “存储”类型实例 329

13.2.5 统一节点配置管理 335

13.3 本章小结 338

第14章 基于角色的安全性 339

14.1 概述 339

14.2 在ASP.NET中使用基于角色的安全性 341

14.3 开始前的准备 341

14.3.1 创建页面,配置Web.config 341

14.3.2 创建用户数据表和数据访问 342

14.4 用户登录——为IIdentity添加用户数据 344

14.4.1 Login.aspx页面实现 344

14.4.2 Default.aspx页面预览 346

14.5 自定义IPrincipal和IIdentity 347

14.6 自定义类型携带用户数据 350

14.7 本章小结 353

第15章 .NET中的反射 354

15.1 反射初步 354

15.1.1 建表及其问题 354

15.1.2 数组及其问题 355

15.1.3 枚举及其问题 356

15.1.4 使用反射遍历枚举字段 357

15.1.5 使用泛型来达到代码重用 359

15.1.6 .NET中反射的一个示例 360

15.2 Type类 362

15.2.1 反射的作用 362

15.2.2 获取Type对象实例 362

15.2.3 Type类型及System.Reflection命名空间的组织结构 362

15.3 反射程序集 365

15.4 反射基本类型 367

15.4.1 获取基本信息 367

15.4.2 成员信息与MemberInfo类型 369

15.4.3 字段信息与FieldInfo类型 371

15.4.4 属性信息与PropertyInfo类型 372

15.4.5 方法信息与MethodInfo类型 373

15.4.6 ConstructorInfo类型和EventInfo类型 373

15.5 反射特性 373

15.5.1 .NET内置特性介绍 374

15.5.2 自定义特性(CustomAttributes) 375

15.5.3 使用反射查看自定义特性 380

15.6 动态创建对象 381

15.6.1 使用无参数构造函数创建对象 381

15.6.2 使用有参数构造函数创建对象 382

15.7 动态调用方法 382

15.7.1 使用InvokeMember调用方法 383

15.7.2 使用MethodInfo.Invoke调用方法 384

15.8 示例:遍历System.Drawing.Color结构 385

15.9 本章小结 388

第16章 多线程 389

16.1 线程的概念 389

16.2 线程的基本操作 392

16.2.1 创建新线程 392

16.2.2 查看当前线程 394

16.2.3 Sleep()方法 394

16.2.4 Interrupt()方法 395

16.2.5 前台线程和后台线程 396

16.2.6 Join()方法 397

16.2.7 Suspend()和Resume()方法 398

16.2.8 线程异常 400

16.2.9 Abort()方法 401

16.3 线程同步 402

16.3.1 使用Monitor 403

16.3.2 使用WaitHandle 413

16.4 本章小结 421

第17章 对象生存期与垃圾收集 422

17.1 基础概念回顾 422

17.2 垃圾回收机制 424

17.2.1 判断哪些对象需要进行回收 424

17.2.2 对象如何分配在堆上 425

17.2.3 垃圾回收的执行过程 426

17.3 对象析构 428

17.3.1 Finalizer析构器 428

17.3.2 Dispose()和Finalize() 429

17.3.3 结合析构器函数和Dispose() 431

17.4 本章小结 432