ASP.NET MVC的替代方案是什么?

11

那么,我花了足够的时间使用ASP.NET webforms,以至于我宁愿回到经典的ASP也不想使用它们。但我还不敢转向ASP.NET MVC,直到它变得更加成熟。有没有任何开源的替代方案?

我主要寻找的是易于学习和快速创建原型的东西。如果有帮助的话,我主要偏好一种Python的“混搭”方法(例如web.py / SQLAlchemy / 任何适合我当时需要的模板引擎)。


出于好奇,你选择了ASP.NET MVC吗? - Beep beep
5个回答

11
我们的小企业在线商店过去18个月来一直使用MonoRail RC2。它替换了7年前的经典ASP页面灾难。MonoRail RC2对我们非常有效,每天平均服务于约14,000个页面请求。它使我能够快速开发网站,而且还是免费的,性能表现也很好。因此,我非常感谢MonoRail团队。
我只使用了MonoRail部分。由于我必须编写创意SQL以保持与一个7年老旧数据库的兼容性,所以我选择了iBATIS.NET而不是ActiveRecord。因此,我无法评论其他Castle库。
MonoRail的一些优点包括以下内容:
  • 很容易进入并修改内容。例如,默认路由实现在重新定向时没有保留查询字符串(出于SEO原因,我需要保留旧的URL格式,以保持与已停用的经典ASP网站的向后兼容性),也不支持为此场景发出HTTP 301永久重定向标头。因此,我实现了MonoRail接口,将其插入到配置文件中,然后就可以开始工作了。
  • 它仍然是ASP.NET,因此您仍然可以使用表单验证、完全令人惊叹的Codeproject上的HTTP/HTTPS切换器和缓存。
  • 相对较少的意外情况。在使用它超过一年后,我没有太多天数会咒骂MonoRail。这是一个相当好的试金石。一些帮助类(FormHelper)可能会表现得有些奇怪,向导框架非常奇怪,参数绑定有时可能会让您感到困惑,但这种情况并不经常发生。
  • 视图引擎(模板)的选择。我把这个放在这里,因为大多数人似乎认为这里的选择是一件好事,尽管我通常认为这不是好事。

然而,MonoRail也存在问题:

缺乏开发方向。RC2和RC3之间的更改数量超出了荒谬的范围;许多受保护的虚拟方法消失了,许多辅助程序发生了变化(当您的视图引擎不是静态类型时,这是一个大问题),甚至控制器和视图的单元测试机制也发生了变化。因此,我们可能会永远停留在RC2上。现在ASP.NET MVC已经发布,MonoRail背后的社区将保持健康还不清楚(尽管ayende和hammett像以往一样热情活跃)。
NVelocity是MonoRail的“事实上”的视图引擎(至少在我们开始开发时是如此),它是一种有前途的模板语言,但实现和维护前景不容乐观。(它是否有效?够用了。但由于是从Java版本移植过来的CTRL+C CTRL+V端口,请不要阅读该库的源代码,否则你的眼睛会流血。)
NVelocity和RC2都带有一个极其严重的线程错误,多个用户同时访问网站可能会被提供给其他用户的页面。它在最新版本中得到了修复(由于Castle项目的发布性质,升级非常困难),我们设法解决了它。但这是一个非常令人不安和意外的问题,很可能不会在Microsoft框架上遇到。买家自负。
MonoRail为我们提供了一个绝佳的机会。在2007年6月,我们成功地将一个现有的站点从Microsoft平台迁移到.NET平台,避免了WebForms(在我的看法中,对于内部网站来说非常好用,但在公共网站上需要对HTML输出进行精细控制时就不是那么好用了)。当时,ASP.NET MVC甚至还没有出现在微软的视野中。(好吧,真正的原因是我厌恶WebForms的后台提交模型。)
然而,现在ASP.NET MVC已经存在,并且考虑到微软将其定位为WebForms的替代品,我个人会在未来的项目中强烈考虑使用它。MonoRail是一个伟大的项目,对我们非常有帮助,我感激开源社区的贡献,但我把它视为一个被广泛使用、磨损的工具,现在被退役到我的工作台下面的一个抽屉里。没有它,可能今天就没有ASP.NET MVC。

6

个人来说,我曾尝试过ASP.NET MVC和CastleProject的MonoRail。虽然我非常喜欢其他的CastleProject库,但我发现我更喜欢ASP.NET MVC的实现模型而不是CastleProject MonoRail模型。现在,由于ASP.NET MVC发布了他们将在发布中包含jQuery,我真的很兴奋。最终,我认为这取决于您使用的其他库。如果您使用NHibernate、ActiveRecord和Castle Windsor,则可能会喜欢MonoRail库。如果您不使用这些库,或者更喜欢Microsoft Enterprise Libraries(目前是我工作的公司标准),那么您可能会发现ASP.NET MVC更适合您的需求。随着Scott Guthrie本人对ASP.NET MVC的关注,我怀疑它不会很快消失。事实上,越多的人使用它并赞扬它,它成为事实上的标准的可能性就越大。


1

另一种选择是ProMesh,但我没有使用过。个人而言,我更倾向于使用ASP.NET MVC。


0
一个看起来很有趣的替代方案是MonoRail,尽管我还没有完全测试过它。

0

ASP.NET MVC应该开始变得更加成熟和快速。现在它已经是beta版本,而且据说几乎功能齐全,人们采用它的速度将继续增长,可能会更加迅速。随着RTM/RTW版本承诺在不久的将来发布,现在是最好的时机开始采用它,以便您可以立即上手。

如果您在ASP.NET MVC中看到特定的缺点,您应该向Microsoft反馈。Scott Guthrie非常乐于接受反馈,MVC Contrib项目既开放建议,也有一个伟大的增强库可供使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接