MS MVC框架漩涡中的MonoRail未来

上个星期,Hamilton向微软MVC团队通报了Castle团队从现实应用中获得的所有复杂和不直观的需求,并告知他们如何处理这些事情。另外他还开发了一些集成案例,作为对MS MVC可扩展性和插拔性的概念验证。

我现在可以做到:

  • 创建对IParameterBinder的初始支持
  • 创建NVelocity视图工厂(View Factory)
  • 支持REST(支持基于接收头[accept header]的url语义和渲染)
  • 支持和Castle的DataBinder和ActiveRecordDataBinder的协同工作

我想要实现但还未能做到的功能:

  • 重用MonoRail的helpers:主要因为他们和MonoRail绑定的太紧了
  • 创建Brail视图工厂:和上面同样的原因
  • 创建一个试图工厂选择器:影响现有的测试性

目前Hamilton对MS MVC框架的做法非常满意,但是他建议社区对在年底要发布的CTP版本不要抱太大的期望:

那是因为你将要看到的是一个非常小的框架,要真正发挥作用还有许多工作要做,据MS MVC团队说这一CTP版本主要是为了获得反馈,不过,我相信接下来的版本会非常棒!

对于Castle MonoRail的未来,Hamilton说他们要等到MS MVC框架的最终版和功能集确定之后才能决定:

我真的非常期望MS MVC团队能试着支持MonoRail现在所支持的所有的东西,但是我不确定他们打算这样做。MonoRail 2.0最终结果如何取决于MS MVC框架的实现。如果最终的MS MVC非常棒,并且提供了很多功能,我会考虑放弃MonoRail 2.0。如果MS MVC最终版不是那么完美,缺少了必须实现的功能,那么MonoRail 2.0可以复用MS MVC的基础架构,以提供一些有价值的扩展。

Eleutian Technology公司的工程总监Aaron Jensen同意Hamilton的观点,并建议说

我想要看到的是MonoRail能变得真的像Rails。我想看到一些在MS MVC之上的实现,它们更加遵循“惯例胜于配置”的理念——包括生成器以及更多的功能。我期望它能更进一步,成为.NET社区所期望的一个真正的C# Web平台。 但是Aaron、Adam Esterline和其他一些人也指出了MonoRail对routing功能支持的不足

Routing——在RoR和MS MVC中它们视Routing为一等公民。而在MonoRail中却好像是一个附加之物。 为什么Routing这个顶级类如此重要呢?

  • DRY(别重复自己)——Routing引擎和URL生成的紧密绑定允许URL进行轻松和安全的重构;
  • 测试——在MonoRail中测试Route需要端对端(End-to-End)的测试,如果Route是顶级对象,那么就可以对它们做隔离测试。

Hamilton对Routing的问题已经进行了关注,他开发了一个新的MonoRail Routing引擎,相关的代码可以在MonoRail SVN上下载。

Ben Scheirman在他的一篇博客中讨论了微软技术和开源技术的话题,总结说“System.Web.MVC将拥有的观众数是MonoRail所无法达到的,因为很多企业巨头们已经着了微软的道,无论微软的技术是好是坏,他们都会去做,而且有许多顾问公司很坚决地工作在这个领域!”

查看英文原文:The Future of MonoRail in the Wake of MS MVC

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用正确的姿势发微信群通知?

人数众多的微信群里,你如何管理通知发放进度?想不想使用更高效的办法发通知?本文推荐给你一款小程序,帮助你轻松搞定微信群通知。

21610
来自专栏微信公众号:Java团长

以技术面试官的经验分享毕业生和初级程序员通过面试的技巧(Java后端方向)

本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的...

11810
来自专栏Python爬虫与算法进阶

爬虫学到什么程度可以去找工作

随便看看知乎上的教程就可以入门了,就Python而言,会requests当然是不够的,还需要了解scrapy和pyspider这两个框架,scrapy_redi...

25500
来自专栏纯洁的微笑

面试为什么需要了解JVM

随着互联网的发展,高并发高可用、快速响应成为软件的必须,而JVM与这些有着密切关联。之前JVM系列好多都是一些由于STW影响到快速响应问题,忽然网站慢一下(抖动...

10710
来自专栏企鹅号快讯

《design data-intensive application》阅读笔记之一

于2017年末得知了一本神书《design data-intensive application》,读完即可惜,如果早拿到这本书,就不会纠结于很多分布式系统和数...

22350
来自专栏一个会写诗的程序员的博客

20+个很棒的Android开源项目

20+个很棒的Android开源项目 本文摘自文章: 20+ Awesome Open-Source Android Apps To Boost Your D...

14120
来自专栏跨界架构师

如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    上一篇我们讲了DDD的核心概念(附上链接),并且设计了我们的上下文映射图,那么接下来就准备开始立项了,本篇文章的部分知识点可能对一部分人来说比较基础,可...

46810
来自专栏web前端教室

面试中,遇到一个请假系统的项目面试题,咋办?要求三天做完

今天下午,我正带着孩子逛街呢,咱们先行者群里的一个同学,他现在遇到这样一个问题, ? 咋办?详细的需求是这样的: ? 先来看看需求吧,第一部分是几个功能;第二部...

23350
来自专栏ThoughtWorks

ArchUnit,架构守护神 | 雷达哔哔哔

ArchUnit是一个基于 Java 的测试库,用于检查代码的结构特性,如包和类的依赖关系、注解验证,甚至还能检查代码分层是否一致。我们很喜欢 ArchUnit...

34120
来自专栏ThoughtWorks

流水线即代码|洞见

2016年11月份的技术雷达中给出了一个简明的定义:流水线即代码(Pipeline as Code)通过对持续集成/持续交付(CI/CD)运行工具进行编码而非配...

40450

扫码关注云+社区

领取腾讯云代金券