《C#设计与开发专家指南》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)缪勒著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302236542
  • 页数:563 页
图书介绍:本书教授读者如何在考虑运行速度的前提秒制定自己的设计策略、评估安全性和可靠性的方式、用语部署、支持、维护应用程序的技术、用C#扩展应用程序以及命令行使用的步骤。

第Ⅰ部分 设计策略 3

第1章 定义语言环境 3

1.1 设计战略元素的定义 3

1.2 C#语言 4

1.2.1 C#语言的优点 5

1.2.2 了解劣势 8

1.2.3 使用多种语言开发 10

1.2.4 多平台 11

1.3 盘点工具 11

1.4 收集资源 12

1.4.1 团队语言资源库 12

1.4.2 团队技能 13

1.4.3 经验的意义 13

1.4.4 定义外部资源需求 14

1.5 制定自己的设计策略 14

第2章 应用程序生命周期 17

2.1 生命周期的阶段 18

2.1.1 确定应用程序概念 18

2.1.2 构建应用程序开发团队 19

2.1.3 定义规范 21

2.1.4 确定概念的可行性 22

2.1.5 创建设计 23

2.1.6 测试设计 26

2.1.7 实现设计 27

2.1.8 编写应用程序 28

2.1.9 调试和测试应用程序 29

2.1.10 测试用户需求 30

2.1.11 提高可靠性和安全性 31

2.1.12 部署应用程序 32

2.1.13 应用程序的支持与维护 33

2.1.14 应用程序退役 34

2.2 生命周期模型 35

2.2.1 螺旋模型 35

2.2.2 瀑布模型 37

2.2.3 抛弃式模型 39

2.2.4 演化模型 40

2.2.5 增量/迭代模型 41

2.2.6 快速应用开发模型 42

2.3 敏捷编程技术 44

2.3.1 了解敏捷编程 44

2.3.2 敏捷编程的优点 45

2.3.3 敏捷编程的缺点 46

2.3.4 常用敏捷编程策略 46

2.4 制定自己的设计策略 52

第3章 定义设计策略 53

3.1 创建对象模型 54

3.1.1 定义类概念 54

3.1.2 功能集 54

3.1.3 定义候选类 55

3.1.4 从候选类中选择类 56

3.1.5 开发内部类 58

3.1.6 添加外部类 58

3.1.7 考虑类的取舍问题 59

3.1.8 实现类设计 60

3.2 创建数据模型 61

3.2.1 定义数据需求 61

3.2.2 访问性、可靠性和安全性需求 63

3.2.3 创建数据类 64

3.3 用户需求 64

3.3.1 定义用户需求 65

3.3.2 创建用户类 67

3.4 将设计转化为UML 67

3.4.1 Visio 68

3.4.2 Visio UML功能概述 69

3.4.3 由UML生成代码 71

3.5 制定自己的设计策略 73

第4章 设计用户界面 75

4.1 应用程序窗体类型 75

4.1.1 创建对话框实用程序 76

4.1.2 单文档界面 78

4.1.3 多文档界面 79

4.1.4 选项卡式界面 80

4.1.5 开发皮肤界面和自由格式界面的应用程序 81

4.1.6 RibbonX应用程序 82

4.1.7 通知区域 84

4.1.8 命令行 85

4.2 常用用户界面类型 86

4.2.1 菜单驱动 87

4.2.2 任务驱动 87

4.2.3 信息驱动 88

4.2.4 向导驱动 88

4.2.5 角色驱动 89

4.3 制定用户界面策略 90

4.3.1 使用户保持控制权 91

4.3.2 使用户沿正确的方向操作 92

4.3.3 定义交互界面 92

4.3.4 定义可靠的界面 93

4.3.5 安全性 93

4.4 可访问性需求 94

4.4.1 视觉元素的考虑 95

4.4.2 添加工具提示和可访问性说明 96

4.4.3 色彩使用技巧 97

4.5 制定自己的设计策略 98

