译者序
原书序
致谢
第1章 由随意编程转变为遵循软件工程原则
1.1 规则1-1:最大限度地发挥VB编译期类型检查的潜能
1.1.1 在每个模块的顶端使用Option Explicit语句
1.1.2 避免不经意地使用Variant数据类型
1.1.3 在VB IDE中运行时, 使用Start With Full Compile命令
1.2 规则1-2:使用Debug.Assert显式声明假设
1.3 规则1-3:编译期条件不同时, 考虑使用#If语句
1.4 规则1-4:抛出错误以提示异常
1.5 规则1-5:有效的错误处理:局部捕获, 全局处理
1.6 规则1-6:了解类型和类的区别
1.7 规则1-7:采用面向对象的设计方法
1.8 规则1-8:推荐采用用户自定义类型而不是类来定义值类型
1.9 规则1-9:一般任务的自动化
第2章 设计. 构建和使用基于COM的组件
2.1 规则2-1:从接口的角度进行思考
2.2 规则2-2, 使用自定义接口
2.3 规则2-3:最好使用IDL独立定义自定义接口
2.4 规则2-4:使用自定义回调避免基于类的事件的局限性
2.5 规则2-5:要谨慎保持兼容性
2.5.1 脚本客户端程序
2.5.2 已编译的客户端程序
2.5.3 版本兼容的接口
2.6 规则2-6:选用正确的COM激活技术
2.6.1 COM激活
2.6.2 New操作符
2.6.3 CreateObject
2.6.4 GetObject
2.6.5 GetObjectContext.CreateInstance和Server.CreateObject
2.6.6 性能考虑
2.7 规则2-7:慎重使用Class_Terminate
2.8 规则2-8:根据会话而不是实体来建模
2.9 规则2-9:除了简单的小规模应用系统, 避免使用ActiveX可执行程序
第3章 MTS. COM+和VB-中间层
3.1 规则3-1:理解MTS和COM+应用程序设计
3.2 规则3-2:不要在MTS或COM+中使用单例
3.3 规则3-3:了解New. CreateObject及GetObjectContext.CreateInstance的适用场合
3.3.1 MTS和Windows NT4
3.3.2 COM+和Windows 2000
3.3.3 使用New遇到的更多问题
3.4 规则3-4:理解使用SetComplete的真实目的
3.5 规则3-5:对事务自动中止方式的思考
3.6 规则3-6:不要重新设计DBMS
3.7 规则3-7:不必配置所有组件
3.8 规则3-8:避免将以后会后悔的东西编译进DLL
3.9 规则3-9:将代码从MTS向COM+移植的实践技巧
3.9.1 在COM+中不再需要调用GetObjectContext.CreateInstance
3.9.2 将Me作为参数传递时, 不再需要调用SafeRef
3.9.3 当事务中的次要对象返回错误时要小心, 可能会获得形如"Method~of Object Failed~"的错误信息, 而不是所指定的在错误传播之前返回的丰富错误信息
3.9.4 使用ObjectConstruct字符串
3.9.5 在COM+应用程序中进行进程内调用时执行声明性安全校验
3.9.6 在COM+中刷新组件命令不再是必需的
3.9.7 在安装Windows 2000以前版本的计算机上, COM+导出的客户安装程序需要Microsoft Installer(MSI)
3.10 规则3-10:编写运行于MTS和COM+中的代码的实践技巧
3.10.1 创建对象时坚持使用GetObjectContext.CreateInstance
3.10.2 使用可编程控制的安全措施对访问权限进行校验, 而不要依赖于声明性安全措施
3.10.3 事务性方法调用失败时, 在次要对象中最好使用DisableCommit而不是SetAbort
3.10.4 不要无意中将DLL安装到用户计算机上
3.10.5 坚持使用ObjectContext接口
3.10.6 分发对象引用时继续使用SafeRef
第4章 Web和VB
4.1 规则4-1:理解IIS体系结构
4.1.1 IIS的内部结构
4.1.2 提高服务器的可扩缩性
4.2 规则4-2:管理应用程序状态以达到最高效率
4.2.1 使用BAS模块数据
4.2.2 使用SPM
4.2.3 使用ASP Application对象
4.2.4 权衡各种方案的利弊
4.3 规则4-3:管理会话状态以达到最大可扩缩性
4.3.1 将会话限制在单机上
4.3.2 在客户机上存储会话信息
4.3.3 使用cookie
4.3.4 QueryString变量
4.3.5 隐藏的表单域
4.3.6 在数据库中存储状态信息
4.4 规则4-4:理解DCOM和HTTP的区别
4.4.1 使用RPC和DCOM进行通信
4.4.2 使用HTTP通信
4.4.3 在分布式应用程序中不使用ASP
4.4.4 使用HTTP的不利方面
4.5 规则4-5:为脚本环境(如ASP)编写COM组件
4.5.1 创建默认接口
4.5.2 向可编写脚本的对象传递参数
4.5.3 关于自定义接口
4.5.4 解决方案
4.6 规则4-6:理解COM对象与ASP之间如何交互
4.6.1 ASP内置对象
4.6.2 VB COM对象和STA
4.6.3 充分利用STA线程模型
4.6.4 在VB中如何访问ASP内置对象
4.6.5 直接访问ASP内置对象的好处
4.6.6 使用ASP内置对象的弊端
4.7 规则4-7:使用XML代替专有数据传输格式
4.8 规则4-8:慎重考虑表示和业务逻辑的关系
4.8.1 使用MTS组件
4.8.2 使用WebClasses
4.9 规则4-9:从数据到表示的XSLT实现
4.9.1 XSLT的概念
4.9.2 XSLT方法的好处
4.9.3 使用过程方法转换数据集
4.9.4 利用XSLT的方法转换数据集
4.9.5 XSLT的缺点
第5章 VB高效数据访问
5.1 规则5-1:高效访问的基础:往返开销. SQL语句和数据提供者
5.1.1 使往返开销最少
5.1.2 确定发送SQL查询的最好方法
5.1.3 选择合适的提供者
5.2 规则5-2:不要过分封装数据访问
5.2.1 纯粹的面向对象技术
5.2.2 追求纯粹OOD效果的不足之处
5.2.3 解决办法:使用存储过程
5.2.4 如果需要多个数据库服务器该如何处理
5.3 规则5-3:切莫将数据库连接当代数据成员
5.4 规则5-4:死锁是常见的-防错性程序开发
5.4.1 锁定
5.4.2 串行化事务和锁管理器
5.4.3 死锁
5.4.4 在应用程序设计中尽量减小死锁的几率
5.4.5 将事务运行时间降到最短
5.4.6 将锁定时间降至最短
5.5 规则5-5:尽可能使用firehose游标
5.6 规则5-6:作出正确的数据搜索决策(避免滥用SelectSingleNode)
5.6.1 Seek-and-Find组件
5.6.2 了解解决具体问题需选用哪一种方法