译者序
关于作者
致谢
前言
第1章 .NET框架介绍
1.1 Visual Basic的历史
1.2 .NET的作用
1.2.1 通用语言运行库
1.2.2 .NET源代码
1.2.3 名字空问
1.2.4 工程和方案
1.2.5 窗体的代码
1.2.6 可移植执行
1.2.7 程序集
1.2.8 运行应用程序
1.2.9 受管代码
1.2.10 非受管代码
1.3 其他程序语言
1.3.1 Visual C++的新特性
1.3.2 Visual FoxPro的新特性
1.3.3 宣布C#的诞生
1.3.4 虽然已经不存在,但是绝不会被忘记
1.3.5 Visual Studio 6已经永远成为过去了吗
1.4 .NET的服务器家族
1.4.1 SQL Server 2000
1.4.2 Exchange 2000
1.4.3 BizTalk Server 2000
1.4.4 Application Center 2000
1.4.5 Commerce Server 2000
1.4.6 Host Integration Server 2000
1.4.7 Internet Security and Acceleration Server 2000(ISA)
1.4.8 Mobile Information Server 2001
1.4.9 Microsoft Windows DNA 2000
1.5 开发服务
1.5.1 进入Internet
1.5.2 实现服务
1.6 COM的改变
1.6.1 COM这些年来的变化
1.6.2 一种更好的COM
1.7 小结
第2章 .NET规划和设计
2.1 当今的应用
2.1.1 基于Web的接口
2.1.2 电子商务
2.1.3 数据库应用
2.1.4 电子文档房间
2.1.5 企业对企业
2.1.6 移动应用
2.1.7 混合应用
2.2 .NET工程
2.2.1 Windows应用
2.2.2 Web应用
2.2.3 类库
2.2.4 Windows服务
2.2.5 Web服务
2.2.6 控件库
2.2.7 在.NET中创建方案
2.3 .NET体系结构
2.3.1 独立的体系结构
2.3.2 两层体系结构
2.3.3 N层体系结构
2.3.4 应用层
2.4 设计方案
2.4.1 Oceanside Resort工程
2.4.2 概念设计
2.4.3 逻辑设计
2.4.4 物理设计
2.4.5 管理设计阶段
2.5 设计问题
2.5.1 代码重用
2.5.2 可扩展性
2.5.3 可维护性
2.5.4 性能
2.5.5 安全性
2.5.6 健壮性
2.5.7 集成性和协同性
2.5.8 开发语言的选择
2.6 开发对象
2.6.1 UML
2.6.2 过程分析
2.6.3 对象分析
2.6.4 继承的设计
2.6.5 超载
2.7 小结
第3章 使用.NET界面
3.1 界面浏览
3.2 菜单
3.2.1 File菜单
3.2.2 View菜单
3.2.3 Project菜单
3.2.4 Build菜单
3.2.5 Debug菜单
3.2.6 Format菜单
3.2.7 Tools菜单
3.2.8 Windows菜单
3.2.9 Help菜单
3.3 工具条
3.3.1 数据设计和数据库图表
3.3.2 调试和调试定位
3.3.3 设计工具条
3.3.4 DiffMerge
3.3.5 全屏
3.3.6 查询
3.3.7 源控制
3.3.8 XML数据和XML Schema
3.3.9 定制工具条
3.4 主工作区
3.4.1 Design视图
3.4.2 Code视图
3.4.3 智能感知
3.4.4 Visual Studio启动页
3.5 视图
3.5.1 方案资源管理器
3.5.2 类视图
3.5.3 服务器资源管理器
3.5.4 属性视图
3.5.5 工具箱
3.5.6 Web浏览器
3.5.7 模型资源管理器和模型文件
3.5.8 宏资源管理器
3.5.9 对象浏览器
3.5.10 文件概要
3.5.11 任务列表
3.5.12 命令窗口
3.5.13 输出窗口
3.6 新的菜单编辑器
3.7 IDE配置选项
3.8 安装建议
3.8.1 右侧安装
3.8.2 左侧安装
3.8.3 底部安装
3.8.4 工具条
3.9 小结
第4章 Visual Basic.NET语言升级
4.1 为什么会有如此多的改动
4.2 处理数据类型
4.2.1 原始数据类型的改变
4.2.2 VB6数据类型转换器
4.2.3 数组
4.2.4 Option Strict
4.2.5 声明变量
4.2.6 变量作用域
4.2.7 结构
4.2.8 初始化
4.3 探索名字空间
4.3.1 创建第一个名字空间
4.3.2 System名字空间
4.3.3 输入语句
4.3.4 Region
4.4 程序级的改变
4.4.1 逻辑流程的改变
4.4.2 Get和Set
4.4.3 ByRef和ByVal
4.4.4 可选参数
4.4.5 默认成员
4.4.6 共享成员
4.4.7 重载
4.4.8 排除异常
4.5 新的组件生命周期
4.5.1 Sub New事件
4.5.2 Sub Destruct事件
4.5.3 Finalized和Disposed
4.5.4 类的实例化
4.6 继承
4.6.1 接口继承
4.6.2 基于代码的继承
4.6.3 保护访问
4.6.4 重载
4.7 Garbage Collector
4.7.1 简介
4.7.2 Garbage Collector如何工作
4.7.3 Garbage Collector的控制
4.8 线程
4.9 小结
第5章 Visual Basic最佳实践
5.1 为什么需要最佳实践
5.1.1 什么是最佳实践
5.1.2 强制标准
5.2 可读性
5.2.1 代码版面设计
5.2.2 数据类型的命名习惯
5.2.3 类的命名习惯
5.2.4 注释
5.3 变量
5.3.1 选择合适的数据类型
5.3.2 作用域
5.3.3 初始化
5.3.4 转换数据类型
5.3.5 常量
5.3.6 结构
5.4 规划程序
5.4.1 重用设计
5.4.2 构造器
5.4.3 程序中的合法性验证
5.4.4 重载的使用
5.4.5 故障控制
5.5 逻辑功能
5.5.1 为Case语句作辩护
5.5.2 数组
5.5.3 If语句
5.6 线程问题
5.6.1 线程事件
5.6.2 线程控制
5.7 委派和多点传播
5.8 继承的使用
5.8.1 什么时候使用和避免继承
5.8.2 多语言继承
5.8.3 重载
5.8.4 继承树
5.9 小结
第6章 Windows开发
6.1 Windows窗体类型
6.1.1 作为类的窗体
6.1.2 内部代码
6.1.3 Windows窗体的继承
6.1.4 MDI窗体
6.1.5 模式面体
6.1.6 消息框(MessageBox)
6.2 Windows窗体的设计
6.2.1 什么时候使用Windows窗体
6.2.2 表示层的Windows窗体
6.2.3 通过Windows窗体调用Web Service
6.3 Windows窗体的属性
6.3.1 一般的窗体设置
6.3.2 窗口位置
6.3.3 窗体大小
6.3.4 层次化
6.3.5 不透明性
6.3.6 最顶层属性
6.4 Windows控件
6.4.1 控件的属性和方法
6.4.2 原有控件的一些新设置
6.4.3 锚点属性
6.4.4 吸入属性
6.4.5 Tab键的次序设置
6.4.6 Ambient属性
6.4.7 分组调整大小
6.4.8 控件的事件处理器
6.4.9 ActiveX控件
6.4.10 在代码中添加控件
6.4.11 控件集合
6.4.12 确认
6.5 可视化继承
6.5.1 添加一个继承的窗体
6.5.2 通过代码添加可视化继承
6.6 Windows服务
6.7 小结
第7章 .NET中的异常处理
7.1 异常介绍
7.1.1 错误类型
7.1.2 代码中的故障范围
7.1.3 错误何时不成为错误
7.2 处理异常
7.2.1 异常层次
7.2.2 解决异常
7.2.3 将异常记入日志
7.3 非结构化的异常处理
7.3.1 On Error GoTo
7.3.2 Resume
7.3.3 非结构化方法的缺点
7.4 结构化的异常处理
7.4.1 结构化异常处理函数实例
7.4.2 Try
7.4.3 Catch
7.4.4 Finally
7.4.5 使用多个Try块
7.4.6 嵌套的Try块
7.4.7 构造函数异常
7.5 识别异常
7.5.1 Err对象
7.5.2 产生异常
7.5.3 结构优异常
7.5.4 抛出异常
7.5.5 中继异常
7.5.6 交叉语言的异常
7.6 测试异常处理代码
7.6.1 范围测试
7.6.2 坏数据
7.6.3 用户错误
7.7 异常处理的最佳实践
7.8 小结
第8章 .NET中的数据存取
8.1 数据存取的概念
8.1.1 数据存取的历史概述
8.1.2 数据的不同类型
8.1.3 关系数据库
8.2 简要介绍ADO.NET
8.2.1 数据提供者
8.2.2 分离的数据
8.2.3 使用ADO的旧版本
8.3 Dataset
8.3.1 数据存取中的XML
8.3.2 Dataset的特征
8.3.3 中止使用锁定和指针功能
8.3.4 使用数据组件创建Dataset
8.3.5 在代码中创建Dataset
8.3.6 向Dataset中添加DataTable
8.3.7 含有多个表的Dataset以及关联
8.3.8 创建用户定制DataTable
8.4 数据的修改
8.4.1 Dataset的更新
8.4.2 RowStatus以及改动的确认
8.5 DataReader
8.6 SQL中的Insert、Delete和Update
8.6.1 发布命令
8.6.2 运行存储过程
8.7 使用Server Explorer存取数据
8.8 使用Query Designer
8.9 处理XML
8.9.1 创建XML文件
8.9.2 读取XML文件
8.10 数据存取的最佳实践
8.11 小结
第9章 .NET中的测试和调试
9.1 .NET调试器概述
9.2 断点
9.2.1 添加断点
9.2.2 断点属性
9.2.3 断点的Condition以及Hit Count
9.2.4 断点的禁用和保存
9.2.5 在Break模式下观察变量的值
9.2.6 异常引起的中断
9.3 代码单步调试
9.3.1 Step Into
9.3.2 Step Over
9.3.3 Step Out
9.3.4 Run To Cursor
9.3.5 Set Next Statement
9.3.6 Step by Line、Statement以及Instruction
9.3.7 Color-Coding Breakpoint和Next Statement
9.3.8 Edit和Continue
9.3.9 Stop命令
9.4 调试窗口
9.4.1 Debugging模式布局
9.4.2 Disassembly窗日
9.4.3 Breakpoints窗口
9.4.4 Output窗口
9.4.5 Locals窗口
9.4.6 Autos窗口
9.4.7 Modules窗口
9.4.8 Me/This窗口
9.4.9 Call Stack窗口
9.4.10 Threads窗口
9.4.11 Immediate/Command窗口
9.4.12 Watch窗口
9.4.13 QuickWatch对话框
9.4.14 断点与监视
9.4.15 其他调试窗口
9.5 其他调试资源
9.5.1 Debug工具条
9.5.2 Debug Location工具条
9.5.3 崩溃转储
9.5.4 编译声明
9.5.5 附加进程
9.6 调试和跟踪
9.6.1 Write和WriteLine
9.6.2 WriteIf和WriteLineIf
9.6.3 Assert
9.7 总论
9.7.1 Visual Studio.NET调试环境布局
9.7.2 类调试
9.7.3 Windows Service的调试
9.7.4 多语言方案
9.7.5 类库和Windows控件
9.7.6 线程
9.8 小结
第10章 ASP.NET的Web技术发展
10.1 ASP的发展背景
10.1.1 ASP的发展历史
10.1.2 ASP的不足之处
10.1.3 客户端技术
10.1.4 Netscape与Internet Explorer比较
10.2 ASP.NET概述
10.2.1 ASP.NET入门
10.2.2 使用Web Form
10.2.3 Web应用程序的配置文件
10.2.4 Web Form的设计界面
10.2.5 内部代码
10.2.6 Web Form的版面设计
10.3 ASP.NET的工作原理
10.3.1 典型的Web会话
10.3.2 Runat
10.3.3 回邮
10.4 ASP.NET控件
10.4.1 基于浏览器的HTML控件
10.4.2 ActiveX控件
10.4.3 服务器(Server)控件
10.4.4 HTML控件
10.4.5 Web控件
10.4.6 确认控件
10.4.7 自定义控件
10.5 Web Form编程
10.5.1 面向对象的Web Form
10.5.2 Web Form事件
10.5.3 高速缓存
10.5.4 网页对象
10.5.5 使用Web Form或Windows Form
10.6 调试ASP.NET程序
10.6.1 单步执行ASP.NET程序
10.6.2 Web应用程序跟踪
10.7 小结
第11章 .NET Web Service
11.1 Web Service概述
11.1.1 什么是Web Service
11.1.2 与Web Service程序通信
11.1.3 Web Service程序实例
11.1.4 端点
11.1.5 风暴
11.1.6 Web Service的优缺点
11.1.7 宿主Web Service程序
11.2 Web Service的工作原理
11.2.1 Web Service通信
11.2.2 Discovery阶段
11.2.3 WSDL文件
11.2.4 使用Get、Post和SOAP的请求
11.2.5 代理类(Proxy Classes)
11.3 创建Web Service程序
11.3.1 简单的Web Service程序
11.3.2 浏览并测试Web Service程序
11.4 访问Web Service
11.4.1 Windows应用程序访问Web Service
11.4.2 Web程序调用Web Service
11.5 高级Web Service
11.5.1 从Web Service返回数据集
11.5.2 Web Service作为接口
11.5.3 调试Web Service程序
11.6 小结
第12章 .NET中的SOAP和XML
12.1 XML基础知识
12.1.1 标识语言
12.1.2 描述数据
12.1.3 W3C
12.1.4 .NET中的XML文件
12.2 Schema
12.2.1 XSD文件
12.2.2 Schema格式
12.2.3 在Visual Studio.NET中创建Schema
12.2.4 引用Schema
12.2.5 交换Schema
12.3 Dataset中的XML
12.3.1 测试Dataset中的XML和Schema
12.3.2 在Dataset中加载XML
12.3.3 定义DataSet中的Schema
12.4 使用XML
12.4.1 文档对象模型
12.4.2 SAX
12.4.3 XMLReader
12.4.4 XMLWriter
12.4.5 XPath
12.4.6 使用哪种模式
12.5 转换
12.5.1 转换的作用
12.5.2 XSLT的处理过程
12.6 SOAP
12.6.1 SOAP概述
12.6.2 SOAP信封
12.6.3 DCOM和SOAP比较
12.7 小结
第13章 Visual Studio.NET的安全机制
13.1 安全的基础知识
13.1.1 安全检查点
13.1.2 认证(Authentication)
13.1.3 许可和权限
13.1.4 加密
13.2 应用程序的安全规划
13.2.1 评估程序的安全需要
13.2.2 安全审核
13.2.3 应用程序中的安全设计
13.3 .NET的安全
13.3.1 CLR:安全警卫
13.3.2 校验和检查程序集
13.3.3 Microsoft中间语言安全问题
13.3.4 受管的与非受管的代码安全交互
13.4 Web应用程序的安全
13.4.1 匿名的Web用户
13.4.2 IIS Web服务器认证
13.4.3 Web服务器上的文件许可
13.4.4 Web程序中页面级(Page-Level)的检查
13.4.5 Web应用程序的安全设置
13.5 代码访问安全
13.5.1 需求调用者许可
13.5.2 PermitOnly
13.5.3 Deny
13.5.4 声明
13.6 小结
第14章 配置.NET应用程序
14.1 .NET应用程序剖析
14.1.1 应用程序
14.1.2 程序集
14.1.3 应用程序的安装位置
14.2 程序集
14.2.1 程序集版本设置
14.2.2 维护程序集版本
14.2.3 共享程序集
14.3 配置类型
14.3.1 单机
14.3.2 客户/服务器(C/S)应用程序
14.3.3 分布式应用程序
14.3.4 群集和负载平衡
14.4 分发媒介
14.4.1 软盘
14.4.2 CD-ROM
14.4.3 网络
14.4.4 Internet
14.5 编译链接
14.5.1 调试编译链接(Debug Build)
14.5.2 Release Build
14.5.3 自定义Build类型
14.5.4 Build的顺序和依赖性
14.5.5 成批编译链接
14.6 设置和配置项目
14.6.1 Windows Installer
14.6.2 设置项目
14.6.3 Web设置项目
14.6.4 合并模块项目
14.6.5 Cab项目
14.6.6 设置向导(Setup Wizard)
14.6.7 分散配置(Dispersed Deployment)
14.7 小结
第15章 项目向.NET迁移
15.1 制定项目迁移计划
15.2 为什么要迁移
15.3 何时不应该迁移
15.3.1 Visual Basic Pack Rat
15.3.2 迁移管理
15.3.3 设计评价
15.4 Visual Basic 6代码的变化
15.4.1 迁移准备工作
15.4.2 ByRef和ByVal
15.4.3 默认属性
15.4.4 变量声明
15.4.5 定常字符串
15.4.6 LSet
15.4.7 常量
15.4.8 GoTo and GoSub
15.4.9 数组
15.4.10 VB6窗体
15.4.11 窗体控件
15.4.12 数据访问方法迁移
15.4.13 好的开发习惯
15.5 升级向导
15.5.1 MigrateMe:一个VB6工程
15.5.2 使用升级向导
15.5.3 检查工程MigrateMe的变化
15.6 迁移后的检查
15.6.1 升级报告
15.6.2 升级事项
15.6.3 任务列表
15.6.4 变量初始化
15.6.5 对象撤销
15.6.6 构造器
15.6.7 可选参数
15.6.8 共享成员
15.6.9 异常处理
15.6.10 修改对象模型
15.6.11 测试
15.7 Web应用程序的迁移
15.7.1 DHTML
15.7.2 ActiveX文档
15.7.3 Web类
15.7.4 ASP和ASP.NET的互用性
15.7.5 ASP向ASP.NET迁移
15.8 小结
第16章 .NET开发最佳实践
16.1 迭代开发
16.1.1 瀑布模型开发
16.1.2 迭代开发
16.1.3 实施迭代开发
16.1.4 迭代方法的优点
16.2 需求分析
16.2.1 需求开发
16.2.2 业务规则
16.2.3 业务流程改进方法
16.2.4 原型
16.2.5 项目珍品
16.2.6 需求管理
16.3 总体设计
16.3.1 体系结构
16.3.2 N-Tier设计
16.3.3 设计事项
16.3.4 软件集成
16.3.5 编制迭代计划
16.4 详细设计
16.4.1 用例和场景
16.4.2 对象建模
16.4.3 可用性
16.5 代码实现
16.5.1 代码实现阶段的管理方法
16.5.2 对等检查
16.5.3 往返工程
16.6 软件测试
16.6.1 软件测试类型
16.6.2 软件测试计划
16.6.3 非格式化软件测试
16.6.4 回归测试
16.6.5 错误跟踪
16.7 软件发布和检查
16.7.1 软件发布和配置
16.7.2 配置测试
16.7.3 交付物
16.7.4 开发过程检查
16.7.5 Metric
16.8 小结
附录A Visual Basic.NET的最佳实践
附录B .NET开发的最佳实践
附录C 从VB6迁移到.NET的检查表
附录D .NET配置检查表
附录E 对象模型