<?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>Wizards of Smart &#187; MVC</title>
	<atom:link href="http://wizardsofsmart.net/tag/mvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://wizardsofsmart.net</link>
	<description>.NET Design Patterns</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:40:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-beta2-14896</generator>
		<item>
		<title>A History of Violence against HTML</title>
		<link>http://wizardsofsmart.net/patterns/a-history-of-violence-against-html/</link>
		<comments>http://wizardsofsmart.net/patterns/a-history-of-violence-against-html/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 19:17:21 +0000</pubDate>
		<dc:creator>panesofglass</dc:creator>
				<category><![CDATA[Patterns]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PresentationModel]]></category>
		<category><![CDATA[ViewModel]]></category>
		<category><![CDATA[Web Application]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/?p=223</guid>
		<description><![CDATA[[This is the second in a series on the use of MVC for building web "applications".] HTML was designed as a document format with hypermedia connections to other, related documents. Today, however, we abuse HTML and treat it as an application platform. It somehow performs remarkably well in most cases. I suppose that’s a testament to [...]]]></description>
			<content:encoded><![CDATA[<p>[This is the second in a <a title="The Problem with the MVC Frameworks" href="http://wizardsofsmart.net/patterns/the-problem-with-the-mvc-frameworks-introduction/">series</a> on the use of MVC for building web "applications".]</p>
<p><span>HTML</span> was designed as a document format with hypermedia connections to other, related documents. Today, however, we abuse <span>HTML</span> and treat it as an application platform. It somehow performs remarkably well in most cases. I suppose that’s a testament to the agility of declarative markup. Nevertheless, I think we could all agree that <span>HTML</span> at least <em>started</em> life as a document format. If this is the case, I argue that <span>HTML</span> is not a view format; rather it is a serialization format for a model.</p>
<p>I’m sure many reading this are probably calling me a fool or worse. Well, don’t take my word for it. Let’s look at what some of the leading web developer/designers are saying:</p>
<blockquote><p>In markup, semantics is concerned with the meaning of an element and how that element describes the content it contains.<br />
-Molly E. Holzschlag (<a href="http://www.informit.com/articles/article.asp?p=369225&amp;rl=1" onclick="urchinTracker('/outgoing/www.informit.com/articles/article.asp?p=369225_amp_rl=1&amp;referer=');">http://www.informit.com/articles/article.asp?p=369225&amp;rl=1</a>)</p></blockquote>
<blockquote><p>Although it might be tempting to use the visual layout as the basis for the structure of your markup, this could lead to you overusing elements, particularly <code>&lt;div&gt;</code> elements. This will also result in establishing your content order primarily to accomplish the visual layout rather than it making sense when no style sheets are available. <strong>To avoid presentational markup and ordering problems, begin by first looking at the content and then working out from the meaning</strong>(emphasis mine).<br />
-Andy Clarke (<a href="http://www.transcendingcss.com/" onclick="urchinTracker('/outgoing/www.transcendingcss.com/?referer=');">Transcending <span>CSS</span></a>)</p></blockquote>
<blockquote><p>The notion that HTML is a display language has been proven long ago to be a <a title="Definition of 'Bad Thing' in the Jargon File." href="http://catb.org/jargon/html/B/Bad-Thing.html" onclick="urchinTracker('/outgoing/catb.org/jargon/html/B/Bad-Thing.html?referer=');">Bad Thing</a>. CSS taught us to separate our presentation from our content, and the doors that opened when we did it were invaluable. Today, however, we’re still delivering web applications as HTML documents with a bit of scripting layered on top. This works, but is strangled by all of HTML’s limitations. Fundamentally, <strong>HTML is not an application delivery format, it is a content description language</strong>, despite the <a href="http://www.sitepoint.com/blogs/2008/11/25/w3c-markup-validation-service-adds-experimental-html5-support/" onclick="urchinTracker('/outgoing/www.sitepoint.com/blogs/2008/11/25/w3c-markup-validation-service-adds-experimental-html5-support/?referer=');">valiant efforts of the HTML5 Working Group</a>.<br />
- Meitar Moscovitz (<a href="http://www.sitepoint.com/blogs/2008/12/22/svg-is-the-future-of-application-development/" onclick="urchinTracker('/outgoing/www.sitepoint.com/blogs/2008/12/22/svg-is-the-future-of-application-development/?referer=');">SVG Is The Future Of Application Development</a>)</p></blockquote>
<p>No, I can’t quote them directly, but I believe my argument has the same spirit. We should look at <span>HTML</span> as a PresentationModel, or ViewModel if you prefer, in the client (i.e. the browser). Therefore, <span>HTML</span> be treated as a serialization of your object model into a document format.</p>
<p>What then is the view? What’s the controller? These are excellent questions. Let’s think about how MVC works. The controller is responsible for receiving requests and relaying responses. The view is supposed to display the representation of the model. For the web, the controller easily aligns with the <span>HTTP</span> protocol and the view to the styles, transforms, and behaviors applied to the model (our <span>HTML</span> document). (I’ve used styles and transforms here separately to emphasize the potential use of <span>XSLT</span> stylesheets in addition to <span>CSS</span>.) Sure, using a document serialization, you could just display the model directly, and the confusion of <span>HTML</span> is here emphasized. It’s a model built out like a visual representation.</p>
<p>Are there some exceptions to this? Sure. If you want to treat <span>HTML</span> as a purely view format, then you can eliminate everything from your <span>HTML</span> except for JavaScript bindable areas and use <span>JSON</span> objects as your PresentationModels. Pass some of those around instead of <span>HTML</span>, and you’re really treating <span>HTML</span> like a true view. However, we don’t generally do that. We usually serialize the model into the <span>HTML</span> and apply our view aspects afterward via <span>CSS</span> and JavaScript.</p>
<p>If we really want to get serious about making an excellent MVC framework, we have to recognize and use our building blocks appropriately. <span>HTML</span> is a model serialization format. Treat it as such.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/patterns/a-history-of-violence-against-html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Problem with the MVC Frameworks &#8211; Introduction</title>
		<link>http://wizardsofsmart.net/patterns/the-problem-with-the-mvc-frameworks-introduction/</link>
		<comments>http://wizardsofsmart.net/patterns/the-problem-with-the-mvc-frameworks-introduction/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 18:03:50 +0000</pubDate>
		<dc:creator>panesofglass</dc:creator>
				<category><![CDATA[Patterns]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Front Controller]]></category>
		<category><![CDATA[FubuMVC]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[OpenRasta]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/uncategorized/the-problem-with-the-mvc-frameworks-introduction/</guid>
		<description><![CDATA[The anticipatory buzz about ASP.NET MVC last year has become a loud clanging about the general MVC pattern this year. We’ve got several people talking about the “M” in MVC (K. Scott, Rob &#38; Javier); the “right” way to make ASP.NET MVC work (Jimmy and Seb); and complete alternatives in the form of FubuMVC (Front [...]]]></description>
			<content:encoded><![CDATA[<p>The anticipatory buzz about ASP.NET MVC last year has become a loud clanging about the general MVC pattern this year. We’ve got several people talking about the “M” in MVC (<a href="http://odetocode.com/blogs/scott/archive/2009/03/30/12714.aspx" onclick="urchinTracker('/outgoing/odetocode.com/blogs/scott/archive/2009/03/30/12714.aspx?referer=');">K. Scott</a>, <a href="http://blog.wekeroad.com/subsonic/putting-the-ldquo-m-rdquo-back-in-mvc/" onclick="urchinTracker('/outgoing/blog.wekeroad.com/subsonic/putting-the-ldquo-m-rdquo-back-in-mvc/?referer=');">Rob</a> &amp; <a href="http://herdingcode.com/?p=177" onclick="urchinTracker('/outgoing/herdingcode.com/?p=177&amp;referer=');">Javier</a>); the “right” way to make ASP.NET MVC work (<a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/06/29/how-we-do-mvc-view-models.aspx" onclick="urchinTracker('/outgoing/www.lostechies.com/blogs/jimmy_bogard/archive/2009/06/29/how-we-do-mvc-view-models.aspx?referer=');">Jimmy</a> and <a href="http://serialseb.blogspot.com/2009/05/my-mvc-best-practices-talk.html" onclick="urchinTracker('/outgoing/serialseb.blogspot.com/2009/05/my-mvc-best-practices-talk.html?referer=');">Seb</a>); and complete alternatives in the form of <a href="http://fubumvc.pbworks.com/" onclick="urchinTracker('/outgoing/fubumvc.pbworks.com/?referer=');">FubuMVC</a> (<a href="http://www.lostechies.com/blogs/chad_myers/archive/2009/06/18/going-controller-less-in-mvc-the-way-fowler-meant-it.aspx" onclick="urchinTracker('/outgoing/www.lostechies.com/blogs/chad_myers/archive/2009/06/18/going-controller-less-in-mvc-the-way-fowler-meant-it.aspx?referer=');">Front Controller</a>), <a href="http://bistroframework.org/index.php?title=Bistro_Framework_Home" onclick="urchinTracker('/outgoing/bistroframework.org/index.php?title=Bistro_Framework_Home&amp;referer=');">Bistro</a> (Alex), and—related from a web development perspective if not MVC—<a href="http://openrasta.com/" onclick="urchinTracker('/outgoing/openrasta.com/?referer=');">OpenRasta</a> (<a href="http://serialseb.blogspot.com/" onclick="urchinTracker('/outgoing/serialseb.blogspot.com/?referer=');">Seb</a>). Why do we have all this complexity or all these options? I submit to you that the problems in the pattern as it relates to web design and the complex structures designed to handle it are a result of mixed metaphors; i.e., the web is not a UI but a service platform.</p>
<p>Before moving on, let me just say that by no means am I advocating WebForms or other, similar frameworks. Such things are atrocities that should never have been committed upon this earth. (Okay, I exaggerate a bit, but hopefully you get my point that while I’m about to rag on MVC, some of these other things are worse.)</p>
<p>As I wrote, this thing became far too long for a single post, so I’m breaking it up into sections. I also need to find and tie in the discussion I had with <a href="http://wizardsofsmart.net/author/rookieone">JB</a> about this very thing. I like how that discussion went, although it was based upon other discussions similar to those in the following posts:</p>
<p>1. <a href="http://wizardsofsmart.net/patterns/a-history-of-violence-against-html/">A History of Violence against HTML</a><br />
2. New Names for Old Things<br />
3. Serve me up some of that good ole Appl(ication)e Pie<br />
4. The Web is a Service Bus<br />
5. The Gauntlet</p>
<p>So stay tuned. There’s more to come. <img src='http://wizardsofsmart.net/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/patterns/the-problem-with-the-mvc-frameworks-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ViewModel Futures</title>
		<link>http://wizardsofsmart.net/patterns/viewmodel-futures/</link>
		<comments>http://wizardsofsmart.net/patterns/viewmodel-futures/#comments</comments>
		<pubDate>Wed, 13 May 2009 04:10:49 +0000</pubDate>
		<dc:creator>panesofglass</dc:creator>
				<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[ViewModel]]></category>

		<guid isPermaLink="false">http://wizardsofsmart.net/patterns/viewmodel-futures</guid>
		<description><![CDATA[Glenn Block asked two questions on Twitter tonight that were too good to pass up. First, do you want better tooling, more testable data binding, or a ViewModel base class? I agree with whoever said patterns exist to make up for faults in a language; however, in this case, I think I would choose enhancements [...]]]></description>
			<content:encoded><![CDATA[<p>Glenn Block asked two questions on Twitter tonight that were too good to pass up. First, do you want better tooling, more testable data binding, or a ViewModel base class? I agree with whoever said patterns exist to make up for faults in a language; however, in this case, I think I would choose enhancements to data binding. It&#8217;s a little too magical, imho.</p>
<p>I would like to see a ViewModel base eventually, though, as that would be one less thing to wire up myself, and it hopefully silence all the people complaining about the lack of a model in MVC. (Yes, I am thinking the backend models should be sharable among WPF, Silverlight, and MVC.)</p>
<p>Glenn&#8217;s second question related to tv target audience. I am always a fan of simple explocicity, to borrow a word from JB. I think that&#8217;s what the experts use. Also, I don&#8217;t know many who want to me mediocre some day, so going for the best and letting it trickle down is a great idea.</p>
<p>Just my $.02.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardsofsmart.net/patterns/viewmodel-futures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
