问候,大家。我认为自己是一名中级开发人员,但坦率地说,可能比专家更接近新手。无论如何,我对C#和.NET平台有更多的经验,但我目前的工作是让我几乎完全使用Java。这本身就是一个问题,但我处理的很好,而且我现在还不能改变我的角色。
另一方面,我开始研究一个高度互动,数据库驱动的Web项目。我这样做是因为我觉得这是一个好主意,而且我知道从头开始做这样的事情的经验对我来说非常有帮助。
我最初想要使用ASP.NET MVC,我仍然倾向于这个方向。我甚至不确定为什么,但我喜欢它背后的社区,在我看来,Visual Studio是最好的IDE。但是,这样做对我目前的工作会适得其反。这让我想到了Grails。尽管我意识到Groovy不是Java,但它似乎足够相似(更不用说它在JVM上运行),我学到的技能仍然可以帮助我完成目前的工作。我对Grails的了解越多,我就越喜欢它,尤其是在我不得不处理我认为工作中极其复杂的J2EE环境之后。
但是好的我发现了坏事。我不禁注意到有很多开发人员对Grails中的错误数量感到恼火。因为我正在开始一个新项目并且我相当缺乏经验,我是否还想考虑Grails?这是一种责任吗?关于其寿命的共识是什么?如果在接下来的几年中它很有可能逐渐消失,我真的很想参与其中。即使错误和长寿问题不是很大,你如何比较Grails的开发和ASP.NET MVC的易用性?我意识到这最后一部分是非常主观的。但是为了比较,让我们说几乎没有技术背景的人处于相同的位置。你会建议他们看一下ASP.NET MVC或Grails吗?
非常感谢。如果有任何需要澄清或改写,请告诉我。我真诚地希望我不会打开一堆虫子......
答案 0 :(得分:14)
我是question的作者,我可以根据自己的经验给你一些分享。
正如问题所述,我没有真正的偏好,我对任何能够满足我要求的技术/平台开放。经过不同技术的尝试(使用PHP,Rails,ASP和Grails几天)和StackOverflow的一些答案,我最终遇到了与你相同的困境:Grails还是ASP.NET MVC?
我选择了Grails。为什么?因为GORM。几乎只是因为GORM。这非常适合处理您的域类并自动生成/更新您的数据库架构。当然,它有其局限性,但这对查询和维护数据库非常有用。你不再编写SQL了,这很容易学习。
现在这是我对2种技术的2美分比较:
GRAILS STRENGTHS
GORM(见上文)
完整的Web Stack Framework:您可以在几分钟内生成一个网站,并且所有内容都已配置
需要学习的东西:你有Spring MVC,Hibernate,Sitemesh,Java,JEE,Groovy ......一旦你掌握了Grails,你可以在简历中添加一个额外的页面
Java世界。无论您需要什么,如果它已经存在于Java中,您就可以使用它。
Groovy:我真的很喜欢这种编程语言。熟悉它需要时间,但一旦完成,你一定会喜欢它。
GRAILS弱点
内存使用情况。 Grails / groovy对于内存来说是贪婪的,它可能比ASP托管的ASP花费更多
Grails错误:有一些当你开始一项关于新技术的新项目时,你会认为大多数问题都来自你......直到你发现(1或2天后)它是Grails的错误。所以我的建议是按步骤进行:尽快测试,不要试图扭曲框架。边缘粗糙,所以请遵循通常建议的方法。但是,2个月后,我不再遇到大问题了。
调试:由于多层框架,错误通常隐藏在大量的异常行中。另外,唯一不错的IDE调试器是IntelliJ,但这并不像VS下的.NET那样容易调试
ASP.NET MVC优势
社区:这是巨大的!首先它得到了Microsoft的支持,其次30%的网站都是用ASP.NET构建的。你可以找到任何代码片段,任何小部件,任何AJAX组件,任何CMS ...... Grails社区非常活跃,但你可以与数百万人竞争吗?
Visual Studio:我绝对同意你的观点:没有更好的IDE。 IntelliJ非常适合Grails但是同时使用它们,我更喜欢VS
ASP.NET MVC弱点
ASP.NET的青春:这是一个年轻的框架。基于稳定的技术,但足够年轻(不到2年)也有一些错误/一些不良做法。实际上,社区强烈期待下一版本的ASP.NET MVC。
Microsoft:即使ASP.NET MVC是开源的,您完全依赖于他们的决策(和价格)。
底线 如果你的项目有最后期限,如果你成功的关键,那么去ASP(根据你的背景)。否则,试试Grails ..别担心,你也会成功,但需要更多时间。我也深信Grails刚刚开始漫长的旅程,它有一个美好的未来(见google trends)
Dmitriy更新:如果您参考Google趋势,则必须比较其中的两个Groovy Grails and ASP.NET MVC。
祝你好运答案 1 :(得分:1)