Scott Hanselman

Hanselminutes Podcast 55 - MonoRail as Alternative ASP.NET

March 16, 2007 Comment on this post [22] Posted in ASP.NET | Podcast
Sponsored By

My fifty-fifth podcast is up. In this episode I sit down with two developers, Aaron Jensen and Jacob Lewallen from Eleutian, who are using the MonoRail framework for their current (very large) project.

Check out their blog post called "The way we write programs," over at the Eleutian Blogs.

Mono is a clean MVC Front Controller-based framework for ASP.NET that promises to increase separation of concerns and offers a fresh (at least for .NET developers) perspective on developing .NET for the Web. Enjoy.

ACTION: Please vote for us on Podcast Alley! Digg us at Digg Podcasts!

Links from the Show

Monorail and the Castle Project (mt8)
Inversion of Control Containers and the Dependency Injection pattern (mt9)

Subscribe: Feed-icon-16x16 Subscribe to my Podcast in iTunes

Do also remember the archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Our sponsors are Telerik and /n software.

Telerik is a new sponsor. Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate about Telerik is their commitment to completeness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

  • The basic MP3 feed is here, and the iPod friendly one is here. There's a number of other ways you can get it (streaming, straight download, etc) that are all up on the site just below the fold. I use iTunes, myself, to listen to most podcasts, but I also use FeedDemon and it's built in support.
  • Note that for now, because of bandwidth constraints, the feeds always have just the current show. If you want to get an old show (and because many Podcasting Clients aren't smart enough to not download the file more than once) you can always find them at
  • I have, and will, also include the enclosures to this feed you're reading, so if you're already subscribed to ComputerZen and you're not interested in cluttering your life with another feed, you have the choice to get the 'cast as well.
  • If there's a topic you'd like to hear, perhaps one that is better spoken than presented on a blog, or a great tool you can't live without, contact me and I'll get it in the queue!

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
March 16, 2007 22:54
The quality of audio is *horrible* - the audio comes in at normal level, then voice comes in good 10db below the audio and stays there. With all the audio cranked all the way up - i struggle to hear the interview.
March 16, 2007 22:56
With all due respect, could you recheck your audio setup? I've confirmed on a machine here that the audio is very audible. A great deal of post-production work was done, and this show isn't any different from any other.
March 16, 2007 23:00
Hmm, i went back to listen to the previous podcast (i never listened to them before, though i read your blog all the time - i just don't absorb audio information very well) - and i have the same results. The into beat is normal level, then i can *barely* hear something about "Hanselminutes show", can't even really make it out. Then the interview - but this time (episode 54, continuous integration) the interview is pretty audible.

This computer i am listening on is brand new - so i'll check it out.
March 16, 2007 23:02
By stating that computer is brand new - i meant to say that it's not a familiar setup - so it's possible that something is strange going on here.
March 16, 2007 23:13
Heh, i am sorry i reported the issue prematurely. Surely enough it was an error on my end - the speaker jack was seated half-way in resulting in audio outputed as a mono sum of a single channel.

Indeed, the podcasts are well mastered as you claimed.

March 16, 2007 23:16
Scott, there is something odd about your blog. I use SharpReader to aggregate, and have no problems with any blog but yours, and the problem is decidedly odd. What happens several times a day is that suddenly the blog will show up in boldface, as if there was something new, but looking at the entry listing shows that most of the most recent posts have simply been updated. Of course sometimes there's a new blog post, but most of the time there's just updates. And I cannot determine the nature of the updates -- they look like no actual content has been added or changed (but this is hard to tell). So I never actually know if ComputerZen has a new entry or not until I look. Bummer.

March 16, 2007 23:17
works, well here at the State of Oregon on my computer at lunch time and I've never listened ever to a pod cast(until now). Never adjusted anything. Kinda cringed when it popped up Windows Media Player and not iTunes. Got lost on the content right about where "controllers" were mentioned. Probably me.
March 16, 2007 23:24
I think the million dollar question for managers is how much time does it take to bring:
+ An experienced ASP.Net developer up to speed on MonoRail
+ A junior developer up to speed on MonoRail
March 16, 2007 23:43
Hey Scott, did you see this news about MVC comming in ASP.Net?
March 17, 2007 0:27
Mike - That's a bug in SharpReader that causes it to mark the feed read when comments are added.
March 17, 2007 13:11
This is going to be long, so bear with me.
I think the eleutian guys (though are great people and did great things) are not the guys who should have presented MonoRail, since they are users, and use their flavour. Should've tried to find a mebmer of castle project's PMC, or any other guy who is a contributor for MonoRail project.
My reason to MR - in short: I liked the RoR approach, but wasn't willing to ditch .NET and the ASP.NET framework, and I was using Castle's ActiveRecord anyway, so MR was a natural choice.
I use MR in my day-to-day work. I am doing community based sites in a startup, and they rely heavily on client-side javascript, needs to be as lightweight as possible, XHTML-ed and cross-browser, and I just hate to code the obvious (in ASP.NET - take txtName.Text, hidId.Text, txtDate.Text - now parse everything, create an object, fill it's properties. in MR - just bind the Form or QueryString and you get the object).
oh - and you forget about the wacky OnRowDataBind methods, where you should parse ((TextBox)((TableCell)Row.Cells[3]).FindControl("txtFoo")).Text
Another point - MR is VERY pluggable. You can for example, very easily implement your own ViewEngine (a thing that takes a template + controller properties and renders html output). MR comes with a NVelocity based viewEngine, and a Boo Language based ViewEngine (called Brail). Both are currently using a model in with the templates themselves reside at the published site. I wanted to use c# in the templates, and to use a pre-compiled model, so I've just implemented a ViewEngine for that(Called AspView). It was very strait-forward and easy, and it's in the Castle's Contrib project, hopefully that some-day will be a first class citizen of MR.
Actually, a junior developer can grab the idea real fast. An experienced WebForms developer would have difficult understanding that a url maps to a method in the controller rather than to an actual file, but once that's understood, the rest is Piece Of Cake.
And, I'll answer with that, too. It is A-LOT easier to take a good web developers (from python, php, j2ee, and especially RoR) and move them to MR. A lot faster than moving them to WebForms.
Yes, it is very easy to make demo pages in WebForms, but real apps are not SqlDataSource/Naive DataGrid scenarios. Real apps require that the developer know how to use MVC or an other pattern, which any company uses a different flavour so there is a learning curve anyway.
I a hiring 3 new people for my team. They'll use MR, which I'll teach them, and I'll see how long will it take them to be productive.
March 17, 2007 22:17
I think the time it takes an ASP.NET developer to transition to MonoRail largely depends on how ingrained the declarative nature of ASP.NET is their thinking. It will be a little strange doing so little actual WORK in the markup. There are no data sources or heavy server controls that get glued together with attributes and events. You spend more time building up your controller and the service layer.

As far as a Junior developer, I think the time it takes them to learn MonoRail is far less than ASP.NET. ASP.NET has tons of magic hand waving that to this day I'm sure many developers don't fully grasp. Just the page lifecycle is a nightmare. In MonoRail, all they need is a quick introduction on how Action's are invoked and form passing goes. From then on the learning curve is pretty reasonable I think. Not to mention, you can put them to work writing JUST the controller and have somebody else glue it together. It gives you that kind of flexibility.

I think Ken mentions some good, specific benefits as well. Pluggability being one we've really enjoyed. And as far as us not being considered "contributors", we'll try and do better. :)
March 18, 2007 8:30
Ken - Interesting points, but I chose a user to get their impression of how life with mr is, rather than a contributor who would have (implicitly, possibly unknowingly) wanted to "sell" the project they worked so hard on.
March 19, 2007 4:41
Scott, thanks for all your podcasts, I've learned a ton from them. I just want to say I found this one very hard to follow - I never got a grasp on what was going on. Only the last ten minutes or so did I get a mental picture of what the MonoRail guys were doing. Now, I'm not an ASP.NET developer, so maybe I had no business listening to this podcast, but that's never stopped me from learning from your podcasts before. I think it would have been okay for you to take more time on the mic to explain to the listeners what these guys were talking about.

Again, your podcasts are overwhelmingly quite good, I just want to offer some (hopefully) constructive criticism on this one.
March 19, 2007 9:45
Peter - Thanks for the feedback, and I totally agree. I should have kept the conversation more on track, more on point, and I'll watch for that in future shows.
March 20, 2007 8:02

Nice topic. I think it's huge when guys with your profile cover these alternative architectures. I think the .NEt community as a whole has a tendency to only look towards MS technology, good or bad. I really dig guys like Oren Eini ( Ayende Rahien , out there providing insight into using the best possible tools and architecture regardless of who makes it or endorses it.

Have you thought of or have you done a podcast on NHibernate?

March 21, 2007 1:48
solid interview, but if you take a step back and listen to the few minutes where you guys are talking about "foo" and "bar" it's actually hilarious. i was thinking if my wife walked into the office she would think I'm crazy. I give those guys credit...just reading through the documentation of monorail and trying to understand it is heavy as is...trying to explain it over the phone is nearly impossible. at one point in the interview though I was asking myself...why are these guys even using Just use ruby and ROR and move on.
March 22, 2007 3:24
i just listened to this one now (very late to the party).

great stuff, gives me a lot to think about -- which is all i ask of life, really.

i bet some people would've been really upset by this one though, just because to an in-grained person it must seem so confronting.

>few minutes where you guys are talking about "foo" and "bar" it's actually hilarious

yeh -- i wondered how they kept a straight face during all that, too!

it was good that someone tried to explain 'inversion of control' for once -- it's always used as if it's something that we were all born knowing. and i know that i for one wasn't born knowing much. i still don't understand 'inversion of control' in a practical sense, but at least the place in my brain where i think about 'inversion of control' is approximately the correct size and shape now.

>why are these guys even using Just use ruby and ROR and move on

y'know that's a really solid question from kevin right there. It was partially addressed at the end, though. And I can think of some answers -- but would love to know the answer that the guys would give to this one.

Top work! Really bringing new ideas to the forefront with this week's podcast. Expect criticism as a result, but accept it with pride!

March 23, 2007 20:18
Hey all, I just got back so I figured I'd chime in with responses to anything Jacob didn't cover.

> Have you thought of or have you done a podcast on NHibernate?

I second this, I think that'd certainly be an interesting show, especially with all the press the Entity Framework is getting at the moment.

> yeh -- i wondered how they kept a straight face during all that, too!

Heh, I've given that description a few times, so that's why I was able to say it w/ a straight face... I should probably think of more concrete class names so I don't sound like a comedian :)

>why are these guys even using Just use ruby and ROR and move on

This is something Jacob and I have been talking about a lot recently, and something we may post on in time. Part of the reason was certainly my (complete) lack of experience w/ RoR when we started our project. I think that experience aside, one of the biggest reasons for not wanting to use Ruby is no intellisense support in tools. Yeah, that makes me sound lazy, but honestly, not having intellisense is a huge step back in productivity and discoverability. We've got more than one developer here, and I certainly don't have all of my method names memorized, let alone all of our other developers'. Plus, at the end of the day, C#/.NET is great, fast, has good libraries and community support, and C# is improving as a language, so why not take it to the RoR ease of use/development level?

>I just want to say I found this one very hard to follow

Sorry, we did shift topics quite a bit and if I could do it over again I wouldn't even mention areas--my statement that the three most important things were areas, controllers and actions was just wrong, I should have said that the three most important things were controllers, actions and views and explained the relationship between them, then MAYBE mentioned that areas/coontrollers/actions were used when parsing the rails URL. So yeah, I feel like I could have done a better job explaining everything we talked about, but I hope at least that we got some more awareness out about these technologies.

Thanks for the feedback!

March 27, 2007 4:40
I just wanted to point out that when Scott asked the 2 guests: how do you sell monorail or a non standard thing to your boss ? They avoided to really answer the question.

What is the impact of bringing a non standard technology or language in a company.

Once people have left the company, the management must hire people with skills and
monorail skills.

I always surprise how we the developers can get away with it.
May 10, 2007 15:43
Since when do developers not develop good solutions because 'jr developers can't use it'

That is the saddest thing I've ever heard.
May 10, 2007 21:26
My last post wasn't very clear :) Let me try again.

Bill Pierce above says (and maybe I'm misunderstanding this post but...):

"I think the million dollar question for managers is how much time does it take to bring:
+ An experienced ASP.Net developer up to speed on MonoRail
+ A junior developer up to speed on MonoRail"

I think that is just not a good thing. I was a jr developer, and if the project is using a technology, then it's my job to try to learn it. It comes across to me as some sort of cop out.

I just hear over and over again how developers can't handle monorail, and it bugs me that the community would have that kind of attitude.

I think Monorail is a great thing and wish some MS developers would step out of their box, I don't like the 'if MS didn't make it, we can't use it' mentality.

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.