zoukankan      html  css  js  c++  java
  • Castle.MVC框架介绍

    Castle.MVC目前还在Castle的Sandbox中,只是在源代码管理中有,还没有向外发布版本,这里介绍多时Web的MVC,和Castle的MonoRail相比较,这个MVC可以Asp.Net的事件驱动开发和WebControl所见及所得的开发模式。
    对Castle.MVC做一下分解,其构成主要有:
    View――这个就不多做解释了,页面的CS类如果要实现其导航功能,就继承此类,Castle.MVC提供了3种View:
    WebFormView:继承Page类和IView接口,所有的Web 页面继承这个类。
    WebUserControlView:继承UserControl,所有的用户控件继承这个类。
    WinFormView:继承Form类和IView接口,目前框架中这部分的代码还没有实现。
    Controller――这个应该很好理解,控制View、State和Navigator;定义了接口IController
    Navigator――是实际导航器的功能,从Controller得到下个View的名字,据此来导航到哪个View,但是它并没有直接就Redirect到相关的页面上去了,而是由ViewManager来Redirect的;定义了个接口Inavigator
    ViewManager――管理View的,主要得到当前View的一些信息,比如State,激活View(即Redirect到页面);
    定义了接口IViewManager
    Configuration――负责读取配置用;
    State――是一个状态,是对当前的任务一个保存状态,Castle.MVC提供了2种状态维护的持久化方法:
    MemoryStatePersistence:内存状态维护
    SessionStatePersistence:Session保存状态(一般采用这个)
    LifestyleManager---负责对象的生命周期管理,适用Castle容器对象生命周期管理功能,目前实现了一个
    PerRequestLifestyleManager:为每一个请求创建一个Controller的实例
    Resource:访问资源数据,如多语言等
    MVCFacility:包装TypedFactory来管理IState工厂,关于TypeFactory的原理和使用方法参看http://wj.cnblogs.com/archive/2005/07/12/191359.htm 
    现在我们来看一下Castle.MVC.Test.Web这个工程的web.config
    ?xml version="1.0" encoding="utf-8" ?>
    <configuration>
         <configSections>
              <section name="mvc" type="Castle.MVC.Configuration.ConfigurationSectionHandler, Castle.MVC"/>
         configSections>     


        <mvc>
             //下面定义view

              <webViews>

                  <view id="page2" path="/Castle.MVC.Test.Web/views/page2.aspx" />

                  <view id="index" path="/Castle.MVC.Test.Web/views/index.aspx"  />

              webViews>

             //Command――就是一次调用页面的操作指令,当前View的情况下,如果返回不同下个View就会被Controller调用到下一个页面。

              <command-mappings>

                  <commands view="index">

                       <command id="GoToPage2" view="index" />

                  commands>

                  <commands view="page2">

                       <command id="GoToIndex" view="page2" />

                  commands>

              command-mappings>

         mvc>  

      <system.web>

    system.web>

    configuration>

    最新的IbatisNet的Npetshop2使用就是Castle.MVC框架,需要的同学可以这里下载NPetshop2 最新的IBatisNet的Petshop采用了大量的Castle东西,对于学习Castle是一个非常不错的例子。特点如下:
    Full MVC with Castle.MVC (see web.config to see web flow)
    - IOC integration with Castle.Winstor (inject service, controller, ...) but Dao is always by iBATIS
    ( an next version will also inject the Dao in Service)
    - Addes unit test for Dao, Presentation, Web (vias NunitAsp), Service layers

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/shanyou/p/264294.html
Copyright © 2011-2022 走看看