第5章 设计时的速度考虑 99

5.1 速度与性能 99

5.2 开发高速应用程序 101

5.2.1 多线程 101

5.2.2 速度并不等同于代码 102

5.2.3 多重处理的影响 102

5.3 测量应用程序的速度 103

5.3.1 标准计数器 103

5.3.2 定义应用程序计数器 109

5.4 制定自己的设计策略 112

第6章 设计时的可靠性考虑 115

6.1 检验资源的有效性 116

6.2 保存数据、设置和状态 118

6.2.1 实现数据存储 118

6.2.2 保存设置的方法 119

6.2.3 实现状态存储 121

6.3 预测意外情况 121

6.4 RibbonX的可靠性优势 122

6.5 制定自己的设计策略 123

第7章 设计中的安全性考虑 125

7.1 假设最坏情况 126

7.2 消除错误输入 127

7.2.1 使用正确的控件或组件 128

7.2.2 检验全部用户输入 129

7.2.3 验证数据源 135

7.3 隐藏数据 136

7.3.1 保持数据本地化 136

7.3.2 加密数据 137

7.3.3 将数据放在受保护的位置 138

7.4 添加应用程序监视 138

7.4.1 定义监视策略 139

7.4.2 实现日志记录 140

7.4.3 使用事件日志 141

7.4.4 发送管理员警报 142

7.5 团队概述 143

7.6 制定自己的设计策略 144

第Ⅱ部分 编码策略 147

第8章 定制集成开发环境 147

8.1 配置IDE 147

8.1.1 使用Visual Studio选项 148

8.1.2 定制工具栏和菜单 151

8.1.3 添加外部工具 155

8.2 使用代码段、宏和插件 156

8.2.1 创建和使用代码段 157

8.2.2 利用宏自动执行任务 159

8.2.3 依靠插件扩展功能 159

8.3 使用Visual Studio命令行 160

8.3.1 访问命令行 160

8.3.2 命令行开关 161

8.3.3 执行Visual Studio命令 164

8.3.4 运行应用程序 165

8.4 为自己的应用程序编写代码 165

第9章 脚本 167

9.1 脚本创建选择 167

9.1.1 使用SQL Server 168

9.1.2 创建C#脚本 168

9.1.3 C#表达式评估 169

9.1.4 Windows PowerShell 169

9.1.5 语言集成查询 170

9.2 与SQL Server交互 170

9.2.1 Visual Studio 171

9.2.2 使用SQL Server内置功能 172

9.3 在应用程序中加入脚本 174

9.4 C#表达式 174

9.5 制定Windows PowerShell解决方案 175

9.5.1 PS实用程序 176

9.5.2 创建脚本 177

9.5.3 执行脚本 180

9.5.4 获得调试支持 181

9.6 为自己的应用程序编写代码 181

第10章 在IDE中浏览数据 183

10.1 使用IDE元素 184

10.1.1 Autos’对话框 184

10.1.2 Locals对话框 185

10.1.3 Watch对话框 186

10.1.4 Command Window对话框 186

10.2 使用可视化器 187

10.2.1 为可视化器定义需求 187

10.2.2 Text可视化器 188

10.2.3 XML可视化器 189

10.2.4 HTML可视化器 190

10.2.5 DataSet可视化器 191

10.3 获取第三方可视化器 191

10.4 创建自定义可视化器 192

10.4.1 配置可视化器对象 192

10.4.2 添加可视化器代码 194

10.4.3 测试新可视化器 196

10.5 为自己的应用程序编写代码 198

第11章 控件与组件 199

11.1 控件与组件的区别 200

11.2 定义控件类型 204

11.2.1 创建派生控件 205

11.2.2 创建UserControl 212

11.2.3 创建新控件 214

11.3 创建组件 216

11.3.1 开发新组件时需要考虑的基本问题 216

11.3.2 定义新组件项目 217

11.4 添加新组件代码 218

11.5 测试组件 222

