I have recently been learning Scala in my personal time. At work, I have been learning C#/.NET (4.0). I am not deeply familiar enough with either to be able to more than minimally evaluate either Lift or ASP-MVC 3. I'm at a crossroads. And given my very limited time, I must choose between one or the other to learn and build an application over the next 3-6 months.
I came across this Lift article today and I immediately was intrigued. I have attempted most of the things outlined in the article causing me endless hours of frustration and headaches. And some of which I eventually gave up and implemented crude unsafe simple versions just to get the projects completed. So, this article made Scala/Lift very attractive.
And then at lunch, my team member (and friend) were discussing his working on ASP-MVC 3 using C# on .NET 4.0. And it sounds like it would be very enjoyable to learn and use. And he spoke of enough things that seemed to overlap the Lift article I had read about in the morning.
My question is this: Given my limited time, what are the advantages and/or disadvantages of choosing Scala/Lift over C#/ASP-MVC 3? And what kind of advantages does C#/ASP-MVC 3 have over Scala/Lift?
To reduce complexity in my evaluation: Please assume the current latest version of each of these technologies; Scala 2.8.1 (2010/Dec), Lift 2.2 (2011/Jan), C#/.NET 4.0 (2010/Apr) and ASP-MVC 3 (2011/Jan).
Thank you for helping me at this critical architecture decision point.
UPDATE 2011/Mar/19 12:25 CDT:
I have since stumbled upon to a couple of resources that seem to be very helpful on the Scala/Lift side:
1. Free ebook (PDF and HTML) titled "Exploring Lift (Scala based web-framework)"
2. Wiki article by Lift's creator titled "View First"
The first chapter of the ebook has been very helpful. I am really liking how focused the Lift design principles and implementation are on "separation of concerns" (keeping code out of the display snippets) and on "convention over configuration".
And from what I have seen so far, while ASP-MVC 3 uses the same "strong guidelines", it still depends upon a layer where code and presentation are "hybridized". It's where neither the site designers nor the software engineers dare tread AFTER origination. IOW, after origination, there be maintenance dragons. I would love for someone to tell me I am wrong here.
Scala / Lift pros:
C# / ASP pros:
For me Scala / Lift is more effective solution, but I'm more familiar with java/jvm and not tied with .NET
I was just reading wikipedia and c# seems to cover most things scala is providing.
From wikipedia... Scala also provides a unified type system (as in C#, but unlike in Java), where all types, including primitive types like integers and booleans, are objects that are subclasses of the type Any. Scala likewise contains a number of other features (or non-features) present in C# but not Java, including operator overloading, optional parameters, named parameters, raw strings (which may be multi-line in Scala), and no checked exceptions.
There is only a few extra things scala provides and since you have experience with .net I would just stick with c#
Scala pro:
C# pro:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With