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
轉載于:https://www.cnblogs.com/shanyou/archive/2005/10/29/264294.html
總結
以上是生活随笔為你收集整理的Castle.MVC框架介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最终幻想VII观感
- 下一篇: 中国3G标准开始欧洲征程 中兴通讯先拔头