本书是为有丰富开发经验的软件研发人员掌握VisualBasic.NET高级概念而编写的,本高级指导书。PauIKimmelI对基本内容进行了详细讲解,以便读者能快速地开始创建稳定的、少有BUG的应用程序。作者通过大量实例介绍了一些重要的概念,其中包括已通过VisuaIBasic.NET2003测试的工作代码。
作者先简要回顾了语言的语法,然后用较大的篇幅介绍较高级的技术内容,以帮助程序设计人员解决他们最感囱惑的问题。高级开发和部署的核心技术包括安全WEB服务、ASRNET程序设计、COM协作和远程调用等内容。本书也涵盖了瘦客户端程序设计的知识,它为商业应用提供了一个使用反射和HTTP技术来管理WindowsForm的部署以及更新的实际的解决方案。本书的附录可帮助读者把VisualBasic6.0应用程序移植为VisualBasic.NET应用程序。本书的WEB站点包括全部可下载的源代码和大量可重用的实例,并且作者还不断对其进行更新。
本书既可以用来反复研读,也可以作为有经验的Visual Basic.NET程序员的参考书,有助于解决他们常遇到的问题。本书能够使开发人员充分掌握VisualBasic.NET的所有高级特性。书中的核心技术包括:
第4章使用反射技术您能做什么?
第6章怎样在VisualBasic.NET应用程序中加入多线程行为?
第8章怎样序列化对象以及实现对象的远程调用?
第14章怎样从WEB服务中返回ADO.NET数据集?
第18章WEB应用程序的最佳安全策略是什么?
PaulKimmel是SoftwareConceptions有限公司的创始人之一。从事开发面向对象软件的工作已经10多年了。他是WindowsDeveloperMagazine的专栏作者,也是CodeGuru的VisualBasicToday和InformlT的常任撰稿人。他是多本关于面向对象程序设计和.NET专著的作者,其中包括2002年SAMS出版的VisualBasic.NET UnleaShed。
第1部分高级语言基础
第1章基本语言构造
1.1引言
1.2变量声明+
1.3值类型和引用类型
1.3.1结构+
1.3.2类
1.3.3值类型、引用类型和内存
1.3.4装箱和拆箱
1.4定义结构和类
1.4.1添加字段
1.4.2添加属性
1.4:3添加方法
1.4.4使用事件
1.4.5使用访问修饰符
1.5理解面向对象思想
1.5.1对象、类和元类
1.5.2信息隐藏和封装
1.5.3关联、聚集和继承
1.5.4多态
1.6中间语言
1.7小结
第2章继承和接口
2.1引言
2.2继承类
2.2.1继承术语
2.2.21nherits语句
2.2.3Notlnheritable修饰符
2.2.4抽象类
2.2.5重写方法和属性
2.2.6替代方法和属性
2.2.7重载SubNew构造函数
2.2.8访问修饰符
2.3继承与聚集
2.3.1Adapter模式
2.3.2创建一个UserControl形状
2.4定义接口
2.4.1基本原则
2.4.2定义一个接口
2.5实现接口
2.5.1添加接口属性
2.5.2添加接口事件
2.6继承接口
2.7多接口继承
2.8比较抽象类和接口
2.9小结
第3章委托
3.1引言
3.2实现事件处理程序
3.2.1使用窗体设计器
3.2.2使用代码编辑器
3.2.3Handles子句
3.2.4EventHandler类
3.2.5sender参数
3.2.6用单一处理程序处理多个事件
3.2.7实现多响应
3.3使用WithEvents语句
3.4添加和删除事件处理程序
3.4.1AddHandler语句
3.4.2RemoveHandler语句
3.4.3在运行时指派事件处理程序
3.5在类、结构和接口中声明事件
3.6委托的概念
3.6.1为什么委托如此重要
3.6.2定义委托
3.7研究现有的委托类型
3.8适用于多线程的委托
3.9小结
第4章反射
4.1引言
4.2隐式后期绑定
4.3运行时发现类型信息
4.4加载程序集
4.4.1加载程序集
4.4.2调用被反射的方法
4.4.3从Type对象创建实例
4.5讨论Binder类
4.6使用DefaultMemberAttribute
4.7反射成员
4.7.1反射方法
4.7.2反射参数
4.7.3反射任何成员
4.7.4反射属性
4.7.5反射字段
4.7.6反射事件
4.8反射的实际应用
4.9反射自定义特性
4.10理解反射和安全
4.11在运行时发放IL代码
4.11.1快速查看正则表达式
4.11.2已编译正则表达式
4.11.3动态发放类型
4.11.4动态发放已编译正则表达式
4.12小结
第5章特性
5.1引言
5.2应用特性
5.2.1研究特性约定
5.2.2将特性应用到实体
5.3使用程序集特性
5.4使用程序集特性创建一个
[关于]对话框
5.5创建自定义特性
5.5.1特性使用说明
5.5.2继承特性类
5.5.3定义位置参数
5.5.4定义命名参数
5.6反射特性
5.7,发放特性到IL
5.8使用CodeDom类发放特性
5.9特性和声明安全
5.10小结
第6章多线程
6.1引言
6.2初识Timer控件
6.3比较同步和异步行为
6.3.1编写同步行为
6.3.2编写异步行为
6.3.3完成异步调用
6.4.NETFramework的异步处理
6.4.1异步调用XMLWeb服务
6.4.2异步调用文件操作
6.5用线程进行程序设计
6.5.1使用ThreadPool类进行
多线程设计
6.5.2使用Thread类进行
多线程设计
6.6WindowsForms中的多线程
6.7小结
第Ⅱ部分解决方案建立
第7章COM互操作
7.1引言
7.2从.NET代码中调用COM
7.2.1创建一个COM
对象的测试程序
7.2.2将COM二进制
文件导入.NET
7.2.3使用早期绑定的COM对象
7.2.4垃圾收集器
7.2.5使用后期绑定的COM对象
7.2.6在.NET中使用COM事件
7.3从COM调用.NET代码
7.3.1创建一个测试.NET类库
7.3.2将.NET类型发布给COM
7.3.3在VB6中调用.NET程序集
7.3.4将.NET委托发布给COM
7.3.5应用Interop特性
7.3.6让导出到COM变得简单
7.4理解COMInterop中的错误处理
7.5将Active)(控件导入.NET
7.6调试可协作的组件
7.6.1使用.NET宿主调试COM库
7.6.2使用基于COM的宿主
调试.NET库
7.7附加主题
7.8小结
第8章Remodng
8,1引言
8.2理解.NETRemoting
8.3按引用编组对象
8.3.1Hello,RemoteWorld!
8.3.2让客户和服务器对话
8.3.3使用服务器激活对象
8.3.4使用客户激活对象
8.4按值编组对象
8.4.1使用按值传递类
8.4.2使用值传递对象
修改客户代码
8.4.3实现ISenalizable
8.4.4比较按引用对象和
按值传递对象
8.5写入事件日志
8.6处理远程事件
8.6.1理解远程事件行为
8.6.2调用远程事件
8.7其他Remoting主题
8.7.1管理远程对象的生存期
8.7.2异步Remoting
8.7.3Remoting安全问题
8.7.4为服务器选择一个宿主
8.8小结
第9章创建自定义组件
9.1引言
9.2实现自定义组件
9.3实现自定义Windows控件
9.3.1定义正则表达式
TextBox控件
9.3.2测试自定义组件
9.4将控件添加到工具箱
9.4.1将位图与控件关联
9.4.2将文档添加到工具箱
9.5实现自定义Windows用户控件
9.5.1表面化成员属性
9.5.2将数据绑定到自定义用户控件..
9.6测试控件特性
9.6.1应用EditorBrowsableAttribute
9.6.2应用DesignerSerializationVisibilityAttribute
9.6.3应用BrowsableAttribute
9.7使用UITypeEditor类
9.7.1将类型编辑器与控件关联
9.7.2应用默认值
9.7.3将控件属性分类
9.8实现类型转换
9.8.1实现IConvertible接口
9.8.2实现类型转换器
9.8.3将类型转换器与可转换
类型相关联
9.8.4使用IConvertible行为
9.8.5使用类型转换行为
9.9实现扩展的提供者
9.10创建Windows控件设计器
9.10.1将设计器应用到控件
9.10.2测试控件设计器
9.11使用默认属性
9.12实现自定义Web控件和自定义
Web用户控件
9.13小结
第10章.NET中自动更新
的智能客户
10.1引言
10.2实现“Hello,World!”瘦客户
10.3智能客户和服务器的预先配置
10.3.1连接到Internet
10.3.2安装.NETFramework
10.3.3添加受信任站点清单内容
10.3.4为应用程序程序
集调整安全策略
10.3.5针对智能客户程序集进行
服务器预先配置
10.4考虑通用应用程序加载器
10.5创建Microsoft安装文件
管理安全策略
10.5.1定义新的代码组
10.5.2以编程的方式管理
代码组和权限
10.5.3使用安装程序管理权限
10.6处理COM组件
10.7其他相关概念
10.8小结
第11章ADO.NET数据库编程
11.1引言
11.2ADO.NET基础
11.3定义一个数据库连接
11.3.1定义一个连接字符串
11.3.2存储连接字符串
11.3.3读取连接字符串
11.3.4测试连接
11.4使用Adapter填充DataSet对象
11.5使用DataReader类
11.6使用DataTable和DataView类
11.7定义数据库关系++
11.8使用Command对象
11.9使用CommandBuilder
生成SQL语句
11.10更新DataSet
11.11给DataSet添加数据
¨.12对DataSet排序和筛选
11.12.1对DataView筛选和排序
11.12.2通过DataTable对列
过滤和排序
11,13小结
第12章高级ADO.NET
12,1引言+
12.2更新DataView
12.3利用存储过程编程
12.3.1调用存储过程
12.3.2定义SQLServer连接字符串
12.3.3使用输入参数
12.3.4使用输出参数
12.4在VisualStudio.NET
中调试存储过程
12.4.1配置MSDE以进行
存储过程调试
12.4.2配置SQLServer进行
存储过程调试
12.5使用事务
12.6创建类型化DataSet
12.6.1定义XML架构
12.6.2生成类型化DataSet
12.6.3使用类型化DataSet对象编程
12.7串行化DataSet
12.8使用ADO.NET接口编程
12.9小结
第III部分Web编程
第13章创建Web服务
13.1引言
13.2查找Web服务
13.3使用现有的Web服务
13.3.1为项目添加Web引用
13.3.2声明Web服务类的实例
13.3.3调用Web方法
13.3.4浏览Web服务代理类
13.4创建Web服务应用程序
13.4.1应用WebService特性
13.4.2编写Web方法
13.5调试和测试Web服务
13.5.1使用集成的调试器测试Web服务
13.5.2不使用集成的调试器测试Web服务
13.5.3使用[生成和浏览]菜单测试Web服务
13.6部署Web服务
13.6.1创建Web应用程序目录
13.6.2复制基本文件
13.6.3创建.disco文件
13.6.4添加Web.config文件
13.7理解XMLWeb服务和安全
13.7.1浏览默认的Web.config文件
13.7.2在文件或目录级别上使用Windows身份验证
13.8小结
第14章高级Web服务
14.1引言
14.2从Web服务返回简单的数据
14.2.1实现埃拉托色尼筛选
14.2.2实现IsPrimeWeb服务
14.3从Web服务返回复杂的数据
14.3.1实现一个复杂类型
14.3.2实现Web服务
14.3.3引用Web服务
14.3.4浏览代理类
14.3.5实现Web服务使用者
14.4编写使用DataSet对象的Web服务
14.4.1将对象序列化为XMLDataSet
14.4.2了解返回DataSet的Web方法的代理类
14.5将代理类修改为返回胖对象
14.6返回强类型集合
14.6.1回顾强类型集合
14.6.2序列化强类型集合
14.6.3从Web服务返回集合
14.7异步调用Web服务
14.8小结
第15章构建ASPNETWeb应用程序
15.1引言
15.2设计屏幕布局
15.2.1管理具有表的控件位置
15.2.2使用级联样式表确保一致性
15.2.3使用文档大纲
15.2.4在外部样式表中编写样式块
15.2.5可视化生成外部样式表
15.2.6理解样式的级联应用程序
15.2.7将外部样式表链接到一个页面
15.2.8将样式应用到控件
15.2.9以编程的方式修改属性
15.3使用用户控件创建呈现
15.3.1创建基本的用户控件布局
15.3.2创建导航链接
15.3.3将用户控件添加到页面
15.3.4动态加载用户控件
15.3.5将Web页面转换为用户控件
15.4处理应用程序级事件
15.5缓存对象
15.5.1使用Ht中ApplicationState类
15.5.2使用HttpSessionState类
15.5.3使用Cache类
15.5.4使用cookie
15.5.5启用和使用数据视图
15.5.6缓存Web页面
15.5.7缓存部分Web页面
15.6使用具有XML的动态接口
15.6.1使用XML数据
15.6.2实现一个XSL文档
15.6.3为XSL格式的XML文档
定义一个缓存依赖项
15.7保护具有窗体身份验证的Web应用程序
15.8小结
第16章组合使用ADO.NET和ASP.NET
16.1引言
16.2连接到数据库
16.2.1在Web.config文件中定义连接字符串
16.2.2读取配置设置
16.2.3通过使用接口
定义Database类
16.2.4编写测试代码
16.2.5使用ConditionalAttribute
16.3使用DataView类
16.4将数据绑定到单值Web控件
16.4.1使用DataBindings对话框
16.4.2在HTML编辑器中定义一个数据绑定
16.5将数据绑定到多值Web控件
16.6使用DataGrid控件分页和分类
16.6.1将DataGrid控件用于分页
16.6.2将DataGrid控件用来排序
16.7使用DataList控件来重复复合控件
16.7.1定义复合用户控件
16.7.2定义具有DataList控件的Web页面
16.8将绑定列转换为模板列
16.9管理到服务器的往返
16.10小结
第1V部分调试与管理
第17章调试.NET
17.1引言
17.2显示[调试]窗口
17.2.1使用[局部变量]和[自动窗口]
17.2.2使用[快速监视]窗口
17.2.3使用[监视]窗口
17.2.4使用[内存]窗口
17.2.5使用[调用堆栈]窗口
17.2.6使用[反汇编]窗口
17.2.7使用[立即]/[命令]模式窗口
17.2.8使用[输出]窗口
17.3管理断点
17.4使用编辑并继续行为
17.5调试、断言与跟踪
17.5.1使用Debug类
17.5.2使用Debug.Assert方法
17.5.3使用Trace类
17.6使用跟踪侦听器编程
17.6.1创建FileStream跟踪侦听器
17.6.2把跟踪信息记入事件日志
17.6.3创建自定义跟踪侦听器
17.7使用Boolean开关管理调试代码
17.7.1在应用程序配置文件中定义一个开关
17.7.2在应用程序中使用Boolean开关
17.8把应用程序事件记入日志
17.8.1发送信息到事件日志
17.8.2定义一个自定义事件日志
17.8.3发送调试和跟踪信息到自定义事件日志
17.9使用性能计数器
17.10使用Process类
17.11附加到一个运行的进程
17.12调试Windows应用程序
17.13调试Web应用程序
17.14调试多语言程序
17.15补充话题
17.15,1查看自动化调试对象模型
17.15.2查看可用的调试器
17.16小结
第18章代码访问安全性
18.1引言
18.2代码访问安全性的含义
18.3防御式编程
18.4管理安全策略
18.4.1安全策略的级别
18.4.2修改安全策略
18.4.3许可运行下载的程序集
18.5声明性安全性与强制性安全性的比较
18.5.1利用声明性安全性
18.5.2利用强制性安全性
18.6使用代码访问安全性的要求
18.6.1什么是Demand?
18.6.2要求打印权限
18.6.3要求读取注册表的权限
18.7使用代码访问安全性的断言
18.7.1把程序集装入沙箱
以进行测试
18.7.2示范Assert动作的行为
18.8其他安全性动作简介
18.9总则
18.10小强
附录A迁移VisualBasic6应用
程序到VisualBasic.NET
A.1引言
A.2在迁移前
A.2.1是否进行迁移
A.2.2您想进行迁移
A.3.NET中不支持的
VisualBasic6特征
A.4迁移VisualBasic6Windows应用程序
A.4.1迁移示例客户应用程序
A.4.2解决迁移错误
A.5迁移VisualBasic6ASPWeb应用程序
A.6小结