`
pundit
  • 浏览: 242408 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

MonoRail

阅读更多

 

  MonoRail是什么?

  起源

  MonoRail是一个.NET的MVC web开发框架, 原名Castle On Rails, 是CastleProject的一个子项目. 作者hammett在使用过Ruby On Rails后, 觉得非常棒, 他希望在享受ror的开发模式的同时能使用大量现有的资源, 于是就用.NET写出了一个Castle On Rails. 后来ror那边有人抗议说, 把项目名字叫做xxx On Rails是侵权, On Rails不只是它字面上"快捷"的意思, 而是代表了他们的软件开发哲学, 是专有名词... 于是hammett把项目改名成MonoRail了. 现在可下载的版本是0.4beta, svn上的版本已经是RC1了

  简介

  MonoRail的核心是Action Pack在.NET上的实现. 这种方式高效, 直观而且易于测试.

  MonoRail的开发模式和传统的webform有很大区别, webform属于PageController模式, 每一个页面对应一个Controller, 通常情况下, 这个Controller就是根据url相对应的.aspx文件分析出来产生的类. 如果不清楚aspx的底细, 请看这里. System.WebUI.Page实现了IHttpHandler, 每个aspx相关的类各自处理自己的http请求, 经一些逻辑处理后(通常代码在aspx的Codebind类, 也就是aspx的父类), 输出自己的视图. 而MonoRail是FrontController模式, 由Castle.MonoRail.Framework.MonoRailHttpHandler接管所有请求, 然后根据请求的url创建相应的controller, controller再调用相应的action, 最后调用模板引擎输出内容. 默认情况下, 一个url的结构是Controller/action. 例如, http://localhost/monorailSample/Home/index.rails  对应类 HomeController的Index()方法.



 

  MonoRail实现的模板引擎有3个:

  AspNetViewEngine

  用传统的.aspx文件做模板, 可以照常使用aspx语法和服务器控件, 但是由于Webform的生命周期和MonoRail完全不同, 有时候会让人觉得别扭, 有部分特性也受到了限制.

  NVelocityViewEngine

  用NVelocity做模板引擎, 需要学习VTL语法, 但是使用很简单, 特别是很多java程序员已经熟悉velocity. 简单的语法也强迫程序员把逻辑和界面很好的分离开来, 方便跟美工配合.

  BrailViewEngine

  基于Boo的模板引擎, Boo是一种语法类似python的.NET语言, 据MonoRail的参考说, Brail引擎是功能最强, 性能最好的选择, 但Boo是一种陌生的语言, 这成了Brail引擎应用的最大障碍.

  综合各种因素, MonoRail推荐使用的模板引擎是NVelocity, 但说不定哪天Brail会赶上来...

 

  没有Server Control的世界

  五花八门的Server Control是似乎是asp.net最吸引人, 最有优势的地方. Webform确实是一个非常棒的设计. 复杂的HTML和js在服务端被包装成简单易用, 有清晰层次结构的对象, 比起asp时代界面的编写方便多了. 当初想用monorail只是出于方便和美工配合的考虑, 并且担心是否有些工作又回到asp时代的原始状态. 但事实上, 我用monorail花了一个星期做了一个小项目后, 发现代码是多么的简洁和清爽, 代码量比传统的Webform开发少多了. 总结一下monorail效率如此之高的原因:

  1. SmartDispatcherController提供了querystring或form到action参数的绑定, 支持string, 各种数值类型, 数组以及HttpPostedFile. 例如, EditUser.rails?id=1, 1将会绑定到EditUser(int id)方法的id参数. 参数还可以绑定到一个对象, 例如一个form里有name属性和User类各个字段名对应的input, 当他们post到SaveUser.rails时, SaveUser([DataBind]User user)中的user将会自动被创建和赋值. 一个业务逻辑比较简单的MIS, 或许相当一部分的代码就是这样无聊的:

  paramName.Value = txtName.Text ;

  paramBirthday.Value = txtBirthday.Text.Length > 0 ? DateTime.Parse(txtBirthday.Text) : DBNull.Value ;

  ...

  但是有了自动绑定机制后, 无聊的代码就消失了,  这也显得TextBox, DropdownList之类的简单server control没有什么价值了.

  2. 可以定义Filter, 在action之前和/或之后执行, 在Filter里可以获得action相关的上下文, 如果是在action之前执行还可以通过返回false终止action的执行. Filter可以用于权限验证, 日志, 生成公有的动态内容等方面, 提高了逻辑代码的复用.

  3. 模板可以嵌套, 或者在Controller里定义LayoutAttribute使模板被嵌套, 并且引入了概念有点类似user control的ViewComponent, 提高了界面的复用.

  4. 逻辑和界面完全分离, 便于维护和测试.

  大部分流行的asp.net控件, 都有开源的js实现的替代品, 例如 HTML编辑器可以用FCKeditor, 日历可以用JsCalendar, 还有TreeView, Menu之类的, 在sf.net都应该找得到比较好的项目. 至于datagrid, 用nvelocity的foreach循环足够了. 其实webform只是入门容易,要精通的话它的成本是比精通xhtml + css + javascript的成本高得多的。我也用过两年webform,但是我仍然不了解它的生命周期中大部分的步骤。。。。

  • 大小: 23.1 KB
分享到:
评论

相关推荐

    MonoRail例子(入门篇)

    MonoRail是 Castle Project 的一部分,它是一个开源的、基于.NET框架的Web应用程序开发框架,设计用于替代ASP.NET Web Forms,提供了更面向对象的MVC(Model-View-Controller)架构。MVC模式鼓励分离关注点,使代码...

    Monorail PaginationHelper.CreateCustomPage 自定义分页

    ### Monorail PaginationHelper.CreateCustomPage 自定义分页应用解析 #### 一、概述 在Web开发中,分页是一项非常实用且常见的功能,它能够有效地处理大量数据展示时可能出现的性能问题。Monorail框架提供了`...

    monorail的小例子

    Monorail是一个已退役的开源Web应用程序框架,它在2000年代初期对ASP.NET的替代方案进行了探索,提供了一种轻量级、灵活且更面向对象的开发方式。这个压缩包文件包含了一些关于Monorail的示例项目,可以帮助初学者...

    ShoppingCart-MonoRail.rar

    《MonoRail:构建高效Web应用的框架探索》 MonoRail,这个名字在IT行业中或许并不如ASP.NET那样耳熟能详,但它却是.NET平台上的一个强大且灵活的Web应用程序框架。"ShoppingCart-MonoRail.rar"这个压缩包,包含了对...

    monorail的过滤器

    Monorail是一个开源的Web应用程序框架,主要用于构建ASP.NET应用程序。在Monorail中,过滤器(Filter)是一个强大的机制,它允许开发者在特定的HTTP请求生命周期的不同阶段插入自定义的行为。过滤器在Web开发中扮演...

    MonoRail+IBatisNet +Velocity

    MonoRail、IBatisNet 和 Velocity 是三个在C#开发中常用的技术框架,它们分别用于不同的领域,但在实际项目中常被结合使用以构建高效、灵活的Web应用。下面将详细介绍这三个技术及其组合使用的要点。 **MonoRail** ...

    MonoRail 上传文件 整合FCK

    MonoRail是.NET平台上的一款轻量级的Web应用框架,它为开发者提供了强大的MVC(Model-View-Controller)模式支持,旨在提供比ASP.NET更灵活、更可扩展的开发环境。在 MonoRail 中实现文件上传功能,特别是整合...

    MonoRail 实体类生成器

    MonoRail实体类生成器是一款专为Castle MonoRail框架设计的工具,旨在提高开发效率,减少程序员手动编写实体类的工作量。MonoRail是.NET平台上的一款轻量级MVC(Model-View-Controller)框架,它提供了丰富的功能和...

    MonoRail+实体类生成器.rar

    MonoRail是 Castle Project 的一部分,它是一个开源的.NET Web 应用程序框架,设计用于替代ASP.NET,提供更灵活的MVC(Model-View-Controller)架构。MonoRail这个名字是“Monorail”和“Rails”(Ruby on Rails)的...

    MonoRail基础学习文档和实例

    MonoRail是.NET框架下的一款轻量级Web应用框架,它为开发者提供了构建高效、灵活的Web应用程序的工具。本资源包含“MonoRail基础学习文档”和“实例”,旨在帮助初学者快速入门并深入理解MonoRail的使用。 首先,让...

    ibatisnet+monorail+vs2010

    【标题】"ibatisnet+monorail+vs2010"是一个基于C#编程语言,使用iBATIS.NET、MonoRail框架,并在Visual Studio 2010开发环境下的项目实例。这个项目旨在展示如何整合这些技术来构建一个Web应用程序。 【iBATIS.NET...

    monorail项目-文件管理-MvcFileManage.rar

    《Monorail项目中的文件管理:MvcFileManage深入解析》 在软件开发中,文件管理是不可或缺的一部分,尤其是在Web应用程序中。Monorail项目,作为一个轻量级的.NET MVC框架,为开发者提供了一种高效、灵活的方式来...

    monorail项目-留言簿-GeustBook.rar

    《Monorail项目:留言簿系统详解》 Monorail项目是一个典型的Web应用程序开发实例,其核心部分是一个名为“留言簿”(GuestBook)的功能模块。这个模块旨在提供一个在线平台,让用户能够方便地留下自己的信息,进行...

    monorail::monorail:单轨电车| 网络设计系统

    :monorail: 单轨| 网络设计系统Monorail for React帮助开发人员执行。 这些组件由SimSpace的工程师和UX设计师的核心团队开发,可实现可靠的开发工作流程,以构建美观且功能强大的Web项目。快速开始将Monorail添加到...

    MonoRail .net

    MonoRail .NET是一个开源的Web应用程序框架,设计用于替代ASP.NET,它提供了更灵活的开发模式和更高的可扩展性。 MonoRail这个名字来源于铁路系统中的单轨列车,寓意其为单一轨道上的应用程序框架,强调轻量级和高效...

    学习资料monorail

    Monorail,中文通常称为单轨铁路,是一种城市轨道交通系统,其特点是列车运行在单一的轨道上,而非传统的双轨铁路。在IT行业中,Monorail可能是指一种软件开发框架或者概念,尤其在Web开发领域。然而,由于提供的...

    MonoRail入门实例

    MonoRail是.NET框架下的一款轻量级Web应用框架,它为开发者提供了构建高效、灵活和可测试的Web应用程序的能力。本教程将引导你逐步了解MonoRail的基本概念和使用方法,包括filter、home、rescue、routing和layout这...

    monorail简单例子

    Monorail,中文常被称为“单轨框架”,是.NET平台上的一款轻量级Web应用程序开发框架。这个框架在早期被广泛用于构建动态、高性能的Web应用,尤其受到那些寻求替代ASP.NET MVC或者Web Forms的开发者们的青睐。在这个...

    SharpDevelop下的castle monorail工程模板

    SharpDevelop下的castle monorail工程模板,请拷贝到安装目录下 data\templates\project\CSharp 中。重启SharpDvelop即可选择MonoRail类型工程。

Global site tag (gtag.js) - Google Analytics