11.6 用对象测试平台测试类 224

11.7 为自己的应用程序编写代码 226

第12章 为应用程序编写代码 229

12.1 采用合适的命名习惯 229

12.1.1 匈牙利命名法 230

12.1.2 驼峰命名法 230

12.1.3 帕斯卡命名法 231

12.1.4 添加专用语法 232

12.2 添加命令行功能 234

12.2.1 何时使用命令行开关 234

12.2.2 添加命令行开关 235

12.2.3 测试命令行功能 240

12.3 正确退出应用程序 242

12.3.1 在什么情况下只关闭窗体是不够的 242

12.3.2 用System.Environment设置退出码 243

12.3.3 Application.Exit()方法 245

12.3.4 用P/Invoke退出应用程序 247

12.4 使用自定义功能 248

12.4.1 何时使用自定义功能 248

12.4.2 使用自定义特征和异常类 249

12.5 为自己的应用程序编写代码 249

第13章 文档 251

13.1 对应用程序增加文档支持 251

13.1.1 文档概述 252

13.1.2 考虑开发人员的需求 253

13.1.3 考虑用户需求 253

13.1.4 考虑管理员的需要 255

13.2 创建文档注释 256

13.2.1 注释的类型 256

13.2.2 注释的正确位置 259

13.3 使用XML文件 261

13.4 文档输出的其他作用 265

13.4.1 用LINQ查询文档文件 265

13.4.2 根据文档自动创建应用程序报告 266

13.5 为自己的应用程序编写代码 266

第14章 错误处理 267

14.1 对错误处理不做假设的优点 268

14.2 特殊错误处理的重要性 269

14.2.1 正确地使用标准异常类 269

14.2.2 实现自定义错误处理 278

14.2.3 错误层次的重要性 279

14.3 错误处理的一致性问题 280

14.3.1 单一来源错误 281

14.3.2 多来源错误 281

14.3.3 最终错误处理 281

14.4 设计自恢复应用程序 282

14.5 为自己的应用程序编写代码 284

第15章 测试、调试和质量保证 285

15.1 测试应用程序 285

15.1.1 创建新测试 286

15.1.2 运行测试 290

15.1.3 利用Test View对话框设置测试属性 291

15.1.4 利用测试列表编辑器组织测试 293

15.1.5 Code Coverage Results对话框 294

15.1.6 Test Runs对话框 296

15.1.7 人工测试 297

15.2 调试应用程序 298

15.2.1 调试对话框 298

15.2.2 向IDE提问题 299

15.2.3 浏览内存内容 300

15.2.4 通过用户获得漏洞 301

15.3 质量保证检验 301

15.3.1 与B团队交流 301

15.3.2 构造有价值的反馈 302

15.3.3 用户参与 303

15.4 为自己的应用程序编写代码 303

第16章 部署应用程序 305

16.1 确定部署类型 306

16.1.1 测试版 306

16.1.2 局部部署 307

16.1.3 企业部署 308

16.1.4 热塑-包装部署 309

16.1.5 主版本和次版本 309

16.2 选择部署方法 311

16.2.1 利用XCopy部署 312

16.2.2 创建基本的安装项目 313

16.2.3 修改细节 319

16.2.4 使用项目安装向导 320

16.2.5 CAB方法 321

16.3 选择介质类型 322

16.4 完成部署 323

16.5 评价结果 325

16.6 为自己的应用程序编写代码 326

第17章 应用程序的支持与维护 327

17.1 创建错误日志 327

17.1.1 定义错误 327

17.1.2 处理错误日志设置 328

17.1.3 创建错误日志类 329

17.1.4 浏览错误日志输出 332

17.2 利用错误日志提供支持 333

17.2.1 定义错误、资源和解决方案 333

17.2.2 确定是否需要开发人员直接交互 334

17.2.3 创建支持日志 334

17.3 通过错误日志和支持日志实现维护 334

17.3.1 维护优先级 335

