Hanselminutes Podcast 55 - MonoRail as Alternative ASP.NET
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)
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.
- Some other clients are Doppler (also suppose Windows CE), FireAnt, Nimiq, and PrimeTime Podcast.
- 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 http://www.hanselminutes.com.
- 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.
About Newsletter
This computer i am listening on is brand new - so i'll check it out.
Indeed, the podcasts are well mastered as you claimed.
Thanks.
+ An experienced ASP.Net developer up to speed on MonoRail
+ A junior developer up to speed on MonoRail
http://codebetter.com/blogs/jeffrey.palermo/archive/2007/03/16/Big-News-_2D00_-MVC-framework-for-ASP.NET-in-the-works-_2D00_-level-300.aspx
@All
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.
@Bill
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.
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. :)
Again, your podcasts are overwhelmingly quite good, I just want to offer some (hopefully) constructive criticism on this one.
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?
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 asp.net 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 asp.net? 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!
lb
> 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 asp.net? 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!
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 asp.net skills and
monorail skills.
I always surprise how we the developers can get away with it.
That is the saddest thing I've ever heard.
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 asp.net developers can't handle monorail, and it bugs me that the asp.net 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.