《修炼之道 .NET开发要点精讲》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:周见智,博图轩编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302393306
  • 页数:307 页
图书介绍:本书共分12章。前后分别涉及到.NET平台介绍、本书中的编程术语约定、深入浅出Windows Forms框架、.NET中对象的生命期以及.NET资源的管理、所有.NET技术中必须出现的重要角色之一:委托与事件、.NET中的异步编程模型(APM)、“容器-服务-组件”模型、组件的两种状态:“设计时(Design-Time)和运行时(Run-Time)”、对MEF(Managed Extensibility Framework)的解读以及在软件开发过程中必须遵守的五大原则(solid原则)。

第1章 另辟蹊径:解读.NET 1

1.1 前.NET时代 2

1.2 .NET的组成 3

1.2.1 .NET中的语言 4

1.2.2 .NET中的框架库 5

1.2.3 公共类型系统 5

1.2.4 公共语言规范 5

1.2.5 公共语言运行时 6

1.2.6 .NET程序的运行流程 7

1.3 .NET中的程序集 8

1.3.1 程序集与EXE文件的区别 8

1.3.2 程序集的组成 9

1.3.3 程序集的特点 10

1.4 .NET的跨平台 10

1.4.1 Write Once,Run Anywhere的真实现状 10

1.4.2 .NET与Java平台出现的目的 11

1.4.3 重新看待.NET 12

1.5 .NET平台出现的意义 12

1.6 本章回顾 14

1.7 本章思考 14

第2章 高屋建瓴:梳理编程约定 15

2.1 代码中的Client与Server 16

2.2 方法与线程的关系 17

2.3 调用线程与当前线程 19

2.4 阻塞方法与非阻塞方法 20

2.5 UI线程与线程 21

2.6 原子操作 22

2.7 线程安全 22

2.8 调用与回调 26

2.9 托管资源与非托管资源 27

2.10 框架与库 28

2.11 面向(或基于)对象与面向(或基于)组件 29

2.12 接口 30

2.13 协议 32

2.14 本章回顾 36

2.15 本章思考 36

第3章 编程之基础:数据类型 37

3.1 引用类型与值类型 38

3.1.1 内存分配 39

3.1.2 字节序 41

3.1.3 装箱与拆箱 42

3.2 对象相等判断 43

3.2.1 引用类型判等 43

3.2.2 简单值类型判等 44

3.2.3 复合值类型判等 45

3.3 赋值与复制 48

3.3.1 引用类型赋值 48

3.3.2 值类型赋值 49

3.3.3 传参 50

3.3.4 浅复制 53

3.3.5 深复制 55

3.4 对象的不可改变性 59

3.4.1 不可改变性定义 59

3.4.2 定义不可改变类型 60

3.5 本章回顾 62

3.6 本章思考 62

第4章 物以类聚:对象也有生命 65

4.1 堆和栈 66

4.2 堆中对象的出生与死亡 69

4.2.1 引用和实例 69

4.2.2 析构方法 71

4.2.3 正确使用对象 73

4.3 管理非托管资源 75

4.3.1 释放非托管资源的最佳时间 75

4.3.2 继承与组合中的非托管资源 77

4.4 正确使用IDisposable接口 82

4.4.1 Dispose模式 83

4.4.2 对象的Dispose()和Close() 87

4.5 本章回顾 88

4.6 本章思考 88

第5章 重中之重:委托与事件 91

5.1 什么是.NET中的委托 92

5.1.1 委托的结构 92

5.1.2 委托链表 95

5.1.3 委托的“不可改变”特性 101

5.1.4 委托的作用 103

5.2 事件与委托的关系 105

5.3 使用事件编程 107

5.3.1 注销跟注册事件同样重要 107

5.3.2 多线程中使用事件 107

5.3.3 委托链表的分步调用 109

5.3.4 正确定义一个使用了事件的类 111

5.4 弱委托 116

5.4.1 强引用与弱引用 116

5.4.2 弱委托的定义 119

5.4.3 弱委托的使用场合 121

5.5 本章回顾 121

5.6 本章思考 122

第6章 线程的升级:异步编程模型 123

6.1 异步编程的必要性 124

6.1.1 同步调用与异步调用 124

6.1.2 异步调用的优点 125

6.2 委托的异步调用 126

6.2.1 BeginInvoke与EndInvoke 126

6.2.2 AsyncCallback 128

6.2.3 处理异步调用时的异常 131

6.2.4 异步调用的应用 132

6.3 非委托的异步调用 134

