专访.NET平台上类RoR开源项目Castle[转载]
生活随笔
收集整理的這篇文章主要介紹了
专访.NET平台上类RoR开源项目Castle[转载]
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Castle Project是一個運行在.NET之上的開源項目,提供了類似流行的Ruby on Rails的MVC (Model-View-Controller)框架。Castle Project自從2003年就開始開發(fā),并在2006年11月發(fā)布了1.0 RC2 。在這個項目臨近1.0 RC3版本發(fā)布之際,我們采訪了項目的創(chuàng)始人Hamilton Verissimo,談到了Castle Project是什么及未來的走向。 Castle Project 應被任何在.NET平臺上使用新方法來創(chuàng)建Web應用程序,感興趣或特別好奇于實現(xiàn)MVC的應用程序的開發(fā)人員予以關(guān)注。它試圖通過提供一系列工具和框架來讓.NET世界的開發(fā)變得更令人愉快、開心和富有成效。它提供的這些方法創(chuàng)建出的應用程序更具有良好的層隔離,和良好的設計。 首先我們來看一下Castle Project到底是什么: MicroKernel/Windsor?- 這是一個控制反轉(zhuǎn)(Inversion of Control,IoC)容器。實際上,Windsor僅僅是封裝了MicroKernel并提供了一些外部的配置信息和代理支持。IoC的核心思想是通過消除直接的代碼編寫并配置需要依賴的服務,來促進松散耦合設計。 Castle ActiveRecord?- 一個構(gòu)建于NHibernate之上的ORM。它無需創(chuàng)建XML映射,并簡化了NHibernate的一些復雜基礎功能。雖然基于基類的使用是標準的方式,但這不是必要的,你可以以不同的模式來使用ActiveRecord,如Repository。 Castle MonoRail?- 一個構(gòu)建于ASP.NET(不要和ASP.NET中的WebForms混淆)之上的Web框架。它以控制器作為Web應用程序中的主要角色,決定流程,委托到其他層并選取視圖來呈現(xiàn),因此它只關(guān)心應用程序的流程邏輯。視圖,另一方面也只關(guān)注表現(xiàn)邏輯。這是和標準的WebForms模式最大的不同之處。對于那些來自其他平臺下的Web框架的人們,這是標準的選擇,可以讓你完全的控制HTML的生成,而WebForms和它的控件是無法做到的。 有一些不是頂級的但依然很重要的項目,如DynamicProxy(它允許代理接口和類,被用于好幾個開源項目中,如NHibernate和Rhino.Mocks)。NVelocity也是我們?yōu)镾ourceforge上已關(guān)閉的NVelocity提供的一個分支。我們修正了幾個錯誤、添加了一些有意思的特性并進行了優(yōu)化。 對于項目提供用于視圖呈現(xiàn)技術(shù)的看法: Castle MonoRail提供了幾個不同的視圖引擎用于開發(fā)呈現(xiàn)到瀏覽器的視圖。NVelocity和Brail隨著Castle發(fā)布包一起提供,盡管這樣,還有一些來自于社區(qū)的視圖引擎實現(xiàn),名為AspView的項目和一個基于StringTemplate的項目。?
從這些視圖引擎的差異得出的一個事實就是,他們不具有像WebForms那樣復雜的頁面生命周期。我們也不會試圖重新創(chuàng)造一個有狀態(tài)的不夠清晰的Web模型。堅信Web開發(fā)是簡單的,我們也受益于簡單的方式。通過使用模型(Models)和控制器(Controllers )處理數(shù)據(jù)/狀態(tài)和流程/應用邏輯,我們就可以依靠視圖來作為簡單顯示內(nèi)容的角色,由此我們不需要任何復雜的語法,使用if和foreach足夠了。但是,內(nèi)容也能被重用,只須把視圖分割到不同的文件中或創(chuàng)建視圖組件(ViewComponents)來作為相關(guān)邏輯的視圖被顯示。 關(guān)于自從RC2發(fā)布以來的改變:
ActiveRecord和Windsor有了一些加強和錯誤修正。MonoRail被極大的改善,添加了緩存支持和JS生成。緩存能在控制器級別配置,最終是利用了ASP.NET的緩存基礎功能。JS生成是一種生成可以改變頁面的JavaScript代碼的方式。通常被用于AJAX中,可以想象一下,你有一個顯示了某些內(nèi)容的頁面,用戶點擊了一個按鈕改變了一些東西的狀態(tài)。這個動作能使用JS生成功能生成JavaScript來更新頁面中的元素。 這個項目明顯和Ruby on Rails有些類似,當問到Castle Project是否是因為Ruby on Rails的流行才啟動的: Castle首先以控制反轉(zhuǎn)(IoC)容器開始的,我大概記得好像在2003年到2004之間。Castle ActiveRecord和MonoRail是在我接觸了Rails(2004年,Rails那時還非常年輕)之后才開始的。那時我決定用它(Ruby on Rails)構(gòu)建一個產(chǎn)品,可當時除了頭痛的非標準需求外一無所有。 另外一方面而言,.NET具有很好且文檔齊備的函數(shù)庫,很多像樣的項目在各處都冒了出來。雖然我喜歡Rails,但.NET不只是框架和平臺,我會把它用于我參與的各類項目當中。 而MonoRail開始于Ruby on Rails ActionPack的移植,是從以前來自用戶的貢獻和想法中分支出來。今天它擁有自己的特征,雖然它的基礎和RoR類似,但我們支持的東西RoR不支持,反之亦然。 但問到Castle Project的未來和Hamilton看到的趨勢在那里: 覆蓋企業(yè)項目(開發(fā))的所有方面是終極的目標。同時我們會平衡那些提供出來的產(chǎn)品具有一定的預見性,能讓你輕松的工作并給你一定生產(chǎn)力的提高。這和提供某些復雜的編輯器或代碼生成器工具有所不同,沒有了他們你就無法工作。這也就是我們的工作為什么和微軟的方式如此的不同。
Castle Project是一個開源的項目,歡迎各位開發(fā)人員參與進來。參與方式包括提交修正錯誤的補丁,或添加新特性,添加測試用例或文檔。參與的第一步是訂閱開發(fā)郵件列表,并開始參與到討論之中。 更多的信息能在Castle Project 網(wǎng)站或在wiki上找到。Hamilton也維護著一個有大量信息的Blog。 查看英文原文:Catching up with the Castle Project
更新的功能包括: ActiveRecord
本文轉(zhuǎn)自 張善友 51CTO博客,原文鏈接:http://blog.51cto.com/shanyou/73965,如需轉(zhuǎn)載請自行聯(lián)系原作者
從這些視圖引擎的差異得出的一個事實就是,他們不具有像WebForms那樣復雜的頁面生命周期。我們也不會試圖重新創(chuàng)造一個有狀態(tài)的不夠清晰的Web模型。堅信Web開發(fā)是簡單的,我們也受益于簡單的方式。通過使用模型(Models)和控制器(Controllers )處理數(shù)據(jù)/狀態(tài)和流程/應用邏輯,我們就可以依靠視圖來作為簡單顯示內(nèi)容的角色,由此我們不需要任何復雜的語法,使用if和foreach足夠了。但是,內(nèi)容也能被重用,只須把視圖分割到不同的文件中或創(chuàng)建視圖組件(ViewComponents)來作為相關(guān)邏輯的視圖被顯示。 關(guān)于自從RC2發(fā)布以來的改變:
ActiveRecord和Windsor有了一些加強和錯誤修正。MonoRail被極大的改善,添加了緩存支持和JS生成。緩存能在控制器級別配置,最終是利用了ASP.NET的緩存基礎功能。JS生成是一種生成可以改變頁面的JavaScript代碼的方式。通常被用于AJAX中,可以想象一下,你有一個顯示了某些內(nèi)容的頁面,用戶點擊了一個按鈕改變了一些東西的狀態(tài)。這個動作能使用JS生成功能生成JavaScript來更新頁面中的元素。 這個項目明顯和Ruby on Rails有些類似,當問到Castle Project是否是因為Ruby on Rails的流行才啟動的: Castle首先以控制反轉(zhuǎn)(IoC)容器開始的,我大概記得好像在2003年到2004之間。Castle ActiveRecord和MonoRail是在我接觸了Rails(2004年,Rails那時還非常年輕)之后才開始的。那時我決定用它(Ruby on Rails)構(gòu)建一個產(chǎn)品,可當時除了頭痛的非標準需求外一無所有。 另外一方面而言,.NET具有很好且文檔齊備的函數(shù)庫,很多像樣的項目在各處都冒了出來。雖然我喜歡Rails,但.NET不只是框架和平臺,我會把它用于我參與的各類項目當中。 而MonoRail開始于Ruby on Rails ActionPack的移植,是從以前來自用戶的貢獻和想法中分支出來。今天它擁有自己的特征,雖然它的基礎和RoR類似,但我們支持的東西RoR不支持,反之亦然。 但問到Castle Project的未來和Hamilton看到的趨勢在那里: 覆蓋企業(yè)項目(開發(fā))的所有方面是終極的目標。同時我們會平衡那些提供出來的產(chǎn)品具有一定的預見性,能讓你輕松的工作并給你一定生產(chǎn)力的提高。這和提供某些復雜的編輯器或代碼生成器工具有所不同,沒有了他們你就無法工作。這也就是我們的工作為什么和微軟的方式如此的不同。
Castle Project是一個開源的項目,歡迎各位開發(fā)人員參與進來。參與方式包括提交修正錯誤的補丁,或添加新特性,添加測試用例或文檔。參與的第一步是訂閱開發(fā)郵件列表,并開始參與到討論之中。 更多的信息能在Castle Project 網(wǎng)站或在wiki上找到。Hamilton也維護著一個有大量信息的Blog。 查看英文原文:Catching up with the Castle Project
更新的功能包括: ActiveRecord
- 不需要擴展ARBase就能支持多數(shù)據(jù)集
- 使用新的Castle Validation實現(xiàn)重構(gòu)驗證支持
- InPlaceConfigurationSource.Build()
- 添加HqlNamedQuery
- 大量的錯誤修正
- RC3第一次包含DynamicProxy 2(其支持泛型)
- 比版本1快很多
- 支持泛型集合
- 轉(zhuǎn)而使用DynamicProxy 2
- 添加一些小功能到IKernel和IWindsorContainer的add/resolve方法中
- 子容器支持得以提升,但是依舊需要一些檢查——你可能會在編譯的時候得到警告
- 添加了一個很簡單的計算(Eval)支持,你能進行配置
- DefaultKernel 和 WindsorContainer現(xiàn)在都實現(xiàn)了IServiceProvider
- 添加了緩存(Cache)支持(查看新的Cache屬性)
- 添加IsPost/IsGet/IsPut/IsHead到Controller
- 添加自動窗體驗證(Auto Form Validation)
- FormHelper接近完美,依然缺乏多條選擇的支持
- 支持一次注冊多個視圖引擎(可以和混合視圖引擎說拜拜了)——但是還不夠好,在內(nèi)部還有很多不協(xié)調(diào)的情況
- 添加了少量視圖組件
- 添加測試控制器、視圖組件、向?qū)У闹С?#xff0c;而無須使用ASP.NET
- 添加了JS生成器支持,及UpdatePage/UpdatePageTag視圖組件
- Format支持set操作,例如$Form.Select(”price”, [1..100], “”)是用貨幣格式來顯示選擇的元素
- 添加PaginationHelper.CreateCustomPage,其是處理分頁最優(yōu)化的方式
- 添加DiggStylePagination視圖組件,基于Alex Henderson運作
- 添加了如下成員到SmartDispatcherController(和驗證有關(guān)):ValidationSummaryPerInstance : IDictionary、GetErrorSummary(對象實例) : ErrorSummary、HasValidationError(對象實例) : bool
- 添加ViewComponentDetails屬性(就像ControllerDetails)
- 添加ViewComponentParam屬性,它可以告知MonoRail把參數(shù)作為屬性綁定到你的視圖組件上——減少了重復的代碼規(guī)則
- 添加UrlHelper/UrlBuilder概念
- 已經(jīng)發(fā)布
- 添加Castle.Validator
- 添加Castle.DictionaryAdapter——對這個特性還有點拿不準
- 加強了Binder(這是它的實現(xiàn)的另外一種重寫代碼)
- 創(chuàng)建了using.castleproject.org
- 創(chuàng)建了api.castleproject.org
- 在Castle.Services.Transaction和微軟System.Transactions之間進行了初步集成
- 創(chuàng)建了Castle.Core命名空間
本文轉(zhuǎn)自 張善友 51CTO博客,原文鏈接:http://blog.51cto.com/shanyou/73965,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的专访.NET平台上类RoR开源项目Castle[转载]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server 2012系
- 下一篇: DataGridView 用户输入时,单