11

因此,我已经花了足够的时间使用 ASP.NET 网络表单,我知道我几乎宁愿回到使用经典 ASP 而不是使用它们。但在它变得更加成熟之前,我对转向 ASP.NET MVC 犹豫不决。有没有开源替代品?

我正在寻找的主要内容是易于学习并易于启动和运行原型的东西。如果有任何帮助,我的主要偏好是 python“混合和匹配”方法(比如 web.py/SQLAlchemy/任何适合我当时喜欢的模板引擎)。

4

5 回答 5

11

在过去的 18 个月里,我们在小型企业的在线商店中使用了MonoRail RC2。它取代了 7 年前的经典 ASP 页面灾难。MonoRail RC2 对我们来说效果很好,平均每天处理约 14,000 个页面请求。它使我能够非常快速地开发该网站,而且是免费的,并且运行良好。为此,我感谢 MonoRail 团队。

我刚刚使用了 MonoRail 位。我选择了 iBATIS.NET 而不是 ActiveRecord,因为我必须编写创造性的 SQL 来保持与 7 年历史的数据库的兼容性。所以我不能代表其他一些城堡图书馆。

MonoRail 的一些优点包括:

  • 进入那里并进行修改非常容易。例如,默认路由实现在重新路由时不保留查询字符串(出于 SEO 原因,我需要它来保持与现已解散的经典 ASP 站点使用的旧 URL 格式的向后兼容性)并且它不支持发出 HTTP 301该方案的永久重定向标头。所以我实现了任何 MonoRail 接口,将它插入我的配置文件,然后我就走了。
  • 它仍然是 ASP.NET,因此您仍然可以使用 Forms Authentication、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(这对于 Intranet 站点非常有用,但在您需要时就不那么好了在我看来,对面向公众的网站上的 HTML 输出进行细粒度控制)。(好吧,真正的原因是我只是鄙视 WebForms 回发模型。) ASP.NET MVC 在那个时候甚至在微软眼中都没有。

然而,既然 ASP.NET MVC 确实存在,并且鉴于 Microsoft 将其定位为 WebForms 的替代品,我知道我个人将强烈考虑将其用于任何未来的项目。MonoRail 是一个很棒的项目,它为我们提供了很好的服务,我很感谢开源社区的贡献,但我很喜欢它作为一个被大量使用、磨损的工具,它被淘汰到我工作台的较低抽屉里。没有它,今天的 ASP.NET MVC 可能就不存在了。

于 2008-11-19T05:38:57.717 回答
6

我个人尝试过 CastleProject 的 ASP.NET MVC 和 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 的关注,我怀疑它会很快消失。实际上,

于 2008-11-19T05:30:54.333 回答
1

我没有经验的另一种选择是ProMesh。就个人而言,我转向 ASP.NET MVC。

于 2008-11-19T04:08:00.023 回答
0

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

于 2008-11-19T03:39:19.910 回答
0

ASP.NET MVC 应该开始变得越来越被接受,因为它正在快速成熟。现在它是测试版,并且据说功能几乎已完成,人们采用它的速度将继续增长,而且可能会更快。随着 RTM/RTW 版本承诺在不久的将来发布,现在是开始采用它的最佳时机,这样您就可以开始使用它了。

如果您在 ASP.NET MVC 中看到了特定的缺点,您绝对应该让 Microsoft 知道它。 Scott Guthrie非常乐于接受反馈,并且MVC Contrib项目既愿意接受建议,又通过他们的库提供了大量的增强功能。

于 2008-11-29T17:46:05.643 回答