日期:2012-08-24  浏览次数:20556 次

?    表单应用模板

从概念上讲,在服务框架的最上面是两个应用程序模板:Windows应用程序模板和网络应用程序模板。尽管我把重点放在把微软.NET 框架用作开发网络服务和网络应用程序的一种途径上,但框架也可用于开发较传统的基于Windows的应用程序(当然,这些应用程序也能使用网络服务)。
编写Windows客户应用程序的开发人员可使用Win表单应用程序模板以利用Windows丰富的用户接口特点,包括现在的ActiveX控件和Windows 2000的新特点,如透明的、分层的、浮动窗口。可以选择传统的Windows或网络外观。得知它和现在的基于Windows表单包的相似性以后,开发人员会发现Win表单可编程模板和对设计阶段的支持非常直观。
Win 表单利用了Microsft .NET框架 runtime以减少基于Windows的客户应用程序的开销。只要应用程序和组件是用Win所写或被Win表单应用程序使用,那么它们就能被框架安全模板在客户机上安全地执行。如果以这种方式使用或执行,那么某人从Internet下载下来的生猛游戏就不会对配制信息和数据产生破坏,否则会自动地给用户地址薄里的每一个人发送电子邮件。
Microsft .NET框架 装配模板简化了应用程序的配制和版本化 。应用程序可被配制为使用它们在编译和测试所用的共享组件,而不是使用恰好在客户机器上安装的随便什么版本的组件,这就提高了应用程序的可靠性,减少了应用程序所支持调用的主要因素:用户接口控件和其它共享组件版本的不兼容性。

?    网络应用程序模板

建立在Microsft .NET框架 上网络应用程序共享一个通用应用程序模板。在这个模型中,网络应用程序是一套起源于基URL 的URLs。因此它包含用于生成在浏览器中观看的网页的网络应用程序和网络服务。在本节中,我将详细介绍称为Active Server Pages+ (ASP.NET)的网络应用程序可编程模板
如同你从名字猜到的那样,ASP.NET是由活动服务器页面发展而来。ASP.NET利用common language runtime 和服务框架网络应用程序提供了一个可靠的、自动化的、可扩展的主机环境。ASP.NET也受益于common language runtime 集成模板,简化了应用程序的配制。另外,它提供简化应用程序开发的服务(如状态管理服务)以及高水平的编程模板(如ASP.NET Web Forms和ASP.NET Web Services)。
ASP.NET的核心是HTTP运行语言,一个高性能的用于处理基于低级结构的HTTP请求的运行语言,而基于的结构与MicroSoft Internet Information Services (IIS)所提供的ISAPI结构相似。如同你在图5所看到的,HTTP 运行语言是在象服务器上的IIS或客户机上的IE之类的unmanaged 主机过程中运行的受控代码。HTTP runtime负责处理引入的所有HTTP请求,并对每个请求应用程序的URL进行解析,然后把请求分配到应用程序以进行进一步的处理。HTTP 运行语言是多线程的,并异步处理请求,因此劣质的应用程序代码阻碍不了它对新请求的处理。而且HTTP 运行语言假定失败必会发生,因此它被控制为尽最大力量自动地从访问冲突、内存泄漏、死锁等事故中恢复过来。除非是硬件故障,运行语言的目标是100%的可靠性。
ASP.NET使用基于构件的Microsft .NET框架配制模板,因此它获得了如XCOPY配制、构件并行配制、基于XML配制等优点。ASP.NET另一个主要优点是,它支持应用程序的实时更新。管理员不必关掉网络服务器或者甚至不用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因此甚至在程序运行时文件就可以被覆盖。当文件更新后,系统会温和地转换到新的版本。系统检测文件变化,并用新的应用程序代码建立一个新的应用程序实例,然后将引入的请求路由到应用程序。当所有被现存的应用程序实例处理的未完成的请求处理完后,该实例就被销毁了。
在应用程序中,HTTP请求是通过HTTP模块的一个管道路由的,最终到达请求处理程序。HTTP模块和请求处理程序是一些实现特殊接口的受控类,而这些接口是由ASP.NET定义的。这种管道结构使得为应用程序增加服务非常方便:只需补充一个HTTP模块。例如,安全,状态管理及跟踪都被实现为HTTP模块。高级可编程模块,如网络服务和网络表单,通常被实现为请求处理程序。一个应用程序能链接与多个请求处理程序——每个处理程序一个URL,但是所有的HTTP请求都通过同样的管道路由。
网络基本上是一个无状态模型,并且在HTTP请求间没有联系,这使得编写网络应用程序很困难,因为应用程序通常需要维护跨多个请求的状态。ASP.NET增强了由ASP引入的状态管理服务,以便为网络应用程序提供三种类型的状态:应用程序、会话、用户。就象在ASP中一样,应用程序状态特定于一个应用程序实例,并且不会持久。会话状态是特定于一个用户与应用程序间的会话的。与ASP会话状态不同,ASP.NET会话状态储存在一个独立的过程中,并且可把它配制成可以储存到一个独立的机器上。这使得会话状态当应用程序在网络群(Web farm)扩展时非常有用。用户状态类似于会话状态,但通常它不会超时,并且是永久性的。因此,用户状态对储存用户参数和其它个性化的信息是有用的。所有状态管理服务都被实现为HTTP模块,因此它们容易增加到应用程序管道中,或从中删除。如果除了由ASP.NET提供的服务外,还需要额外的状态管理服务,那么可由第三方的模块提供。
ASP.NET同样提供高速缓冲服务,以改善性能。输出缓冲可完全节省网页翻译,段缓冲储存部分的网页。由于提供了相应的类,所以只要需要,应用程序、HTTP模块以及请求处理程序可以在高速缓存中储存任意数量的对象。
下面快速浏览一下建立在ASP.NET可编程模块之上的两个高级可编程模块:ASP.NET 网络 表单和 ASP.NET 网络 服务。

