为什么.NET世界没有Rails / grails / django / roo之类的东西?[关闭]


10

在我看来,快速发展的Web平台将彻底改变Web应用程序的世界。

自从Rails 1.0为Ruby发行以来已经五年了,自那时以来,我们已经看到Grails代表Groovy,Django代表Python和Roo代表Java。

但是据我所知(可能是有限的,作为Java / Groovy程序员),没有类似的C#框架。

这样的事情存在吗?如果没有,为什么不呢?

编辑: 当我说“快速开发”时,很可能我没有使用正确的词,但是我所谈论的框架可能可以让您在30分钟内构建一个工作的博客引擎。考虑到要找到控制器所需的各种配置,以及持久化和检索实体所需的配置和代码,您不能用Java,Spring和Hibernate合理地做到这一点。

因此,我正在谈论一种以约定优先于配置的思想处理所有CRUD的框架。如果有人对我所说的话有正确的词,请告诉我。

Answers:


5

在我看来,在这个线程中大家都在谈论这种框架的名字。我现在称它们为类似RAILS的框架:这些框架通过协调其他现有框架来提高生产力,以解决大多数Web应用程序的基本需求,但同时又对开发人员隐藏了所有复杂性。

基本需求是指实现持久性提供程序,依赖检查容器,日志记录工具,MVC平台,HTML模板引擎,带有CSS预设的网站模板入门工具包,安全框架以及一些用于AJAX功能的Javascript库和其他很酷的东西。类似RAILS的框架在域模型(系统实体及其属性)的基础上协调所有这些框架和工具。

多亏了Convention-over-Configuration原则,这些框架无需定义许多通常由其协调的框架(例如Spring,Spring MVC,Hibernate,Log4J等)所需的配置文件,假设默认情况下基于命名进行配置,包含在相同类定义中的结构和元数据。

由于这些框架使用了动态语言(例如Ruby,Groovy,Python,Clojure等),除了SpringRoo通过使用AspectJ在Java中实现动态行为之外,属于该框架的功能得以扩展和扩展。开发人员以统一且优雅的方式使用开发人员,以使他/她仅了解底层技术。

最后,由于使用了Scaffold技术,因此可以在开发人员定义的每个域对象上自动为主要功能(CRUD)生成单元测试,集成测试,控制器和视图。

在.NET世界中,按照之前的所有定义,尚未开发出任何东西。但是没有什么可以阻止这种情况很快发生。.NET世界中已经有许多出色的框架,工具和库,可以通过为CLR制作的类似于RAILS的新框架进行编排。有Unity,Spring.NET和Castle Windsor等用于依赖检查的需求。实体框架4,NHibernate和iBatis.NET都是非常好的.NET持久性提供程序。除了传统的ASP.NET,ASP.NET MVC强烈支持各种模板引擎。

即使没有人能够使用DLR语言构建这种框架,任何有足够能力的人都可以遵循SpringSource路径,并使用某种静态语言(例如F#,C#或VB.NET)来实现类似RAILS的框架,并使用Aspect面向容器(如AspectSharp或Gripper-LOOM.NET)以获取动态行为。

我很想知道任何人尝试在.NET中开发此类框架。


4

我不知道您所说的“快速开发网络平台”是什么意思。我熟悉的“快速开发”的定义与语言,范例或框架无关,而是使用快速原型制作和迭代开发来生成系统。任何语言或框架都可以同样好地使用。

我以前从未使用过Grails或Roo,但是Django和Rails都是MVC框架,因此它们在.NET中的对应对象是ASP.NET MVC


1
好吧,我将ASP.NET MVC视为Spring MVC的对应版本。可以说Rails是MVC框架,就像说Stackoverflow是QA网站一样,例如experts-exchange。这是一个真实的声明,但它错过了最重要的功能及其成功的原因。
埃里克·威尔逊

1
请说明“最重要的功能”。Rails就是Ruby语言的MVC框架。这捕获了有关它的一切。
Thomas Owens

2
好的,Spring是Java的MVC框架,但是它并没有做很多使Rails和Grails出色的事情。例如,使用grails,在创建域对象之后,我可以键入grails generate-all并通过grails生成控制器,视图,并管理持久性。
埃里克·威尔逊

3

您可以进入Visual Studio,然后将控件拖放到网页上,然后用很少甚至没有代码将它们连接到数据库。一键测试/查看。一键上传到网站(确定,输入凭据)。

并不是说这是最常用或什至推荐的方法,但实际上并没有比这容易得多。


0

因为.NET Web应用程序具有构建周期。

Ruby / Python恰好是非常敏捷/灵活的动态语言。

在我工作的地方,我们有一个庞大的.NET Web应用程序,其编译时间可与典型的中大型C ++程序相比。

我的业余爱好是使用python开发Web应用程序,并且编译时间为0。根本没有编译步骤。正在运行的解释器将在保存它们时重新加载.py文件。


1
好的,Java应用程序有一个构建周期,但是Spring Roo对于Java / Spring应用程序仍然起作用。因此,我认为这里还有其他问题。
埃里克·威尔逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.