使用Visual C#可以开发出灵活的、易于维护的应用程序,这些应用程序能充分利用Microsoft最新推出的.NET Framework强大的计算和通信功能。本书首先介绍软件工程和利用UML设计组件的基本原理,然后向您展示了如何充分发挥Visual C#的快速开发能力创建功能广泛的组件,包括Web组件、Web服务和Windows服务组件、数据访问组件、企业级组件、多线程组件,以及基于Microsoft Web浏览器的用户界面组件等。\r\n 本书讲述了基于组件的开发技术、实用的建议和真实的示例,可以帮助您在.NET环境下提高设计、调试和部署应用程序的效率,并能有效地消除错误,非常适合于使用Visual C#的中高级程序员阅读。
第I部分 概论\r\n\r\n第1章 开发过程\r\n\r\n1.1 组件开发\r\n1.1.1 常见错误\r\n1.1.2 项目管理风险\r\n1.2 开发阶段\r\n1.2.1 瀑布过程\r\n1.2.2 初始需求中的问题\r\n1.2.3 连续细化的过程\r\n1.2.4 选择组件\r\n1.2.5 购买第三方组件的风险\r\n1.2.6 微软开发过程\r\n1.3 分析阶段\r\n1.3.1 编制预算的艺术\r\n1.3.2 错误的方法\r\n1.3.3 正确的方法\r\n1.3.4 用例\r\n1.3.5 交互图\r\n1.4 设计阶段\r\n1.4.1 熟悉最终用户\r\n1.4.2 熟悉性能需求\r\n1.4.3 从哪里开始\r\n1.4.4 要完成什么\r\n1.4.5 设计要具有可测试性\r\n1.5 实现阶段\r\n1.5.1 确保跟踪变化\r\n1.5.2 编码原则\r\n1.5.3 测试器\r\n1.6 测试\r\n1.6.1 单元测试\r\n1.6.2 集成测试\r\n1.6.3 验证测试\r\n1.6.4 回归测试\r\n1.6.5 确定在何时发布——故障恢复率和错误反馈率\r\n1.7 部署阶段\r\n1.8 部署后的日子:维护\r\n1.9 小结\r\n\r\n第2章 组件结构\r\n\r\n2.1 Conway定律\r\n2.2 父组件与子组件\r\n2.3 组件的分级\r\n2.3.1 大片还是小片\r\n2.3.2 大小与复杂度\r\n2.4 委托\r\n2.5 用委托限定特性\r\n2.6 聚集\r\n2.7 深度聚集\r\n2.8 线程\r\n2.9 小结\r\n\r\n第3章 组件设计\r\n\r\n3.1 UML\r\n3.1.1 类图\r\n3.1.2 交互图\r\n3.2 设计模式\r\n3.2.1 创建型模式\r\n3.2.2 结构型模式\r\n3.2.3 行为模式\r\n3.3 不要忘记-ilities\r\n3.3.1 可操纵性\r\n3.3.2 可测试性\r\n3.3.3 可用性\r\n3.3.4 可部署性\r\n3.3.5 可维护性\r\n3.3.6 可靠性\r\n3.3.7 灵活性\r\n3.3.8 可移植性\r\n3.4 放松一下——没有完美的设计\r\n3.5 优秀设计的标志\r\n3.6 小结\r\n\r\n第4章 组件分类\r\n\r\n4.1 如何分类组件\r\n4.1.1 形式方法问题\r\n4.1.2 分类系统\r\n4.2 前端组件\r\n4.2.1 独立应用程序\r\n4.2.2 分布式应用程序\r\n4.2.3 基于浏览器的应用程序\r\n4.3 中间层\r\n4.3.1 群集服务器\r\n4.3.2 服务器区\r\n4.3.3 跟踪用户状态\r\n4.3.4 数据库连接池\r\n4.4 后端\r\n4.5 小结\r\n\r\n第5章 调试\r\n\r\n5.1 几个关于调试的故事\r\n5.2 常见的故障\r\n5.3 不同种类的调试器\r\n5.3.1 Visual Studio.NET集成调试器\r\n5.3.2 DbgClr\r\n5.3.3 CORDBG\r\n5.4 一般的调试技术\r\n5.4.1 断点\r\n5.4.2 运行中修改代码\r\n5.4.3 运行中修改数值\r\n5.4.4 单步执行代码\r\n5.4.5 测试数据\r\n5.4.6 栈跟踪\r\n5.4.7 调试多语言代码\r\n5.5 检测代码\r\n5.5.1 使用Debug类\r\n5.5.2 使用Trace类\r\n5.5.3 断言\r\n5.5.4 使用Fail()方法\r\n5.5.5 重定向调试和跟踪消息\r\n5.5.6 条件编译\r\n5.5.7 条件代码属性\r\n5.6 调试情况的种类\r\n5.7 几个通用的提示\r\n5.8 独立应用程序\r\n5.9 DLL\r\n5.9.1 一般的问题\r\n5.9.2 依附于过程\r\n5.9.3 及时依附\r\n5.9.4 从过程分离\r\n5.10 小结\r\n\r\n第6章 部署\r\n\r\n6.1 旧方法\r\n6.2 新方法\r\n6.3 程序集\r\n6.3.1 什么是程序集\r\n6.3.2 程序集的结构\r\n6.3.3 查看程序集数据\r\n6.3.4 私有程序集\r\n6.3.5 共享程序集\r\n6.3.6 查看全局程序集高速缓存\r\n6.4 部署方法\r\n6.5 使用安装向导\r\n6.6 创建基本的安装程序\r\n6.6.1 添加项目输出组\r\n6.6.2 编辑安装项目属性\r\n6.6.3 常用内容\r\n6.6.4 闪烁对话框\r\n6.6.5 欢迎对话框\r\n6.6.6 用户授权对话框\r\n6.6.7 用户信息对话框\r\n6.6.8 单选按钮对话框\r\n6.6.9 复选框对话框\r\n6.6.10 文本框对话框\r\n6.6.11 安装文件夹对话框\r\n6.6.12 自述文件对话框\r\n6.6.13 注册用户对话框\r\n6.6.14 使用条件\r\n6.7 预编译代码\r\n6.7.1 何时进行预编译\r\n6.7.2 何时不进行预编译\r\n6.8 在Internet和Intranet上部署软件\r\n6.8.1 使用Web页\r\n6.8.2 CAB文件\r\n6.8.3 智能客户端\r\n6.9 部署共享组件\r\n6.10 许可\r\n6.10.1 设计时许可\r\n6.10.2 运行时许可\r\n6.10.3 创建许可\r\n6.10.4 使用经过许可的组件\r\n6.11 小结\r\n\r\n第II部分 前端组件\r\n\r\n第7章 Windows窗体组件\r\n\r\n7.1 Windows窗体\r\n7.2 设计ProcessViewer\r\n7.3 开发ProcessViewer\r\n7.3.1 获取进程数据\r\n7.3.2 进程的排序\r\n7.3.3 填充TreeView\r\n7.3.4 为TreeView项设置位图\r\n7.3.5 为菜单项设置位图\r\n7.3.6 控制右边的窗格\r\n7.3.7 限定窗体的尺寸\r\n7.3.8 显示进程和模块的细目\r\n7.3.9 访问命令行参数\r\n7.3.10 使用正则表达式\r\n7.3.11 获取操作系统的消息\r\n7.3.12 确定当前目录\r\n7.3.13 获取环境变量\r\n7.3.14 确定是否有鼠标连接到系统中\r\n7.3.15 确定用户的系统是否连接到网络上\r\n7.3.16 获取逻辑驱动器的列表\r\n7.3.17 使用文本文件\r\n7.4 剪切、复制和粘贴\r\n7.5 打印\r\n7.6 ProcessViewer的完整代码\r\n7.7 本地化\r\n7.7.1 地区的指定\r\n7.7.2 用程序实现改变地区\r\n7.7.3 资源文件的本地化\r\n7.7.4 窗体本地化\r\n7.7.5 字符串的本地化\r\n7.7.6 带有参数置换的短语\r\n7.7.7 MyLocalizedForm的代码\r\n7.7.8 图像的本地化\r\n7.7.9 使用ResEditor\r\n7.7.10 使用ResxGen\r\n7.7.11 建立本地化的图像\r\n7.8 小结\r\n\r\n第8章 使用WebBrowser组件创建前端\r\n\r\n8.1 微软的WebBrowser组件\r\n8.2 设计MyWebBrowse\r\n8.3 开发MyWebBrowser\r\n8.4 引入WebBrowser ActiveX组件\r\n8.4.1 简单的方法\r\n8.4.2 困难的方法\r\n8.4.3 运行时可调用的包装\r\n8.4.4 添加工具栏\r\n8.4.5 添加打印支持\r\n8.4.6 添加导航支持\r\n8.4.7 完整的代码\r\n8.5 创建自定义的Web浏览器\r\n8.5.1 引入并包装COM接口\r\n8.5.2 IOleObject和IOleClientSite\r\n8.5.3 使用ICustomDoc\r\n8.5.4 IDocHostUIHandler\r\n8.5.5 由通过COM接口调用的方法返回值\r\n8.5.6 常见的自定义\r\n8.5.7 IDocHostUIHandle方法详述\r\n8.6 完整的代码\r\n8.7 小结\r\n\r\n第9章 自定义控件\r\n\r\n9.1 过去的自定义控件\r\n9.2 选择正确的基类\r\n9.3 设计组件\r\n9.3.1 创建自定义控件库\r\n9.3.2 更改控件的类名\r\n9.3.3 更改控件的Toolbox图标\r\n9.3.4 向Toolbox添加组件\r\n9.3.5 在稳定前向Toolbox添加组件\r\n9.3.6 创建测试器\r\n9.3.7 添加对测试器的引用\r\n9.3.8 使用拖放来添加自定义控件\r\n9.3.9 手工添加自定义控件\r\n9.3.10 运行自定义控件的代码\r\n9.4 组件的开发\r\n9.4.1 添加鼠标事件处理程序\r\n9.4.2 添加键盘事件处理程序\r\n9.4.3 绘制控作\r\n9.4.4 使用World变换\r\n9.5 在文件系统中查找文件\r\n9.6 添加上下文菜单\r\n9.7 支持拖放\r\n9.8 生成随机数\r\n9.9 设计时属性\r\n9.9.1 添加简单的属性\r\n9.9.2 添加属性的说明\r\n9.9.3 在属性窗口中禁止显示属性\r\n9.9.4 非公共属性与属性窗口\r\n9.9.5 在属性窗口中隐藏继承的属性\r\n9.9.6 在类别下添加属性\r\n9.9.7 禁止存储属性\r\n9.9.8 属性编辑器\r\n9.9.9 实现类型转换器\r\n9.10 MyCustomControl的完整代码\r\n9.11 小结\r\n\r\n第10章 用户控件\r\n\r\n10.1 用户控件与自定义控件\r\n10.2 设计图形设计器组件\r\n10.3 开发组件\r\n10.3.1 创建用于设计器的组件\r\n10.3.2 由MyComponent派生专用类\r\n10.3.3 绘制Windows系统图标\r\n10.3.4 显示和管理抓取句柄\r\n10.3.5 用抓取句柄调整组件尺寸\r\n10.3.6 用橡皮圈选择项\r\n10.3.7 管理选择项\r\n10.3.8 在屏幕上移动组件\r\n10.3.9 设计器组件\r\n10.3.10 添加和删除项\r\n10.4 控制数据输入\r\n10.4.1 在键入时检验键值\r\n10.4.2 使用正则表达式验证\r\n10.4.3 使用内置的方法\r\n10.4.4 确认事件\r\n10.5 小结\r\n\r\n第11章 数据库前端\r\n\r\n11.1 建立数据库连接\r\n11.2 基于导航器的窗体\r\n11.2.1 装载记录\r\n11.2.2 导航记录集\r\n11.2.3 插入新记录\r\n11.2.4 删除记录\r\n11.2.5 向数据库提交修改\r\n11.2.6 取消对当前记录的编辑\r\n11.2.7 取消所有编辑\r\n11.3 Windows窗体中的数据绑定\r\n11.3.1 把属性同数据源绑定\r\n11.3.2 简单数据绑定\r\n11.3.3 VS.NET提示\r\n11.3.4 预览由数据适配器取出的行\r\n11.3.5 完整源代码\r\n11.4 基于网格的窗体\r\n11.4.1 定制网格\r\n11.4.2 数字、日期和时间格式\r\n11.5 管理网格中的数据\r\n11.5.1 装载记录\r\n11.5.2 向数据库提交修改\r\n11.5.3 回调所有的记录\r\n11.5.4 使用默认值对行进行预填充\r\n11.6 主-从窗体\r\n11.6.1 创建窗体\r\n11.6.2 窗体如何工作\r\n11.6.3 使用嵌套行的主从网格\r\n11.7 数据库报表商体\r\n11.7.1 创建简单报表\r\n11.7.2 创建一个更复杂的报表\r\n11.8 小结\r\n\r\n第12章 软件前端的一些技巧\r\n\r\n12.1 显示一个闪烁窗口\r\n12.2 管理用户的设置信息\r\n12.2.1 特定的目录\r\n12.2.2 应用二进制文件\r\n12.2.3 应用文本文件\r\n12.2.4 应用注册表\r\n12.3 管理最近使用的文件\r\n12.3.1 应用注册表\r\n12.3.2 应用快捷方式\r\n12.3.3 声明COM接口\r\n12.3.4 使用COM方法读写字符串\r\n12.3.5 COM对象ShellLink的一个包装器\r\n12.3.6 应用FileShortcut类管理最近使用的文件列表\r\n12.4 小结\r\n\r\n第III部分 中间层组件\r\n\r\n第13章 Web窗体\r\n\r\n13.1 ASP有什么缺陷\r\n13.2 ASP.NET的改进之处\r\n13.3 基础知识\r\n13.3.1 告别包含文件使用类\r\n13.3.2 发布Web窗体\r\n13.3.3 处理Web窗体事件\r\n13.3.4 获取用户信息\r\n13.4 一个Web应用程序的例子\r\n13.5 设计Web应用程序\r\n13.6 实现Web应用程序\r\n13.6.1 PostBacks\r\n13.6.2 添加事件处理程序\r\n13.7 测试Web窗体\r\n13.7.1 使用Response对象\r\n13.7.2 使用重定向的方法返回全新的页面\r\n13.7.3 使用跟踪状态\r\n13.8 管理状态\r\n13.8.1 使用cookies\r\n13.8.2 使用隐藏数据\r\n13.8.3 使用查询字符串\r\n13.8.4 使用ViewState\r\n13.8.5 使用对话变量\r\n13.9 小结\r\n\r\n第14章 Web控件\r\n\r\n14.1 内置的Web控件\r\n14.2 需要Web控件的原因\r\n14.3 Web控件工作原理\r\n14.4 开发一个定制的Web控件\r\n14.5 设计Web控件\r\n14.6 开发Web控件\r\n14.6.1 定制发布\r\n14.6.2 依赖浏览器的发布\r\n14.6.3 添加定制事件\r\n14.6.4 添加定制属性\r\n14.6.5 MyWebControl控作的完整代码\r\n14.6.6 移植控件到DLL中\r\n14.6.7 创建测试装置\r\n14.7 确认用户输入\r\n14.7.1 指定显示出错信息的位置\r\n14.7.2 Text属性和ErrorMessage属性的区别\r\n14.7.3 RequiredFieldValidator组件\r\n14.7.4 CompareValidator组件\r\n14.7.5 RangeValidator组件\r\n14.7.6 CustomValidator组件\r\n14.7.7 ValidationSummary组件\r\n14.7.8 RegularExpressionValidator组件\r\n14.7.9 一个使用验证控件的完整例子\r\n14.7.10 使用ValidationSummary组件的完整例子\r\n14.8 小结\r\n\r\n第15章 用户控件\r\n\r\n15.1 什么是用户控件\r\n15.2 基础知识\r\n15.3 用用户控件创建Web应用程序\r\n15.4 设计导航用户控件\r\n15.5 开发导航\r\n15.6 向Web窗体添加导航\r\n15.7 建立图文框设置\r\n15.8 开发内容用户控件\r\n15.8.1 添加属性\r\n15.8.2 添加事件处理程序\r\n15.8.3 响应页面请求\r\n15.8.4 把内容控件添加到Web窗体中\r\n15.9 建立HTML网页\r\n15.10 把Web窗体转换为用户控件\r\n15.11 测试用户控件\r\n15.12 把用户控件包装在DLL文件中\r\n15.13 完整的代码\r\n15.14 小结\r\n\r\n第16章 服务\r\n\r\n16.1 Web服务\r\n16.2 基础知识\r\n16.2.1 声明Web方法\r\n16.2.2 数据输入和数据输出\r\n16.2.3 支持强制类型转换\r\n16.2.4 SOAP\r\n16.2.5 WSDL\r\n16.2.6 DISCO\r\n16.2.7 UDDI\r\n16.2.8 开发Web服务\r\n16.2.9 测试Web服务\r\n16.2.10 状态维护\r\n16.2.11 安全性\r\n16.2.12 发布动态搜索信息\r\n16.2.13 将Web服务传送到专用机上\r\n16.3 Windows服务\r\n16.3.1 设计服务\r\n16.3.2 开发服务\r\n16.3.3 交互式服务\r\n16.3.4 测试服务\r\n16.3.5 添加系统托盘图标\r\n16.3.6 添加服务控制程序\r\n16.3.7 安装服务\r\n16.3.8 自定义服务安装\r\n16.3.9 最后几个注意事项\r\n16.4 小结\r\n\r\n第17章 安全性\r\n\r\n17.1 Web应用程序的安全性\r\n17.2 验证\r\n17.2.1 基于IP地址的验证\r\n17.2.2 通过凭证鉴定用户\r\n17.2.3 其他方法\r\n17.2.4 利用基本验证手段保护Web应用程序\r\n17.3 ASP.NET的安全措施\r\n17.3.1 假冒\r\n17.3.2 窗体验证\r\n17.3.3 一个简单的例子\r\n17.3.4 将验证信息保存到数据库中\r\n17.3.5 护照验证\r\n17.4 小结\r\n\r\n第IV部分 后端组件\r\n\r\n第18章 ADO.NET体系结构\r\n\r\n18.1 什么是后端\r\n18.2 ADO.NET的主要要素\r\n18.2.1 数据集\r\n18.2.2 数据适配器\r\n18.2.3 数据读取器\r\n18.2.4 数据表\r\n18.2.5 数据视图\r\n18.2.6 数据绑定\r\n18.3 连接到数据库\r\n18.3.1 打开连接和断开连接\r\n18.3.2 连接池\r\n18.3.3 性能最大化\r\n18.3.4 配置连接池\r\n18.4 更改数据库\r\n18.4.1 添加记录\r\n18.4.2 更新记录\r\n18.4.3 删除记录\r\n18.4.4 处理数据集问题\r\n18.4.5 使修改生效和对错误进行分析\r\n18.5 一个完整的例子\r\n18.6 小结\r\n\r\n第19章 数据库Web服务\r\n\r\n19.1 什么是数据库Web服务\r\n19.2 设计服务\r\n19.3 实现服务\r\n19.4 为客户端提供Web方法\r\n19.5 测试Web服务\r\n19.5.1 使用Internal Web Browser进行测试\r\n19.5.2 使用Windows应用程序进行测试\r\n19.6 异常处理\r\n19.7 事务处理\r\n19.8 测试数据库Web服务\r\n19.9 小结\r\n\r\n第20章 多线程组件\r\n\r\n20.1 线程的概念\r\n20.1.1 单元线程\r\n20.1.2 .NET线程与同步\r\n20.1.3 给父线程回传信息\r\n20.1.4 多个线程执行同一段代码\r\n20.1.5 等待多个事件中的一个\r\n20.1.6 线程和COM对象\r\n20.1.7 无阻塞调用\r\n20.1.8 线程池\r\n20.2 线程管理\r\n20.2.1 启动线程\r\n20.2.2 检查线程的状态\r\n20.2.3 线程的暂停与同步\r\n20.2.4 恢复暂停的线程\r\n20.2.5 停止线程\r\n20.2.6 异步处理\r\n20.2.7 同步处理\r\n20.2.8 跨线程共享资源\r\n20.2.9 从其他线程调用Windows窗体控件\r\n20.3 创建多线程组件:StressTester\r\n20.3.1 设计组件\r\n20.3.2 实现组件\r\n20.3.3 调试组件\r\n20.4 小结\r\n\r\n第21章 网关服务\r\n\r\n21.1 什么是网关服务\r\n21.2 Remoting Framework\r\n21.2.1 基本的Remoting组件\r\n21.2.2 一个简单的服务器端对象\r\n21.2.3 从客户端访问远程对象\r\n21.2.4 将客户端连接到服务器上\r\n21.2.5 远程对象的激活模式\r\n21.3 创建网关服务\r\n21.3.1 建立系统的体系结构\r\n21.3.2 设计网关服务\r\n21.3.3 实现网关服务\r\n21.3.4 设计服务主机应用程序\r\n21.3.5 实现服务主机应用程序\r\n21.3.6 设计服务提供者模拟器\r\n21.3.7 实现服务提供者模拟器\r\n21.3.8 测试MyGatewayService\r\n21.3.9 将所有部分组装起来\r\n21.3.10 处理远程异常\r\n21.4 小结