?    ASP.NET 网络表单

网络表单把基于Visual Basic?的表单的高生产性的优点带到了网络应用程序的开发中来。网络表单支持传统的将HTML内容与角本代码混合的ASP语法,但是它提出了一种将应用程序代码和用户接口内容分离的更加结构化的方法。引入的网络表单控件用于为封装通用用户接口元素提供了一种机制。这些新的特点使得开发工具在支持VB小应用程序的同时,也支持设计时模块,使得WUSIWYG工具支持网页布局。
网络表单控件负责生成用户接口,典型情况是在HTML表单中。ASP.NET是提供了一套映射传统的HTML用户接口小部件(包括列表框,文本框和按钮)的网络表单控件和一套附加的更加复杂的网络控件(如日历和广告转板)。这些控件的一个重要特点是,它们可以被编写以适应客户端的能力;同一网页把大范围的客户端平台和表单因素作为目标。换句话说,网络表单控件能“嗅”到正在查找表单的客户,然后返回合适的用户经验――可能是适合低级浏览器的HTML3.2或是适于IE5.0的动态HTML。
考虑到网络是一种无状态的联接模型,网络应用程序开发人员所面临的一个很复杂的问题是,他们要对用户与基于网络的接口的交互作用作出反应。网络利用ASP.NET的体系架构提供了一套丰富的服务,以帮助开发人员建立交互式网页。这些服务的净作用是使基于组件的、事件驱动的可编程模块,对开发人员来说,非常象客户端的表单程序设计。用户与网页交互作用的状态管理的复杂性被ASP.NET 网络 表单和网络表单控件隐藏起来了。对开发人员来说,提供的丰富数据绑定服务使得显示通过数据访问服务得到的数据变得非常容易。
代码与内容的分离使ASP.NET网页能动态地编译到受控类中,用以提高性能。每个引入的HTTP请求都被传递到一个新的网页实例,因此开发人员不需要关心代码中的线程安全性。

?    ASP.NET 网络 服务

ASP.NET 网络 服务体系架构为用ASP.NET建立网络 服务提供了一高级可编程模板。虽然建立网络服务并不需要使用网络 服务平台,但是它提供许多的优点将简化开发过程,并且它使用的编程模型对用ASP或VB工作的开发人员来说是很熟悉的。使用这个可编程模型,开发人员不需要理解HTTP、SOAP或其它任何网络服务规范。
开发人员用ASP.NET生成一个扩展名为.asmx的文件,并把此文件配制为网络应用程序的一部分,就建立起了一个网络 服务。ASMX文件或者包含对在其它地方定义的受控类的引用,或者包含这个类的定义。这个类是由ASP.NET提供的WebService类所派生。公有的类方法在标记上WebMethod属性后,就会成为网络服务方法,把HTTP请求发送到ASMX文件中的URL后,这些方法就会被调用。你不必手工为你的网络服务建立一个契约。当被调用者请求时,ASP.NET检查类的元数据,以自动生成SCL文件。
客户可通过SOAP,HTTP GET 和HTTP POST提交请求。对方法和参数进行编码的约定是:对HT