你可以把 ASP.NET Web 页面当成你的 Web 应用程序的可编程用户界面来使用。ASP.NET Web 页面可以在任何浏览器或者客户端设备中把信息呈现给用户,并且使用服务器端代码来实现应用程序逻辑。ASP.NET Web 页面是:
- 基于 Microsoft ASP.NET 技术,运行在服务器中的代码动态地生成 Web 页面并且输出给浏览器或者客户端设备。
- 兼容任何浏览器或者移动设备。 ASP.NET Web 页面会自动呈现正确的适应浏览器的 HTML,比如样式,布局等等。另外,你也可以设计你的 ASP.NET Web 页面来运行在一个特定的浏览器中,比如 Microsoft Internet Explorer 6,并且可以获得特定于浏览器特征的优势。
- 兼容于任何由 .NET 公共语言运行时所支持的语言,包括 Microsoft Visual Basic,Microsoft Visual C#,Microsoft J#,和 Microsoft JScript .NET。
- 建立在 Microsoft .NET Framework 之上。这样就提供了该框架的所有优势,包括一个被管理的环境,类型安全,以及继承。
- 灵活,因为你可以为它们添加用户创建的控件和第三方控件。
ASP.NET Web 页面的组成
在 ASP.NET Web 页面中,用户界面编程被分成两个部分:可视化组件和逻辑。如果你在过去使用过类似于 Visual Basic 和 Visual C++ 一样的工具,那么你就会认可页面的可视化部分和与其交互的幕后代码之间的这个分离。
可视化元素由一个包含静态标记(比如 HTML 或者 ASP.NET 服务器控件或者两者)的文件所组成。ASP.NET Web 页面像一个你想要显示静态文字和控件的包含器一样工作。
ASP.NET Web 页面的逻辑由你所创建并且与页面进行交互的代码所组成。这种代码既可以位于页面的一个脚本块中也可以位于一个分离的类中。如果代码在一个分离的类文件中,那么这个文件就会被引用成幕后代码文件。幕后代码文件中的代码可以由 Visual Basic,Visual C#,Visual J#,或者 JScript .NET 所编写。更多关于 ASP.NET Web 页面是如何被构造的信息,参考[ASP.NET Web 页面的代码模型]。
ASP.NET Web 页面会被编译进一个动态链接库(.dll)文件。在用户第一次浏览 .aspx 页面的时候,ASP.NET 会自动生成一个呈现该页面的 .NET 类文件,然后编译它。编译后的 .dll 文件运行在服务器中并且为你的页面动态地提供 HTML 输出。更多关于 ASP.NET 应用程序如何被编译的信息,参考[ASP.NET 编译概览]。
ASP.NET Web 页面可以帮助你做什么
Web 应用程序编程呈现了在传统的基于客户端的应用程序编程时所出现的典型挑战。这些挑战包括有:
实现丰富的 Web 用户界面
使用基本的 HTML 机制来设计和实现用户界面将是困难的也是单调乏味的,尤其是如果页面拥有复杂的布局,大量的动态内容,以及完整特征化的用户交互式对象。
客户端与服务器的分离
在 Web 应用程序中,客户端(浏览器)和服务器的编程是不同的,并且经常运行在不同的计算机中(甚至是不同的操作系统)。因此,两种平等的应用程序只共享了少量的信息;它们可以通信,但是通常只有少量的简单信息才被交换。
无状态执行
在一个 Web 服务器接收到页面的请求时,它会查找这个页面,处理它,把它发送到浏览器,然后抛弃所有的页面信息。如果用户再次请求相同的页面,那么服务器就会重复整个操作,重新处理页面。以另一种方式,服务器不会进行记忆的已经被处理页面都是属于无状态的。因此,如果应用程序需要维护关于页面的信息,那么它天生的无状态特征就会成为一个问题。
未知的客户端能力
在多数情况下,Web 应用程序对于多数使用不同浏览器的用户来说是可访问的。由于浏览器拥有不同的能力,因此造成了难以创建能够同时运行在所有浏览器之上的应用程序。
数据访问的复杂程度
传统 Web 应用程序中对于数据源的读取和写入是复杂的也是密集资源。
可伸缩性的复杂程度
在多数情况下,以现有方式所设计的 Web 应用程序并不适合于可伸缩性目标,这是因为缺乏若干应用程序组件之间的兼容性。这是位于笨重成长周期之下的应用程序的一个公共的失败点。
接受 Web 应用程序的这些挑战可能需要充足的时间和努力。ASP.NET Web 页面和 ASP.NET 页面框架致力于以下列方式来解决于这些挑战:
直接一致的对象模型
ASP.NET 页面框架呈现了一个对象模型,从而允许你把你的窗体考虑成一个单元,而不是分离的客户端和服务器块。在这个模型中,你可以以一种比传统 Web 应用程序更加直接的方式来进行页面编程,包括为页面元素设置属性和响应事件的能力。另外,ASP.NET 服务器控件均提取自 HTML 页面的物理内容并且来自于浏览器与服务器之间的直接交互。总之,你可以使用服务器控件,并且你可以在客户端应用程序中操作控件并且不考虑如何创建 HTML 来呈现和处理控件和它们的内容。
事件驱动的编程模型
ASP.NET Web 页面为 Web 应用程序提出了熟悉的模型来为发生在客户端或者服务器中的事件而编写事件处理器。ASP.NET 页面框架把这个模型抽象成在客户端捕获事件的底层机制的一种方式,把它传输到服务器,并且适当的方法调用全部都是自动化的,对于你是不可见的。而结果则是一种清晰的,易于编写的代码结构,并且支持基于事件驱动的开发。
直接的状态管理
ASP.NET 页面框架自动处理对于你的页面和它的控件的状态的维护任务,并且它为你提供明确的方式来维护特定的应用程序状态信息。这些都能够在无需使用笨重的服务器资源的情况下被完成,并且可以在发送或者不发送 Cookie 到浏览器的情况下而被实现。
独立于浏览器的应用程序
ASP.NET 页面框架允许你在服务器端创建所有的应用程序逻辑,排除针对于不同浏览器的明确代码需要。但是,这仍然允许你通过编写客户端代码获得特定的浏览器特征优势来提供改进的性能和一个更加丰富的客户端体验。
.NET Framework 公共语言运行时支持
ASP.NET 页面框架是建立在 .NET Framework 之上的,因此整个框架可用于任何 ASP.NET 应用程序。你的应用程序可以用任何与运行时相兼容的语言进行编写。另外,由于使用了由 .NET Framework 所提供的数据访问架构,数据访问也得到了简化,包括 ADO.NET。
.NET Framework 的可伸缩的服务器性能
ASP.NET 页面框架允许你从一台只有一个处理器的计算机中干净地把你的 Web 应用程序扩展到多台计算机 Web 农场,并且不需要对应用程序的逻辑做出复杂的变化。