williambirkin

恭喜发财!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在更加复杂用系中,如何考尽可能避免航代的重,甚至考基于可配置的规则动态确定航,那Page ControllerFront ControllerMVC模式在更加复杂的系化。

中等
复杂程度的化—Page Controller(面控制器 

  使用Page Controller模式接受来自求的入、模型行的操作以及确定用于面的正确视图。分隔逻辑和所有视图。如果合适,建用于所有面控制器的公用基,以避免代并提高一致性和可测试性。6示了面控制器与模型和视图系。


6、使用BaseController消除代

 

  面控制器可接收求、提取所有相数据、模型的所有更新以及向视图转发请求。而视图又将根据模型示的数据。定独立面控制器将分隔模型与Web细节(例如会管理,或使用查询字符串或藏表域向传递参数)。按照这种基本形式,Web用程序中的建控制器。控制器因而将得非常简单,因为每仅须一个操作。

 

  为每个网(或操作)建独立控制器可能会致大量代。因此应该创BaseController以合并验证参数(阅图7)等公用函数。个独立面控制器都可以从BaseController承此公用功能。除了从公用基类继承之外,可以定帮助器,控制器可以行公用功能。

8Front Controller

 

  理程序具有以下两项职责

 

  1) 索参数。理程序接收来自Web器的HTTP PostGet求,并从求中索相参数。

 

  2) 选择命令。理程序首先使用求中的参数选择正确的命令,然后将控制权转给该命令以便理。

 

  在前端控制器中,所有求都通过单个(通常是两部件)控制器来送。控制器的第一个部件是理程序,第二个部件是Commands(命令)[Gof95]次。命令本身是控制器的一部分,代表控制器触的特定操作。在操作之后,命令选择要使用哪个视图来呈现页面。通常,构建的此控制器框架使用配置文件将求映射到操作,因此,它在构建之后便于更改。当然,其缺点在于这种设计固有的复杂程度。

 

漏之后的

 

  到目前止,已完整地展示了Web表示模式中MVC实现架构,同在此技于中等复杂和高度复杂的情况提出了Page ControllerFront Controller为优化的手段,在构建Web表示的用程序,已经给出了相完整的解决方案,心的者是否发现,是不是少了一点什?在构建Web用程序的候,除了构建一个“良构”的系MVC的分离和系的可展),我们还需要考虑应用程序的安全和性能,因此我们选取了Interceptiing FilterPage CacheWeb表示模式的充内容。

 

Intercepting Filter(筛选)

 

  如何围绕Web求来实现公共的预处理和后筛选器需要解决的问题,使用此模式,您建一串可合的筛选器,以便在Web求期间实现公共的预处理和后理任


10、一串可筛选

 

  筛选器构成了一系列独立模,在将传递到控制器象之前,些模可以接在一起以行一公共的。因各个筛选实现的是完全相同的接口,所以它彼此之没有式依性。因此,可以在不会影响筛选器的情况下添加新的筛选器。您甚至可以在部署添加筛选器,方法是基于配置文件动态们进例化。

 

  各个筛选器的设计应该尽可能是否存在其他筛选器作出任何假这样可以维护合性,即添加、除或重新排列筛选器的能力。此外,某些实现Intercepting Filter模式的框架不会保证筛选器的序。如果发现多个筛选器之存在很的相互依性,最好采取用帮助器的常方法,因为这样可以保保留筛选器序列中的束信息。Intercepting Filter的直接实现方式是一个筛选筛选可以用来遍一个由所有筛选成的列表。Web理程序在将控制权传递用程序逻辑之前将首先筛选


11Intercepting Filter类关

 

  当Web器收到理程序首先将控制权传递给FilterChain筛选象。此维护着一个包含所有筛选器的列表,并按筛选器。FilterChain可以从配置文件中筛选序,以实现部署的可合性。筛选器都有机会修改求。例如,它可以修改URL,或添加用程序要使用的字段。行完所有筛选器之后,"理程序"将控制权传递给控制器,后者将用程序功能(见图12)。



12Intercepting Filter序列   

 

  因Web通常需要有截取筛选器,所以大多数Web框架都为应用程序开发提供了将截取筛选器挂靠到-应过程中的机制。

 

Page Cache()

 

  如果动态生成的Web求并且构建需要耗用大量的系统资源,那,如何才能改进这类的响应时间存通过对动态生成的内容存来提高求响吐量。默情况下,在ASP.NET中支持存,但除非定有效的期策略,否,不会来自任何定响存。要定义过期策略,可以使用低OutputCache API或高@OutputCache指令。

 

  存的基本构是相对简单的。Web维护包含先生成的面的本地数据存见图13)。




13存的基本配置

 

  下面的序列图阐明了存可以改性能的原因。第一个序列见图2)描述尚未存所需面的初始状(即所存未命中)。在这种情况下,Web器必须访问数据,并生成HTML,再将其存存中,然后将它返回浏览器。注意,此程比不存的情况稍慢,因行了下列

  1. 确定面是否已

  2. 转换为HTML,然后存存中

 

  与数据库访问HTML生成相比,其中的任一都不应该长时间。但是,因在此情况下需要理,所以您必确保在系完成与存未命中关联之后连续多次命中存(如14所示)。



14存未命中的序列(当面不在存中

 

  在15所示的存命中情况下,面已经处存中。通数据库访问面生成和面存存命中省了循



15存命中的序列(存中

 

  在ASP.NET中可以采用下述三模式来实现缓存策略:

 

  1.将这样的指令插入到要存的面中。指令指定刷新隔(以秒为单位)。刷新隔不依于外部事件,而且存不能全部刷新。

 

  2Vary-By-Parameter Caching.此模式使用Absolute Expiration型,该变型使开发指定影响面内容的参数。因此,存将存储页面的多个版本,并按参数值为这面版本制索引。

 

  3Sliding Expiration Caching.此模式与Absolute Expiration绝对过期)的似之是,面在指定的时间内是有效的。但是,在都会重置刷新隔。例如,您可能使用滑动过存,将一个存最10。只要对页面的求是在10出的,就将时间再延10

posted on 2007-01-11 10:42  williambirkin  阅读(344)  评论(0编辑  收藏  举报