6.3.1 异步方法 134

6.3.2 FileStream.BeginRead/FileStream.BeginWrite 136

6.4 异步编程时的注意事项 137

6.5 本章回顾 138

6.6 本章思考 138

第7章 可复用代码:组件的来龙去脉 141

7.1 .NET中的组件 142

7.1.1 组件的定义 142

7.1.2 Windows Forms 中的组件 142

7.1.3 Windows Forms中的控件 143

7.2 容器-组件-服务模型 144

7.2.1 容器的另类定义 144

7.2.2 容器与组件的合作 145

7.2.3 窗体设计器 150

7.3 设计时与运行时 154

7.3.1 组件的设计时与运行时 154

7.3.2 区分组件的当前状态 155

7.3.3 组件状态的应用 157

7.4 控件 157

7.4.1 控件基类 157

7.4.2 用户自定义控件 158

7.5 本章回顾 160

7.6 本章思考 160

第8章 经典重视:桌面GUI框架揭秘 163

8.1 了解传统Win32应用程序的必要性 164

8.2 Win32应用程序的结构 165

8.2.1 运行平台决定程序结构 165

8.2.2 Windows消息循环 167

8.2.3 窗口过程 169

8.2.4 创建基于Win32的单窗体应用程序 171

8.2.5 创建基于Win32的多窗体应用程序 178

8.3 .NET Winform程序与传统Win32程序的关联 184

8.4 Windows Forms框架 184

8.5 Winform程序的结构 187

8.5.1 UI线程 188

8.5.2 消息循环 189

8.5.3 创建窗体 195

8.5.4 窗口过程 197

8.6 模式窗体与非模式窗体 200

8.7 本章回顾 205

8.8 本章思考 205

第9章 沟通无碍:网络编程 207

9.1 两种Socket通信方式 208

9.1.1 IP与端口 208

9.1.2 基于连接的TCP通信 209

9.1.3 基于无连接的UDP通信 211

9.1.4 应用层协议 212

9.1.5 .NET中Socket编程的相关类型 215

9.2 TCP通信的实现 217

9.2.1 定义TCP通信应用层协议 218

9.2.2 编写TCP通信服务端 219

9.2.3 编写TCP通信客户端 225

9.3 UDP通信的实现 227

9.3.1 定义UDP通信应用层协议 228

9.3.2 编写UDP通信客户端 229

9.4 异步编程在网络编程中的应用 235

9.4.1 异步发送数据 237

9.4.2 异步实现“泵”结构 238

9.5 本章回顾 241

9.6 本章思考 241

第10章 动力之源:代码中的“泵” 243

10.1 “泵”的概念 244

10.1.1 现实生活中的“泵” 244

10.1.2 代码中的“泵” 245

10.1.3 代码中“泵”的作用 247

10.2 常见的“泵”结构 249

10.2.1 桌面GUI框架中的“泵” 249

10.2.2 Socket通信中的“泵” 250

10.2.3 Web服务器中的“泵” 251

10.3 “泵”对框架的意义 258

10.3.1 重新回到框架定义 258

10.3.2 框架离不开“泵” 258

10.4 本章回顾 259

10.5 本章思考 259

第11章 规绳矩墨:模式与原则 261

11.1 软件的设计模式 262

11.1.1 观察者模式 262

11.1.2 Windows Forms中的观察者模式 265

11.1.3 设计模式分类 267

11.2 软件的设计原则 267

11.2.1 SOLID原则概述 267

11.2.2 单一职责原则 268

11.2.3 开闭原则 270

11.2.4 里氏替换原则 272

11.2.5 接口隔离原则 275

11.2.6 依赖倒置原则 276

11.3 设计模式与设计原则对框架的意义 278

11.4 本章回顾 279

11.5 本章思考 279

第12章 难免的尴尬:代码依赖 281

12.1 从面向对象开始 282

12.1.1 对象基础:封装 282

12.1.2 对象扩展:继承 286

12.1.3 对象行为:多态 289

12.2 不可避免的代码依赖 292

12.2.1 依赖存在的原因 292

12.2.2 耦合与内聚 294

12.2.3 依赖造成的“尴尬” 295

12.3 降低代码依赖 297

12.3.1 认识“抽象”与“具体” 297

12.3.2 再看“依赖倒置原则” 299

12.3.3 依赖注入 302

12.4 框架的“代码依赖” 305

12.4.1 控制转换 305

12.4.2 依赖注入对框架的意义 306

12.5 本章回顾 306

12.6 本章思考 306