本书是《微软.NET程序员系列》丛书之一,主要讲述Microsoft.NET编程技术,可帮助你快速而深入地理解.NET框架的主要编程模型。全书分为三大部分,第I部分“基本概念”,主要介绍学习本书需要了解的一些基础知识,包括Microsoft.NET框架方面的知识。第II部分的所有内容都是关于ASP.NET的,包括如何用ASP.NET构建Web应用程序和Web服务。第III部分“前沿技术”,分别介绍ADO.NET、XML、多线程和远程处理技术。本书用简明的语言解释了复杂的概念,书中还包括75个精心设计的完整的示例程序,对于理解.NET的编程模型和解决实际的开发问题很有帮助。\r\n 本书是开发.NET Web应用程序的开发人员必读的经典著作。
前言\r\n\r\n第I部分基本概念\r\n\r\n第1章 .NET概述\r\n\r\n1.1 Microsoft.NET计划\r\n1.2 Microsoft.NET框架\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.2.7 .NET框架类库\r\n1.3 开始创建.NET框架应用程序\r\n1.3.1 Hello,World\r\n1.3.2 深入理解Hello.cs\r\n1.3.3 Main方法浅析\r\n1.3.4 深入理解Hello.exe\r\n1.4 本章小结\r\n\r\n第2章 类型和异常\r\n\r\n2.1 .NET框架数据类型\r\n2.1.1 类\r\n2.1.2 结构\r\n2.1.3 接口\r\n2.1.4 枚举\r\n2.1.5 委托\r\n2.1.6 装箱和取消装箱\r\n2.1.7 引用类型与值类型\r\n2.1.8 非确定销毁\r\n2.2 动态链接\r\n2.2.1 创建多文件程序集\r\n2.2.2 动态链接到程序集\r\n2.2.3 程序集的版本控制\r\n2.2.4 共享程序集——全局程序集缓存\r\n2.2.5 用属性进行强命名\r\n2.2.6 延迟签名\r\n2.3 异常处理\r\n2.3.1 捕获异常\r\n2.3.2 保证执行\r\n2.3.3 引发异常\r\n2.4 本章小结\r\n\r\n第3章 .NET框架类库\r\n\r\n3.1 文件与流I/O\r\n3.1.1 文本文件I/O\r\n3.1.2 二进制文件I/O\r\n3.2 集合\r\n3.2.1 哈希表\r\n3.2.2 大小可变的数组\r\n3.2.3 WordCount应用程序示例\r\n3.3 正则表达式\r\n3.3.1 拆分字符串\r\n3.3.2 查询字符串\r\n3.3.3 替换字符串\r\n3.4 Internet类\r\n3.4.1 HttpWebRequest和HttpWebResponse\r\n3.4.2 System.Web.Mail命名空间\r\n3.5 数据访问\r\n3.5.1 DataReader\r\n3.5.2 插入、更新和删除\r\n3.5.3 DataSet和DataAdapter\r\n3.6 反射\r\n3.6.1 检索程序集、模块和类型信息\r\n3.6.2 自定义属性\r\n3.6.3 动态加载类型(晚绑定)\r\n3.7 本章小结\r\n\r\n第4章 Windows窗体\r\n\r\n4.1 Windows窗体编程模型\r\n4.1.1 第一个Windows窗体\r\n4.1.2 在窗体中绘图:GDI+\r\n4.1.3 菜单\r\n4.1.4 ImageView应用程序\r\n4.1.5 鼠标和键盘输入\r\n4.2 控件\r\n4.2.1 控件概述\r\n4.2.2 ControlDemo应用程序\r\n4.2.3 锚定\r\n4.3 对话框\r\n4.3.1 对话框概述\r\n4.3.2 DialogDemo应用程序\r\n4.4 Windows窗体和Visual Studio.NET\r\n4.5 Windows窗体回顾\r\n\r\n第II部分 ASP.NET\r\n\r\n第5章 Web窗体\r\n\r\n5.1 Web应用程序入门\r\n5.1.1 超文本传输协议\r\n5.1.2 HTML窗体\r\n5.1.3 服务器端处理\r\n5.1.4 ASP解决方案\r\n5.1.5 开发Web窗体\r\n5.2 Web窗体编程模型\r\n5.2.1 Web控件\r\n5.2.2 HTML控件\r\n5.2.3 页级别事件\r\n5.2.4 页级别指令\r\n5.2.5 Web窗体货币转换器\r\n5.3 代码隐藏编程\r\n5.3.1 Lander应用程序\r\n5.3.2 代码隐藏工作原理\r\n5.3.3 使用代码隐藏而不进行预编译:Src属性\r\n5.3.4 在ASP.NET Web窗体中使用非ASP.NET语言\r\n5.4 Web窗体和Visual Studio.NET\r\n5.5 本章小结\r\n\r\n第6章 Web控件\r\n\r\n6.1 简单控件\r\n6.1.1 TextBox控件\r\n6.1.2 Label控件\r\n6.1.3 HyperLink控件\r\n6.1.4 Image控件\r\n6.1.5 CheckBox控件\r\n6.1.6 RadioButton控件\r\n6.1.7 Table控件\r\n6.1.8 Panel控件\r\n6.2 按钮控件\r\n6.3 列表控件\r\n6.3.1 DropDownList控件\r\n6.3.2 ListBox控件\r\n6.3.3 CheckBoxList控件\r\n6.3.4 RadioButtonList控件\r\n6.3.5 用列表控件进行数据绑定\r\n6.4 数据绑定控件\r\n6.4.1 Repeater控件\r\n6.4.2 MyComicsRepater页\r\n6.4.3 DataList控件\r\n6.4.4 MyComicsDataList页\r\n6.4.5 DataGrid控件\r\n6.4.6 MyComicsDataGrid页\r\n6.5 Calendar控件\r\n6.5.1 高级自定义:DayRender事件\r\n6.5.2 Showtime\r\n6.6 验证控件\r\n6.6.1 使用验证控件\r\n6.6.2 RequiredFieldValidator\r\n6.6.3 RangeValidator\r\n6.6.4 CompareValidator\r\n6.6.5 RegularExpressionValidator\r\n6.6.6 CustomValidator\r\n6.6.7 ValidationSummary\r\n6.6.8 Spammers公司示例\r\n6.6.9 条件验证\r\n6.7 WebControl基类及其他\r\n\r\n第7章 用户控件\r\n\r\n7.1 用户控件基础知识\r\n7.1.1 @Control指令\r\n7.1.2 创建第一个控件\r\n7.1.3 添加属性\r\n7.1.4 添加事件\r\n7.1.5 在用户控件中使用代码隐藏\r\n7.2 XmlNavBar控件\r\n7.3 动态加载(以及Cookie)\r\n7.3.1 Cookie\r\n7.3.2 Cookie和ASP.NET\r\n7.3.3 Myquotes页\r\n7.4 片断缓存\r\n7.5 自定义控件\r\n\r\n第8章 自定义控件\r\n\r\n8.1 自定义控件基础知识\r\n8.1.1 创建第一个自定义控件\r\n8.1.2 测试Hello控件\r\n8.1.3 改进Hello控件:添加属性\r\n8.1.4 关于HtmlTextWriter\r\n8.2 回发和回发数据\r\n8.2.1 IPostBackDataHandler接口\r\n8.2.2 视图状态\r\n8.2.3 Change事件\r\n8.2.4 视圈状态的工作原理\r\n8.2.5 生成回发\r\n8.2.6 IPostBackEventHandler接口\r\n8.2.7 AutoCounter控件\r\n8.3 复合控件\r\n8.3.1 声明型复合控件\r\n8.3.2 GroupBox控件\r\n8.3.3 编程型复合控件\r\n8.3.4 LoginControl控件\r\n8.4 服务器控件和客户端脚本\r\n8.4.1 向客户端返回JavaScript\r\n8.4.2 RegisterClientScriptBlock方法\r\n8.4.3 让代码避开客户端\r\n8.4.4 RolloverImageLink控件\r\n8.4.5 NunTextBox控件\r\n8.5 图形控件\r\n8.5.1 HTTP处理程序\r\n8.5.2 Odometer控件\r\n8.5.3 Odometer控件的工作原理\r\n8.6 本章小结\r\n\r\n第9章 Web应用程序\r\n\r\n9.1 ASP.NET应用程序的结构\r\n9.2 Web.config文件\r\n9.2.1 <appSettings>\r\n9.2.2 <system.web>\r\n9.2.3 配置继承\r\n9.3 Global.asax文件\r\n9.3.1 全局指令\r\n9.3.2 全局事件处理程序\r\n9.3.3 全局对象标记\r\n9.4 应用程序状态\r\n9.4.1 使用应用程序状态\r\n9.4.2 锁定和解锁\r\n9.4.3 AppCounter应用程序\r\n9.5 应用程序缓存\r\n9.5.1 添加和删除条目\r\n9.5.2 锁定和解锁\r\n9.5.3 到期策略\r\n9.5.4 缓存删除回调\r\n9.5.5 Cache.Add方法\r\n9.5.6 SmartQuotes应用程序\r\n9.6 会话状态\r\n9.6.1 使用会话状态\r\n9.6.2 SessionSpy页\r\n9.6.3 无Cookie会话状态\r\n9.6.4 会话状态处理模式\r\n9.6.5 会话生存期\r\n9.6.6 禁用会话状态\r\n9.6.7 关于Web场\r\n9.7 Congo.com示例应用程序\r\n9.7.1 深入理解Congo.com\r\n9.7.2 自己动手\r\n\r\n第10章 ASP.NET安全性\r\n\r\n10.1 理解Web安全性\r\n10.1.1 验证\r\n10.1.2 授权\r\n10.1.3 IIS安全性\r\n10.1.4 ASP.NET安全性\r\n10.2 Windows验证\r\n10.2.1 基本验证\r\n10.2.2 简要验证\r\n10.2.3 集成Windows验证\r\n10.2.4 获取己验证身份的用户信息\r\n10.2.5 Windows验证\r\n10.2.6 Windows验证和URL授权\r\n10.2.7 Windows验证和基于角色的安全\r\n10.3 窗体验证\r\n10.3.1 窗体验证简介\r\n10.3.2 现实中的窗体验证\r\n10.3.3 验证Cookie的生存期\r\n10.3.4 窗体验证和基于角色的安全\r\n10.3.5 注销\r\n10.3.6 验证Cookie安全性\r\n10.3.7 注意事项\r\n\r\n第11章 Web服务\r\n\r\n11.1 Web服务\r\n11.1.1 构建第一个Web服务\r\n11.1.2 测试Web服务\r\n11.1.3 Web服务和代码隐藏技术\r\n11.1.4 WebService基类\r\n11.1.5 WebMethod属性\r\n11.1.6 Web服务描述语言\r\n11.1.7 Web服务和复杂数据类型\r\n11.1.8 Web服务发现机制——DISCO\r\n11.1.9 Web服务发现机制——UDDI\r\n11.2 Web服务客户端\r\n11.2.1 Web服务代理\r\n11.2.2 简单的Web服务客户端\r\n11.2.3 避免硬编码服务的URL\r\n11.2.4 异步方法调用\r\n11.2.5 Web服务客户端和代理服务器\r\n11.3 Cityview应用程序\r\n11.4 收费Web服务\r\n11.5 Web服务的未来\r\n\r\n第III部分 前沿技术\r\n\r\n第12章 ADO.NET\r\n\r\n12.1 数据提供程序\r\n12.1.1 System.Data.SqClient命名空间和System.Data.OleDb命名空间\r\n12.2 连接、命令和DataReader\r\n12.2.1 SqlConnection类\r\n12.2.2 OleDbConnection类\r\n12.2.3 打开和关闭连接\r\n12.2.4 命令类\r\n12.2.5 ExecuteNonQuery方法\r\n12.2.6 ExecuteScalar方法\r\n12.2.7 ExecuteReader方法\r\n12.2.8 事务命令\r\n12.2.9 参数化命令\r\n12.2.10 存储过程\r\n12.3 DataSet和DataAdapter\r\n12.3.1 DataSet类\r\n12.3.2 DataAdapter类\r\n12.3.3 从数据库初始化DataSet:DataAdapter.Fill\r\n12.3.4 DataTable及其他\r\n12.3.5 把更改写回数据库:DataAdapter.Update\r\n12.3.6 CommandBuilder类\r\n12.3.7 DataView类\r\n12.4 关于XML\r\n\r\n第13章 XML\r\n\r\n13.1 XML入门\r\n13.1.1 元素\r\n13.1.2 属性\r\n13.1.3 CDATA、PCDATA和实体引用\r\n13.1.4 命名空间\r\n13.1.5 文档合法性和架构\r\n13.1.6 XML解析器\r\n13.2 读写XML\r\n13.2.1 XmlDocument类\r\n13.2.2 XmlTextReader类\r\n13.2.3 XmlValidatingReader类\r\n13.2.4 XmlTextWriter类\r\n13.3 XPath\r\n13.3.1 XPath基础\r\n13.3.2 XPathNavigator及其他\r\n13.3.3 XPath表达式的求值器\r\n13.4 XSL转换(XSLT)\r\n13.4.1 在客户端实现从XML到HTML的转换\r\n13.4.2 在服务器端实现从XML到HTML的转换\r\n13.4.3 转换XML文档格式\r\n13.5 本章小结\r\n\r\n第14章 多线程\r\n\r\n14.1 线程\r\n14.1.1 启动线程\r\n14.1.2 前台和后台线程的比较\r\n14.1.3 线程优先级\r\n14.1.4 挂起和恢复线程\r\n14.1.5 终止线程\r\n14.1.6 Sieve和MultiSieve应用程序\r\n14.1.7 计时器线程\r\n14.2 线程同步\r\n14.2.1 Interlocked类\r\n14.2.2 监视器\r\n14.2.3 监视器内部实现\r\n14.2.4 阅读器/编写器锁\r\n14.2.5 互斥体\r\n14.2.6 事件\r\n14.2.7 处理多个同步对象\r\n14.2.8 序列化对集合的访问\r\n14.2.9 通过MethodImpl属性进行线程同步\r\n14.3 线程池\r\n\r\n第15章 远程处理\r\n\r\n15.1 远程处理基础知识\r\n15.1.1 创建您的第一个远程处理应用程序\r\n15.1.2 编程配置和声明配置的比较\r\n15.1.3 服务器激活和客户端激活的比较\r\n15.1.4 Activator.GetObject和Activator.CreateInstance方法\r\n15.1.5 对象生存期和生存期租约\r\n15.2 高级远程处理\r\n15.2.1 使用IIS作为激活代理\r\n15.2.2 HTTP信道和二进制格式化程序\r\n15.2.3 委托和事件\r\n15.2.4 异步方法调用\r\n15.2.5 综合运用:NetDraw应用程序\r\n15.3 Microsoft.NET:一场全新的竞赛
是的, 又一个时代到来了, 我们需要抛掉原来的所有东西, 一切重新开始. Microsoft. NET的时代已经开始, 伴随着它的到来还有一个允诺, 即它将改变我们以往的软件开发方式. Microsoft .NET包含许多东西, 但是首要的一点, 在以Internet为中心的世界里, 它是编写软件的一种好方法. 由于. NET的出现, 我们可以放开所有已有的概念, 而以一种全新的观念去思考软件开发. 这意味着我们应该脱离Windows API. MFC和COM, 以一种前所未有的方式来构建和开发软件.
笔者在2001年7月开始写这本书的时候, 已经使用. NET框架SDK有一年多的时间了. 那时候. NET框架还只是beta版, 距离正式发布还有几个月时间. 第一次研究它的时候, 笔者期望着发现一些类似COM(组件对象模型)的东西, 而实际上看到的是Microsoft从根本上改变了他们以前所做的一切, 并且提供了一种更好的编写软件的方式. 如果您的公司计划开发Web应用程序. Web服务以及其他以Internet作为其平台的应用程序, 那么简直没有比使用Microsoft. NET更好的方法了. 今天, 如果要用ASP编写一个Web应用程序, 所需要考虑的因素可能不会比用扳手敲钉子所需考虑的因素多. 对于一个成功的软件项目来说, 首要的因素就是选择合适的开发工具. 如果您的工作中包含Web编程(或即使不是这样), Microsoft. NET正是您所需要的工具.
本书讲述的内容是Microsoft. NET——它是什么, 如何工作, 以及如何使用它编写软件. 您将了解公共语言运行库(CLR)以及它所提供的高度结构化的环境, 这一环境用于执行由C#. Visual Basic. NET和其他语言所编译的代码. 您还将了解NET框架类库(FCL), 它是一个极好的综合类库, 使用它可以编写API托管应用程序. 您将熟悉在FCL中具体化的编程模型, 包括Windows窗体. Web窗体和 XML Web服务等. 而更为重要的一点, 您将学到如何将所有这些片段结合起来工作, 以编写出能够反映Microsoft. NET强大功能的复杂应用程序.
本书内容
阅读本书时, 可以采取从头到尾逐章学习的方式, 这样就能够逐步地学会如何使用. NET框架编写软件. 但是本书的每一章也都可以独立成文. 如果您是一位经验丰富的. NET开发者, 只是想学习有关多线程方面的内容, 那么直接学习第14章, 该章详细地介绍有关线程和线程同步化的处理. 如果您的工作中要用到ASP.NET服务器控件, 请直接跳至第8章. 其中提供的信息将帮助您以最少的投入顺利地完成工作.
如果要顺序阅读全书, 有必要先了解一下全书的内容. 本书第1部分介绍了需要了解的一些基础知识, 它对于学习后面章节的内容也很有帮助. 您将了解到Microsoft. NET框架方面的知识, 包括公共语言运行库和. NET框架类库. 内容包括框架的类型系统, FCL中包括的7000多种类型中的一些类型等. 在第1部分中, 还包括. NET框架最为重要的编程模型:Windows窗体. 通过Windows窗体, 您可以构建与当今流行的Windows应用程序类似的GUI(图形用户界面)应用程序. 后面的第15章讲述了如何将Windows窗体与. NET框架的远程子系统配对, 以建立可以连接到远程服务器的丰富的客户端应用程序.
第11部分的所有内容都是关于ASPNET的, 在. NET框架中, ASPNET可以帮助您构建Web应用程序和 Web服务. 当今的 Web编程是围绕着 HTML. DHTML. ASP. COM以及其他一些关系松散的技术建立起来的. 而今后的Web编程将会成为一门科学, 这要感谢ASRNET. 如果您以前曾进行过Web编程, 但由厂需要处理缓慢的. 弱类型的脚本语言, 以及浏览器DOM所带来的麻烦比其所带来的益处还要多, 您也许并不喜欢这种方式, 但是ASPNET将会改变您的这种观念. 对于构建运行在Web上的应用程序, 它是真正的第二代技术. 此外, ASPNET还带来了编译代码. 强类型安全以及(在一定程度上)独立于浏览器的 Web编程技术. 第5章到第11章详细地介绍了ASPNET, 可使您掌握编写高级 ASP.NET Web应用程序和 Web服务所必需的技能.
第III部分挑选了.NET框架的一些部分进行了详细介绍. 其中的主题包括ADO. NET, 它为托管应用程序提供了数据库访问 API, XML和FCL提供的所有用于处理XML数据的类, 线程或者如何编写多线程代码以及调整并发线程的活动, 还有远程处理, 它为编写紧密连接的分布式应用程序提供了框架. 掌握了这些章节的内容之后, 您就可以开始与.NET的对话了.
关于编程语言
.NET框架的一个特点是它是与语言无关的. 选择哪种语言编写代码都无关紧要, 这在历史上还是第次. 因为在.NET框架中, 所有的语言到最后都使用相同的特性.
现在, 笔者经常用C#编写代码, 一定程度上是因为C#是惟——种针对. NET框架设计的语言. 另外, 还因为笔者一亘使用C++. 因此, 本书中的绝大部分代码例程也都是用C#编写的. 但是, 本书中所出现的大多概念并非只与C#相关. 本书是关于. NET框架编程的, 而C#只是笔者用来表达思想的工具. 如果您更喜欢使用 Visual BasicNET或者 COBOL, 希望本书对您能有同样的价值. 知道了如何使用 ADO. NET打开到数据库的连接后, 您就会发现, 无论是使用 Visual Basic .NET还是C#, 所编写出的代码实际上是非常相似的.
本书中的大部分示例程序都是笔者手动编写的, 没有使用Visual Studio. NET的帮助. 这并不是对Visual Studio.NET的质疑, 笔者认为, 学习编程的最好方法就是自己动手, 而不是使用其他人所提供的代码. 一旦您理解了Windows窗体. Web窗体或Web服务的内部机制, 就会发现Visual Studio.NET对于这些程序的创建能够提供有效的帮助. 如果您曾经以老式方法编写过应用程序, 那么这将有助一工您深刻理解新知识, 并且会使您能够适应新的开发环境——开发环境中的工具将为您承担部分的工作.
系统要求
本书所包含的示例程序超过75个, 要编译和运行它们, 必须在机器上安装. NET框架SDK. SDK可运行于 Windows NT 4. 0. Windows 2000或 Windows XP之上, 大概 Windows以后的版本也可以. 可以在http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample. asp?url0=/msdn-files/027/000/976/msdncompositedoc. xml处下载. NET框架SDK及其服务包. 但是, URL时常会发生变化. 如果您发现该地址不再有效, 那么请浏览Microsoft.NET的主页http://www.microsoft.com/net, 以获取SDK的最新信息.
本书的第5章到第11章介绍的是ASP.NET, 这对您的系统还有另外的要求. 除了. NET框架 SDK之外, 您的PC上还需要安装Microsoft的Web服务器和Internet信息服务(IIS). 因为ASP.NET要求使用 Windows 2000或 Windows XP, 所以您的操作系统也必须符合要求. 在这两个操作系统的Professional版本中, IIS并不属于默认安装部分. 要安装IIS, 请在【控制面板】中打开【添加/删除程序】, 选择【添加/删除Windows组件】. 然后您就会看到添加或删除IIS的复选框. 在安装SDK之前一定要确保安装了IIS, 这样才能保证ASP.NET的顺利安装.
本书的一些章节中包含使用 Visual Studio.NET构建的示例程序, 并提供了使用Visual Studio. NET的详细指导. 要构建针对. NET框架的代码, Visual Studio. NET并不是必需的, SDK中含有命令行编译器. 但是, Visual Studio.NET提供了一个高度集成化的开发环境, 它使编写. 测试和调试代码的工作变得非常简单. 如果还没有Visual Studio. NET, 您可以从Microsoft购买. 要获得更多的信息, 请访问http://msdn.microsoft.com/vstudio/howtobuy.
本书练习文件
为了帮助您节省学习时间, 作者提供了本书中所有操作需要使用的范例代码, 以减少重新输入代码的麻烦. 请访问http://www.wenyuan. com, 找到本书相关链接, 下载练习文件. 另外, http://www.microsoft. com/mspress/books/5200.asp处也提供了本书的练习文件下载.
勘误信息
本书作者. 译者和编辑都希望带给您最准确. 最新. 有深度. 通俗易懂. 无误的信息. 但即使是最神奇的团队, 也有可能出现疏漏. 如果您在本书中发现任何错误, 请通过http://www.wintellect. com网站获得下载资源或勘误信息, 或发邮件至service@wenyuan.com.cn.
支持信息
为了降低书的成本, 减轻读者负担, 对于因内容很少而不值得单独配盘的图书, 我们将其范例代码或练习文件放在我们的网站上, 供读者下载. 敬请访问以下网址:http://www.wenyuan.com.cn, 查找本书的有关链接.
如果您对本书或配书文件有任何建议. 意见或想法, 请通过以下电子邮件与清华大学出版社计算机应用编辑二室客户服务部取得联系:
service@wenyuan. com.cn
或致函:
北京100084-157信箱
读者服务部
邮编:100084
亦可致电:010-62792098-220.
请注意, 上述地址并不提供软件产品的支持.