<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wagnerblog &#187; MVC</title>
	<atom:link href="http://wagnerblog.com/tag/mvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://wagnerblog.com</link>
	<description>Development Ideas and Ramblings</description>
	<lastBuildDate>Fri, 06 Nov 2009 19:11:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The problem with the ASP.NET MVC Revolution</title>
		<link>http://wagnerblog.com/2009/06/the-problem-with-the-aspnet-mvc-revolution/</link>
		<comments>http://wagnerblog.com/2009/06/the-problem-with-the-aspnet-mvc-revolution/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 21:58:36 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1010</guid>
		<description><![CDATA[Many years ago I lived in a Communist country. I grew up there.  All children growing up in this Communist country had to learn about various Revolutions in history. Most dominantly the October Revolution in Russia that overthrew the Czar and established a Communist government. So it can be said that I have some idea [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-1011" style="border: 1px solid black; margin: 5px;" title="blog-revolution" src="http://wagnerblog.com/wp-content/uploads/2009/06/blog-revolution-292x300.jpg" alt="blog-revolution" width="292" height="300" />Many years ago I lived in a Communist country. I grew up there.  All children growing up in this Communist country had to learn about various Revolutions in history. Most dominantly the October Revolution in Russia that overthrew the Czar and established a Communist government. So it can be said that I have some idea of what it takes to make a Revolution.</p>
<p>Having spent some time with ASP.NET MVC &#8211; the revolutionary &#8221; new &#8221; direction of ASP.NET software development I have a few observations:</p>
<p>ASP.NET MVC is more than just the code necessary to make MVC compliant apps in C#. Seriously. It is a lot more. Just as the .NET System.Web namespace put a wrapper around HTML so does ASP.NET MVC.  Its not as deeply permeated as the regular Webform system but there is still an awful lot more to this implementation than simply the code needed to run an MVC app.</p>
<p>Here is the deal &#8211; in order to have a plain and simple MVC you don&#8217;t need all the stuff provided by ASP.NET MVC.  Basically you need a bit of dependency injection (just a few lines), an Action Framework and Routing Structure. That&#8217;s it.</p>
<p>Of course ASP.NET MVC has all that &#8211; and I must say the Action Framework is done very nicely &#8211; but at the same time it also contains a fullfledged attempt to substitute an entirely new paradigm for the existing webform system. Consequently you have all sorts of wacky stuff going on like Views that look a look like tag soup , partial views that are similar to user controls, a magical way of passing data back and forth among the models, views and controllers and number of other features that are intended to make the system more testable.</p>
<p>I have spent several days so far building an internal test app on the ASP.NET MVC framework and I am here to tell you this is no walk in the park. Considering this is a released product, it strikes me as ironic that there are only a handful sample apps out there which contain any sort of complexity.  There are a handful open source apps out there which range from absolutely pedestrian to entirely new generations of MVC that dont much resemble the MS release version (on the surface anyways)</p>
<p>In addition there seems to be a lot of flux in what is accepted as a good design and architecture. Several of the more prominent samples (Kobe, Oxite, MVC Commerce) are being rewritten based on extensive criticism by the OSS community. This begs the question who is the OSS community and how is it these folks have so much criticism of these products. I really hope its more than the handful of &#8220;usual suspects&#8221; in the .NET community. You know&#8230; the guys that like to congregate around the Alt.Net water cooler.</p>
<p>Here is my issue. When I am learning a new tool Ilook for definitive examples of good design and usage of that tool. And I just don&#8217;t see enough of those examples. Having 6 month old sample apps criticized as being incorrect architecture and in need of updates only adds to the frustration levels.</p>
<p>Consider how many millions of ASP.NET programmers there are in the world &#8211; heck the Indian sub continent alone can probably account for a few mill &#8211; the dearth of good ASP.NET MVC reference material is alarming. One would think that there would be more excitement around this stuff.  Of course I don&#8217;t have the same visibility into acceptance rates as some of the MS Regional directors. Its quite a dilemma I think. For almost 10 years MS web technology has gone one way ( web forms) and now here comes this entirely different way of doing it.  Like I said before, I am still waiting to see how ASP.NET 4.0 deals with routing (it still uses web forms). In the meantime I will keep plugging away at MVC.</p>
<p>One thing is for sure, in order for this Revolution to take hold there will need to be a much greater acceptance by the .NET community and that in turn requires more than a handful of books  and a dozen sample apps. In the end I am not even sure that the greater developer community at large will switch to MVC as opposed to Silverlight. Yes MVC will always have its audience , but I am thinking along the lines of the thousands of corporate developers. These guys would have a hard time with yet another paradigm shift and the reward seems to be so much greater in the area of Silverlight apps for these fellows.</p>
<p>I sure hope that in time my posts about this framework will become more positive.  I suppose that once I get past the frustrations there is a lot to like there.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/06/the-problem-with-the-aspnet-mvc-revolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More ASP.NET MVC Puzzlement</title>
		<link>http://wagnerblog.com/2009/05/more-aspnet-mvc-puzzlement/</link>
		<comments>http://wagnerblog.com/2009/05/more-aspnet-mvc-puzzlement/#comments</comments>
		<pubDate>Sun, 31 May 2009 03:50:09 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET Code Related]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1004</guid>
		<description><![CDATA[I have been slogging my way through the MS MVC architecture. There are some good parts and some really hard to get used to parts. Some stuff just has me completely puzzled. For example when your used to setting an autopostback property on a drop down control, the need to have to hand code some [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://wagnerblog.com/wp-content/uploads/2009/05/puzzled.jpg" alt="puzzled" title="puzzled" width="240" height="280" class="alignright size-full wp-image-1005" />I have been slogging my way through the MS MVC architecture. There are some good parts and some really hard to get used to parts. Some stuff just has me completely puzzled. For example when your used to setting an autopostback property on a drop down control, the need to have to hand code some js to do the same every time I want an autopostback gets old pretty quick. </p>
<p>I love the way MVC separates out the code that used to get thrown into the same code behind in web forms. It really shines in that regard. Who knows maybe it will have a positive influence on webforms apps in that regard. </p>
<p>For the moment my bottom line is that it takes a lot longer to write the same functionality in MVC than webforms. That&#8217;s partly due to the learning curve and partly due to the fact that there is more code to write. The fact that there is more code will be interesting to watch. Maybe in time people will find some efficient practices that will help to bring down the overall effort required. If thats not the case I wonder how someone would justify the cost of building a system one way versus another. And dont tell me to build it in MVC because webforms are evil. Thats nonesense. We have almost ten years of webform driven sites out there. </p>
<p>Lastly, for all those folks who are jumping on the &#8220;Viewstate is evil&#8221; bandwagon &#8211; which seems to be the same lemmings who jumped on Datasets as a DAO in 2002 &#8211; have a look at the following<a href="http://www.slideshare.net/rudib/aspnet-mvc-performance"> performance test</a>. 6-8 requests per second for an MVC app is laughable. I sure hope that&#8217;s not the case presently. Its worth some internal testing to see. By the way, just on a purely subjective note, for the past year I have frequently spent time on MarketWatch. Since they switched to MVC I have noticed a small performance penalty. Purely subjective. Heck maybe its even a matter of browsers. </p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/05/more-aspnet-mvc-puzzlement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decisions Decisions&#8230;..</title>
		<link>http://wagnerblog.com/2009/05/decisions-decisions/</link>
		<comments>http://wagnerblog.com/2009/05/decisions-decisions/#comments</comments>
		<pubDate>Mon, 25 May 2009 20:39:35 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[sample code]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=997</guid>
		<description><![CDATA[ As a programmer / consultant I always work on improving my skills. Except for the past year or so. I coasted a little bit. Consequently I am faced with two technologies that I need to study up. MS MVC and Silverlight. My personal feeling is that Silverlight will grow into the larger market over [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://wagnerblog.com/wp-content/uploads/2009/05/decisions11-247x300.jpg" alt="decisions11" title="decisions11" width="247" height="300" class="alignleft size-medium wp-image-998" /> As a programmer / consultant I always work on improving my skills. Except for the past year or so. I coasted a little bit. Consequently I am faced with two technologies that I need to study up. MS MVC and Silverlight. My personal feeling is that Silverlight will grow into the larger market over time. But at the moment its still lacking a lot of tools that a normal developer (not a bleeding edge addict) would come to expect in a platform. On the other hand MVC is slated to take off like a rocket. There is sooooo much pent up RoR envy in the .NET developer community its ridiculous. </p>
<p>My main issues with MS MVC is the fact that it tries to be something very similar to RoR. I feel this way because Model View Controller can be done without MS MVC. As a matter of fact as I have mentioned ad-nauseaum Dan and I have built and MVC driven framework a while back. So if I am interested in just the simplest most straightforward way to plug MVC into ASP.NET &#8211; thats the way to go &#8211; just build a small and simple action framework / router. No tag-soup either. I suppose I have to revisit this after ASP.NET 4.0 is out because it will incorporate routing. </p>
<p>Having said all that as a preamble, I would be silly not to study up on MS MVC. There are some aspects I really do like about it. The great enforcement of separation of concerns for starters. </p>
<p>As I looked over the web to find some decent examples of people who have blazed trails in this area I came across <a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/28/presenting-codebetter-canvas.aspx">Karl Seguin&#8217;s</a> <a href="http://code.google.com/p/codebettercanvas/">Canvas MVC sample app</a>. It was written with one specific purpose in mind: as a simple learning application that illustrates a good way to build an MVC app. In my opinion this app is a resounding success. It has enough code to illustrate the majority of work that one has to deal with (i.e. data entry, paged lists etc). And it doesn&#8217;t try to throw every possible scenario in the mix. The result is a well structured easy to follow sample. Believe me I have looked at numerous different ones out there and this is by far one of the better designed samples. Love it !</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/05/decisions-decisions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeGen on Steroids</title>
		<link>http://wagnerblog.com/2009/05/codegen-on-steroids/</link>
		<comments>http://wagnerblog.com/2009/05/codegen-on-steroids/#comments</comments>
		<pubDate>Thu, 21 May 2009 21:39:32 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[.NET Code Related]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code Gen]]></category>
		<category><![CDATA[LLBLGen]]></category>
		<category><![CDATA[MSPec]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=994</guid>
		<description><![CDATA[Wow, I really have been leading a pretty sheltered life as a consultant. There is a toolset I have used for a number of years that has predictably delivered results. When it comes to projects where you deliver or you dont eat its pretty important that your tools work. Along the way I was fortunate [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-993 alignright" title="steroids1" src="http://wagnerblog.com/wp-content/uploads/2009/05/steroids1.jpg" alt="steroids1" width="306" height="399" />Wow, I really have been leading a pretty sheltered life as a consultant. There is a toolset I have used for a number of years that has predictably delivered results. When it comes to projects where you deliver or you dont eat its pretty important that your tools work. Along the way I was fortunate enough &#8211; with the help of one important friend ( Dan ) &#8211; to produce some pretty good tools. We had a version of MVC in 2006 &#8211; 3 years before MS had theirs.</p>
<p>Fast forward to 2009. ASP.NET MVC hits the market. Only its not just routing and actions its a whole big kit and kaboodle. Reminds me a little of RoR.  Along the way all of a sudden a lot of folks are complaining that Viewstate is the big evil and if only they could code without it. Meh. Sounds a little like people flocking to the latest shiniest thing. And there is nothing wrong with that. Its just ironic that many of the personality types that flock to this technology are the same type of folks who argued that datasets would save the world. Geez.</p>
<p>MVC is good stuff and my buddy Phil has poured his heart into this project. So I certainly hope it will thrive and progress. What has me confused at the moment are a plethora of adjacent projects that are growing up around it. I have a hard time discerning which to take serious. What do I make of an open source &#8220;architecture&#8221; that spits out a bunch of scaffolding pages and uses itself two other OSS projects. By the way, am I the only one who sees a trend of OSS projects where someone produces an entire new something that is 50% built on top of someone elses new something. Hope that makes sense. Did the RoR community go through a similar evolution?</p>
<p>As a consultant I need rock solid tools that are not necessarily going to be impacted by a deprecation of some obscure aspect because the manufacturer used some OSS project that is no longer popular. I really should research how the RoR community deals with this.</p>
<p>And while I am on the subject of &#8220;architectures&#8221;&#8230;. seems that there are some ASP.NET MVC &#8220;architectures&#8221; floating around that are primarily fantastic code generators. I would actually call them Form Wizards on Steroids. Hence the pic.</p>
<p>In 1992 I worked on a pretty large MS Access app. Yes we did those and they were good. Dont laugh. MS Access was the MVC of its day. Anyways, the IDE had a Form Wizard. Point it at a query or table and it would generate all the code you need.  I learned an important lesson back then about code gen. Especially UI code gen. Dont use it. Wizard generated code is great &#8230; al the way until you need to change it. And Wizard generated apps tend to contain a lot of unnecessary stuff that you wouldn&#8217;t produce by hand.</p>
<p>Now mind you I am not talking about the utilization of some other view engine. Spark for example looks pretty cool. I am talking about the notion that a utility spitting out a bunch of views and controllers and tests is a measure of productivity. It is not.</p>
<p>Speaking of productivity. Rob Connery had a very cool demo of MSpec on his site. Finally a spec / test system that makes sense. (Besides Fitnesse that is).</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/05/codegen-on-steroids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
