Friday, June 15, 2012

Grails 2.0 vs ASP.NET MVC 4 (Conclusion)


Background
This is the conclusion to two previous posts that considered the pros and cons of using Grails 2.0 vs ASP.NET MVC 4 for open source projects.  I have used both technologies for a few years apiece.  However, their latest incarnations have offered benefits over their respective predecessors.  Therefore, it was due time for me to reevaluate.


If you read my last post on this topic, ScrumTime - Grails 2.0 vs ASP.NET MVC 4, you saw that I came up with seven questions to use for the comparison.  I answered each question to the best of my ability at the time.  Since that post, I have researched both frameworks with two different open source projects: ScrumTime and BumbleBee.


ScrumTime source code on GitHub:
BumbleBee source code on GitHub:
If you are bored and actually want to view the source of all four projects, you will notice that the project with the most active work is the BumbleBee Grails 2 implementation.


What is BumbleBee?
BumbleBee allows project managers to track the progress of large software integration projects.  It provides a single view of Mantis bugs, test scripts, unit tests, design documents, and third party vendor issues.  The default security is currently single-sign on with active directory.  The SSO with AD is a post all its own since it is implemented in a java web stack.


What happened to ScrumTime?
I have only put ScrumTime to the side for the moment because I have a business "need" for the BumbleBee application immediately.  It seemed like an excellent candidate to finish my evaluation of Grails vs MVC.


What is the final web-stack decision and why?










I decided to complete the BumbleBee project in Grails 2.0 because of many factors:

  • velocity of implementation is quicker for me due to less source code and the following
    • repository finders are dynamically generated automatically (MVC does not have this)
    • pre-request, post-request, and post-view filters are much simpler to implement than MVC.
    • the default in-memory database supports live changes to the domain models without a server restart (MVC does not have this)
    • nearly all aspects of the web application can be changed without requiring a server restart (MVC has limited support for this)
  • the end result is a war file that will run on any hardware that can run jdk 6+ (MVC can only run on windows based computers (Mono would require significant EF changes)
  • more database vendor options after the product is developed
    • Because Grails is based on Gorm which is built on Hibernate, changing the back-end database vendor after the entire application is complete does not pose a challenge.  This can be done by changing the properties in the DataSource.groovy file.  However, the story with MVC is pretty bad.  The only options in MVC are to use nHibernate or create your own ORM from scratch.  Even in these cases, there is no automatic integration between the model objects of the MVC application based on nHibernate as there is with model objects based on the Entity Framework.  I can only guess that Microsoft prefers to make it easy for developers to connect to their own databases and not so easy to connect to other vendor databases.
These factors were too important to the success of an open source project for me to ignore.  

I hope to complete the first release of BumbleBee within the next few weeks.

5 comments:

  1. I really enjoyed this series. I'm going through a similar thought process at the moment.

    I prefer Linux servers over Windows servers, but I haven't worked in Java since about '05 when I switched to .Net. Naturally the landscape has changed since then, and I'm trying to get my head around the newer frameworks.

    I like MVC 4, but like you I need a project that I can implement with multiple stacks to see how I like the other stacks. I don't want to stick with it just because it is what I am most familiar with.

    Based on the research I've done so far it looks like Grails, Spring MVC and straight up JEE are the leading contenders on the Java side.

    The argument for JEE (hard to leave the 2 out, but I'm learning) is that the newest version packs a fair number of goodies into the app server (like dependency injection, etc.) so that you can trim down the WAR files you are deploying.

    Spring MVC is harder to get a bead on since the opinion seems to be shifting on it. I'm getting the sense that it is somewhat more widespread than Grails, but that it has lost some momentum amongst developers.

    If you want to read my blog post called "Developer Spin Cycle" it is at http://ammonsonline.com/2012/09/developer-spin-cycle/

    I'd love to hear your thoughts on JEE and Spring MVC.

    I also read your about page and it appears we have similar backgrounds except you went the App State/Charlotte route and I went WCU/Atlanta. :-)

    ReplyDelete
  2. I have not had a chance to look into the DI of JEE. I agree that Spring MVC may be in the midst of an opinion shift. I wonder if it has to do with the perception of the backing company of Spring vs the backing company of JEE? (i.e. SpringSource/VMWare vs Oracle)

    If you peel away the Groovy and the conventions of Grails, you are left with Spring MVC. Since I am a fan of Grails, it would stand to reason that I am a fan of Spring MVC as well. But, I really am curious to look at the latest JEE. I am not certain I have time for a direct comparison between JEE and other java stacks just now...I wish I did! It would be very interesting.

    It is great that you went to WCU and then to Atlanta. Did you work at IBM in Atlanta? That was my first employer in Charlotte.

    I look forward to reading your blog this evening. Thank you for reading my blog and posting your thoughts.

    ReplyDelete
  3. I have used JEE extensively and Grails to some extent and i think I can say this. Its nice to work with standards. CDI in JEE 6 just works and it far less verbose and cleaner than spring counterpart.

    I foresee a version of grails maybe Grails 3 or 4 being rewritten to use the standard JEE Apis. I love grails because it helps me take care of the XML hell in spring, But then CDI Is a much better option

    ReplyDelete
  4. Hi Ernie,
    What do you think of Grails 3 vs ASP.net Core?

    ReplyDelete
  5. Hi Ernie,
    What do you think of Grails 3 vs ASP.net Core?

    ReplyDelete