100162735.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 98 行 · 第 1/3 页
HTM
98 行
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100162735.htm'><font color='red'>1.6 用C#创建.NET应用程序</font></a></h1>
<div id="divRelateNode" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100162732.htm'>1.3 中间语言</a></div><div style='float:right;width:49%'>·<a href='100162733.htm'>1.4 程序集</a></div><div style='float:left;width:49%'>·<a href='100162734.htm'>1.5 .NET Framework类</a></div><div style='float:right;width:49%'>·<a href='100162736.htm'>1.7 C#在.NET企业体系结构中的作用</a></div><div style='float:left;width:49%'>·<a href='100162737.htm'>1.8 小结</a></div><div style='float:right;width:49%'>·<a href='100162738.htm'>2.1 引言</a></div></div>
</div>
</div>
</div>
<!-- main -->
<div id="main">
<div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">可以用于创建控制台应用程序:仅使用文本、运行在</span><span lang="EN-US">DOS</span><span style="FONT-FAMILY: 宋体">窗口中的应用程序。在进行单元测试类库、创建</span><span lang="EN-US">Unix/Linux daemon</span><span style="FONT-FAMILY: 宋体">进程时,就要使用控制台应用程序。但是,我们常常使用</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">创建利用许多与</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">相关的技术的应用程序,下面简要论述可以用</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">创建的不同类型的应用程序。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span lang="EN-US">1.6.1</span><span lang="EN-US"> </span><span style="FONT-FAMILY: 黑体">创建</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 黑体">应用程序</span></h3>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span lang="EN-US" style="BACKGROUND: aqua"></span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">是用于创建带有动态内容的</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">页面的一种</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">技术。</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">页面基本是一个嵌有服务器端</span><span lang="EN-US">VBScript</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">JavaScript</span><span style="FONT-FAMILY: 宋体">代码块的</span><span lang="EN-US">HTML</span><span style="FONT-FAMILY: 宋体">文件。当客户浏览器请求一个</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">页面时,</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">服务器就会发送页面的</span><span lang="EN-US">HTML</span><span style="FONT-FAMILY: 宋体">部分,并处理服务器端脚本。这些脚本通常会查询数据库的数据,在</span><span lang="EN-US">HTML</span><span style="FONT-FAMILY: 宋体">中标记数据。</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">是客户建立基于浏览器的应用程序的一种便利方式。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">也有缺点。首先,</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">页面有时显示得比较慢,因为服务器端代码是解释性的,而不是编译的。第二,</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">文件很难维护,因为它不是结构化的,服务器端的</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">代码和一般的</span><span lang="EN-US">HTML</span><span style="FONT-FAMILY: 宋体">会混合在一起。第三,</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">有时开发起来会比较困难,因为它不支持错误处理和语法检查。特别是如果使用</span><span lang="EN-US">VBScript</span><span style="FONT-FAMILY: 宋体">,并希望在页面中进行错误处理,就必须使用</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">On</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; LETTER-SPACING: 0.2pt"> </span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Error</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; LETTER-SPACING: 0.2pt"> </span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Resume</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; LETTER-SPACING: 0.2pt"> </span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Next</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">语句,通过</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Err.Number</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">检查调用每个组件,以确保该调用正常进行。</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP.NET</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">是</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">的修订版本,它解决了</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">的许多问题。但</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP.NET</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">页面并没有替代</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">,而是可以与原来的</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">应用程序在同一个服务器上同时并存。当然,也可以用</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">C#</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">编写</span></span><span class="importantwords-PRODUCTION"><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-FAMILY: 'Times New Roman'">ASP.NET</span></span><span class="importantwords-PRODUCTION"><span style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体">。</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">后面的章节</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">第</span><span lang="EN-US">25-27</span><span style="FONT-FAMILY: 宋体">章</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">会详细讨论</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">,这里仅解释它的一些重要特性。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">1. ASP.NET</span><span style="FONT-FAMILY: 黑体">的特性</span></h4>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">首先,也是最重要的是,</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面是结构化的。这就是说,每个页面都是一个继承了</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">类</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">System.Web.UI.Page</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">的</span></span><span style="FONT-FAMILY: 宋体">类,可以重写在</span><span lang="EN-US">Page</span><span style="FONT-FAMILY: 宋体">对象的生存期中调用的一系列方法,</span><span lang="EN-US"> (</span><span style="FONT-FAMILY: 宋体">可以把这些事件看成是页面所特有的,对应于原</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">的</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">global.asa</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">文件中的</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">OnApplication_Start</span></span><span lang="EN-US"> </span><span style="FONT-FAMILY: 宋体">和</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">OnSession_Start</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">事件</span></span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">)</span></span><span class="codeintext-PRODUCTION"><span style="FONT-FAMILY: 宋体">。因为可以把一个页面的功能放在有明确含义的事件处理程序中,所以</span></span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">比较容易理解。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面的另一个优点是可以在</span><span lang="EN-US">VS.NET</span><span style="FONT-FAMILY: 宋体">中创建它们,在该环境下,可以创建</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面使用的业务逻辑和数据访问组件。</span><span lang="EN-US">VS.NET</span><span style="FONT-FAMILY: 宋体">项目组</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">也称为解决方案</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">包含了与应用程序相关的所有文件。而且,也可以在编辑器中调试传统的</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">页面,在以前使用</span><span lang="EN-US">Visual InterDev</span><span style="FONT-FAMILY: 宋体">时,把</span><span lang="EN-US">InterDev</span><span style="FONT-FAMILY: 宋体">和项目的</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">服务器配置为支持调试常常是一个让人头痛的问题。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">最清楚的是,</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">ASP.NET</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">的后台编码功能允许进一步采用结构化的方式。</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">ASP.NET</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">允许把页面的服务器端功能单独放在一个类中,把该类编译为</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">DLL</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">,并把该</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">DLL</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">放在</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">HTML</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">部分下面的一个目录中。放在页面顶部的后台编码指令将把该文件与其</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">DLL</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">关联起来。当浏览器请求该页面时,</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">Web</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">服务器就会在页面的后台</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">DLL</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">中引发类中的事件。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span lang="EN-US" style="LETTER-SPACING: -0.1pt"> </span><span style="FONT-FAMILY: 宋体">最后</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">在性能的提高上非常明显。传统的</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">页面是和每个页面请求一起进行解释,而</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">服务器是在编译后高速缓存</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面。这表示以后对</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面的请求就比</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">页面的执行速度快得多。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">还易于编写通过浏览器显示窗体的页面,这在内部网环境中会使用。传统的方式是基于窗体的应用程序提供一个功能丰富的用户界面,但较难维护,因为它们运行在非常多的不同机器上。因此,当用户界面是必不可少的,并可以为用户提供支持扩展时,人们就会依赖于基于窗体的应用程序。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">但随着</span><span lang="EN-US">Internet Explorer 5</span><span style="FONT-FAMILY: 宋体">的出现,而</span><span lang="EN-US">Navigator 6</span><span style="FONT-FAMILY: 宋体">的性能乏善可陈时,基于窗体的应用程序的优点就非常突出了。</span><span lang="EN-US">IE 5</span><span style="FONT-FAMILY: 宋体">对</span><span lang="EN-US">DHTML</span><span style="FONT-FAMILY: 宋体">的健全的支持,允许程序员创建基于</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">的应用程序,这些应用程序都能很好地对应于其客户端程序。当然,这种应用程序需要在</span><span lang="EN-US">IE</span><span style="FONT-FAMILY: 宋体">上进行标准化,而不支持</span><span lang="EN-US">Navigator</span><span style="FONT-FAMILY: 宋体">。在许多行业中,这种标准化现在是很常见的。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">2. Web</span><span style="FONT-FAMILY: 黑体">窗体</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">页面的结构,</span><span lang="EN-US">Visual Studio .NET</span><span style="FONT-FAMILY: 宋体">提供了</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">窗体。它们允许以创建</span><span lang="EN-US">VB6</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US"> C++ Builder</span><span style="FONT-FAMILY: 宋体">窗口的方式图形化地建立</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面;换言之,就是把控件从工具箱拖放到窗体上,再考虑窗体的代码,为控件编写事件处理程序。在使用</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">创建</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">窗体时,就是创建一个继承于</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">Page</span></span><span lang="EN-US"> </span><span style="FONT-FAMILY: 宋体">基类的</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">类,以及把这个类看做是后台编码的</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">页面。当然不必使用</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">创建</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">窗体,而可以使用</span><span lang="EN-US">VB.NET</span><span style="FONT-FAMILY: 宋体">或另一种</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">语言来创建。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">过去,</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">开发的困难使一些开发小组不愿意使用</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">。为了成功地进行</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">开发,必须了解非常多的不同技术,例如</span><span lang="EN-US">VBScript</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">DHTML</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">JavaScript</span><span style="FONT-FAMILY: 宋体">等。把窗体概念应用于</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">页面,</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">窗体就可以使</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">开发容易许多。</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; TEXT-INDENT: 21.45pt"><span lang="EN-US">Web</span><span style="FONT-FAMILY: 黑体">控件</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">窗体上的控件与</span><span lang="EN-US">ActiveX</span><span style="FONT-FAMILY: 宋体">控件并不是同一种控件,它们是</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">命名空间中的</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">标记,当请求一个页面时,</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">浏览器会动态地把它们转换为</span><span lang="EN-US">HTML</span><span style="FONT-FAMILY: 宋体">和客户端脚本。</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">服务器能以不同的方式显示相同的服务器端控件,产生一个对应于请求者特定</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">浏览器的转换。这意味着现在很容易为</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">页面编写相当复杂的用户界面,而不必担心如何确保页面运行在可用的任何浏览器上,因为</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">窗体会完成这些任务。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">可以使用</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">VB.NET</span><span style="FONT-FAMILY: 宋体">扩展</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">窗体工具箱。创建一个新服务器端控件,仅是执行</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">的</span><span class="codeintext-PRODUCTION"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">System.Web.UI.WebControls.WebControl</span></span><span style="FONT-FAMILY: 宋体">类而已。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">3. XML Web</span><span style="FONT-FAMILY: 黑体">服务</span></h4>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?