所以,我花了足够的时间使用ASP.NET webforms来了解我几乎要回到做经典的ASP而不是使用它们.但是我很犹豫要转向ASP.NET MVC,直到它变得更加成熟.有没有开源替代品?
我正在寻找的主要内容是易于学习和使用原型的原型.如果它有任何帮助,我的主要偏好是python"混合搭配"方法(比如说web.py/SQLAlchemy/whatever模板引擎适合我当时的喜好).
在过去的18个月里,我们使用MonoRail RC2为我们的小型企业的在线商店.它取代了7年历史的经典ASP页面灾难.MonoRail RC2对我们来说效果很好,每天平均提供约14,000页的请求.它使我能够非常快速地开发网站,免费并且保持良好状态.为此,我感谢MonoRail团队.
我刚刚使用了MonoRail位.我在ActiveRecord上选择了iBATIS.NET,因为我必须编写创意SQL以保持与7年前数据库的兼容性.所以我不能代表其他一些城堡图书馆.
MonoRail的一些优点包括:
很容易进入并修改内容.例如,默认路由实现在重新路由时没有保留查询字符串(我需要这个以保持向后兼容现在已经不存在的经典ASP站点使用的旧URL格式出于SEO原因)并且它不支持发出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项目的发布性质,很难升级),我们设法解决了这个问题.但这是一个非常令人不安和意想不到的问题,在微软框架上不太可能遇到这个问题.买者自负.
MonoRail在2007年6月为我们提供了一个绝佳的机会,为我们提供了一种方法,可以将Microsoft堆栈上的现有站点迁移到.NET平台,从而避免使用WebForms(这对于Intranet站点非常有用,但在需要时却不是很好)在我看来,在面向公众的网站上对HTML输出进行了细粒度的控制.(好吧,真正的原因是我只是鄙视WebForms回发模型.)在那个时候,ASP.NET MVC甚至都不是微软眼中的闪光点.
既然ASP.NET MVC确实存在,并且鉴于微软将其定位为WebForms的替代品,我知道我个人会强烈考虑将来的任何项目.MonoRail是一个伟大的项目,它很好地为我们服务,我很感谢开源社区,但我很喜欢它作为一个使用频繁,磨损的工具,退回到我工作台的较低抽屉.没有它,ASP.NET MVC今天可能不存在.
我亲自尝试过CastleProject的ASP.NET MVC和MonoRail.虽然我真的很喜欢其他CastleProject库,但我发现我比CastleProject MonoRail模型更喜欢ASP.NET MVC实现模型.既然ASP.NET MVC已经发布了将jQuery包含在发行版中,我真的很兴奋.最终,我认为这取决于您使用的其他库.如果您使用NHibernate,ActiveRecord和Castle Windsor,那么您可能会喜欢MonoRail库.如果您不使用任何这些库,或者更喜欢Microsoft Enterprise Libraries(目前是我工作的公司标准),那么您可能会发现ASP.NET MVC更符合您的需求.关注来自Scott Guthrie本人的ASP.NET MVC,我怀疑它会很快消失.事实上,