17.3.2 检验维护要求 335

17.3.3 测试维护 335

17.3.4 部署补丁 336

17.4 为自己的应用程序编写代码 336

第Ⅲ部分 速度、可靠性及安全性第18章 围绕性能三角形开发 339

18.1 初始开发阶段后的工作 340

18.2 定义性能三角形 340

18.2.1 速度 342

18.2.2 可靠性 343

18.2.3 安全性 344

18.3 为应用程序创建完美的性能三角形 346

18.4 使应用程序既可靠又安全 347

第19章 应用程序的速度 349

19.1 定义速度的平衡性 349

19.1.1 在错误的位置删除代码 350

19.1.2 创建错误的答案确实快 351

19.2 速度测量 352

19.2.1 示例代码简介 353

19.2.2 启动性能向导 354

19.2.3 测评性能 357

19.2.4 浏览性能结果 363

19.2.5 性能报告比较 366

19.3 使应用程序既可靠又安全 368

第20章 应用程序的可靠性 369

20.1 定义可靠性的平衡 369

20.1.1 避免应用程序过度保守 370

20.1.2 创建绝对不做任何无效工作的应用程序 370

20.1.3 定义外部威胁 372

20.1.4 制定可靠性计划 372

20.2 意想不到的用户 373

20.2.1 最好是在测试期间中断应用程序 374

20.2.2 创建经验教训日志 374

20.3 检验代码 375

20.3.1 运行代码分析 376

20.3.2 计算代码度量 377

20.4 使应用程序既可靠又安全 379

第21章 应用程序的安全性 381

21.1 定义安全性的平衡 381

21.1.1 使数据远离用户 382

21.1.2 创建性能障碍 382

21.1.3 过度监管 383

21.2 入侵应用程序 384

21.2.1 依靠内部测试员测试 385

21.2.2 第三方测试 386

21.2.3 检验不可能性 387

21.2.4 交互作用 388

21.3 更新安全性配置文件 388

21.4 管理监视过程 389

21.5 数据的加密与解密 390

21.6 使应用程序既可靠又安全 391

第Ⅳ部分 编码技术 395

第22章 序列化XML 395

22.1 以XML作为存储方法 396

22.1.1 实现XCopy应用程序 396

22.1.2 XML数据示例 397

22.1.3 在报告中使用XML数据 399

22.2 创建XML存储类 400

22.2.1 定义XML数据元素 400

22.2.2 创建自定义数据说明 401

22.2.3 设计健壮的属性 402

22.3 以XML格式保存数据 403

22.3.1 选择数据位置 403

22.3.2 实现保存例程 404

22.4 以XML格式加载数据 405

22.4.1 从磁盘获得XML数据 406

22.4.2 使用XML数据修改环境 408

22.5 处理序列化的XML数据 409

22.5.1 添加新数据 409

22.5.2 编辑已有项 411

22.5.3 删除数据项 413

22.5.4 对数据项排序 415

22.5.5 在屏幕上显示数据项 417

22.6 实现自己的设计 417

第23章 LINQ 419

23.1 Visual Studio 2008对LINQ的支持 419

23.1.1 LINQ及提供程序 420

23.1.2 LINQ与SQL的比较 420

23.1.3 使用LINQ实现非查询解决方案 424

23.2 定义基本操作符 424

23.2.1 操作符from和select 424

23.2.2 操作符where 425

23.2.3 操作符orderby 426

23.3 创建LINQ查询 427

23.3.1 定义简单查询 427

23.3.2 多数据源的连接 428

23.3.3 操作符let 430

23.4 用LINQ与各种数据源交互 431

23.4.1 内置提供程序 431

23.4.2 LINQ to Objects提供程序 432

23.4.3 LINQ to DataSet提供程序 435

23.4.4 LINQto SQL提供程序 439

23.4.5 LINQ to XML提供程序 444

23.4.6 第三方提供程序 449

23.5 实现自己的设计 451

第24章 利用F#使应用程序增值 453

24.1 了解F# 454

24.1.1 函数式语言 454

24.1.2 定义函数式语言的需求 455

24.2 Visual Studio 2008对F#的支持 455

24.2.1 下载产品 456

24.2.2 安装F# 456

24.3 使用命令行 457

24.3.1 修改命令行路径来满足F#的要求 457

24.3.2 定义基本脚本 458

24.3.3 运行应用程序 458

24.3.4 与F#进行交互 459

24.4 创建F#应用程序 460

24.5 实现自己的设计 462

第25章 创建多线程应用程序 463

25.1 了解多线程 463

25.1.1 定义多线程 464

25.1.2 多线程的优点 465

25.1.3 多线程的缺点 467

25.1.4 多线程的现况 468

25.2 创建基本的多线程应用程序 469

25.2.1 定义项目 469

25.2.2 添加文件处理线程类 470

25.2.3 添加监视线程类 471

25.2.4 开发应用程序代码 475

25.2.5 测试多线程应用程序 478

25.3 实现自己的设计 481

第26章 创建报告和其他输出 483

26.1 定义优秀报告的元素 484

26.1.1 以可接受的报告作为工作的起点 484

26.1.2 将可接受的报告提升到好的水平 485

26.1.3 测试报告 486

26.2 了解用户报告需求 486

26.2.1 内容需求 487

26.2.2 定义格式需求 487

26.2.3 包含机构策略 488

26.2.4 为报告建立用户关系 489

26.3 创建自修改报告 490

26.4 设计其他形式的应用程序输出 491

26.5 实现自己的设计 493

第27章 设计底层应用程序元素 495

27.1 定义P/Invoke 495

27.2 调用外部函数 497

27.2.1 添加所需目录 498

27.2.2 提供结构、枚举和常数 498

27.2.3 创建外部函数引用 501

27.2.4 使用函数调用数据 502

27.2.5 在托管代码中使用外部函数 503

27.2.6 提供错误处理 505

27.3 设计数据结构 510

27.3.1 为标准控制台句柄创建枚举 510

27.3.2 创建基本数据结构 511

27.3.3 定义函数调用 512

27.3.4 在托管代码中采用数据结构 514

27.4 实现自己的设计 515

第Ⅴ部分 资源与工具 519

第28章 选择资源与工具 519

28.1 结束耗时的混乱 519

28.1.1 创建档案 521

28.1.2 有效地对资源和工具升级 522

28.1.3 与供应商建立良好关系 523

28.2 定义有价值的资源 524

28.3 定义有价值的工具 524

28.4 创建团队工具箱 525

28.4.1 了解团队的要求 526

28.4.2 定义使用要求和策略 526

28.5 获取资源与工具 527

第29章 Microsoft资源与工具 529

29.1 寻找Microsoft资源与工具 529

29.1.1 MSDN 530

29.1.2 TechNet 530

29.1.3 使用Microsoft Download 531

29.1.4 微软搜索 532

29.1.5 在线查找资源和工具 533

29.2 用XML Notepad 2007编辑XML文件 535

29.2.1 获得XML Notepad 2007 535

29.2.2 第一次使用XML Notepad 2007 535

29.2.3 修改文件 536

29.2.4 使用XSLT文件 536

29.2.5 比较XML文件 537

29.3 利用Microsoft PowerCommands提高Visual Studio 2008的性能 537

29.4 获取资源与工具 542

第30章 第三方资源与工具 545

30.1 寻找第三方资源与工具 545

30.2 用Vischeck测试应用程序颜色 549

30.3 利用FxCop提高代码的可靠性和一致性 552

30.3.1 获得FxCop 552

30.3.2 使用FxCop GUI 553

30.3.3 修复错误 555

30.3.4 考虑规则 558

30.3.5 在构建期问使用FxCop 558

30.4 利用LINQPad创建LINQ查询 560

30.5 获取资源与工具 562