<?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>thinking in geek &#187; castle</title>
	<atom:link href="http://joshrobb.com/blog/category/castle/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshrobb.com/blog</link>
	<description>tagline's are so web2.0</description>
	<lastBuildDate>Fri, 11 Mar 2011 07:17:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>SoC in WebForms</title>
		<link>http://joshrobb.com/blog/2007/08/02/soc-in-webforms/</link>
		<comments>http://joshrobb.com/blog/2007/08/02/soc-in-webforms/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 16:40:40 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[asp.net]]></category>
		<category><![CDATA[castle]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[web architecture]]></category>

		<guid isPermaLink="false">http://joshrobb.com/blog/2007/08/02/soc-in-webforms/</guid>
		<description><![CDATA[Scott Bellware makes a brillant comment on Hammett&#8217;s weblog: ASP .NET templated controls did almost nothing to encourage separation of orthogonal concerns. It simply ended up separating concerns that arenâ€™t separate concerns. Pure Genius &#8211; this summarises an entire field of criticism (e.g. [1][2]). The whole issue with the OnRowDataBound/FindControl() style of programming is that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codebetter.com/blogs/scott.bellware/">Scott Bellware</a> makes a <a href="http://hammett.castleproject.org/?p=183#comment-21908">brillant comment</a> on <a href="http://hammett.castleproject.org/">Hammett&#8217;s</a> weblog:</p>
<blockquote><p>ASP .NET templated controls did almost nothing to encourage separation of orthogonal concerns. It simply ended up separating concerns that arenâ€™t separate concerns.</p></blockquote>
<p>Pure Genius &#8211; this summarises an entire field of criticism (e.g. <a href="http://www.ayende.com/Blog/archive/2007/07/23/The-Correct-Separation-Of-Concerns.aspx">[1]</a><a href="http://hammett.castleproject.org/?p=161">[2]</a>). The whole issue with the OnRowDataBound/FindControl() style of programming is that things which are fundamentally simple (iteration and string concatenation) are impossibly complex because concerns have been separated which are not orthogonal.</p>
<p>There&#8217;s an important caveat  to this &#8211; which is that WebForms is actually trying to solve a different problem from the one that I and many other developers build web apps are trying to solve. WebForms was intended to allow VB6 windows programmers to build web based apps &#8211; without having to understand HTTP, HTML, CSS, Javascript, GET/POST/HEAD etc.</p>
<p>This has actually proven to work pretty well in specific circumstances. e.g. A team of developers building an inhouse (intranet) line of business app. A good friend of mine was tasked to lead a team of 20 or so Oracle Designer developer in building a next gen version of the product they had been working on in ASP.NET 1.1. They were able to pick it up and get productive remarkably quickly because they could continue to work with a Control based, form based model that was familar to them.</p>
<p>Where it&#8217;s made life immeasurably harder is for developers who are building public facing web apps. Apps the HTML they&#8217;re actually emitting matters, where cross browser compat is something that needs to be deeply understood &#8211; not abstracted away (thats a whole &#8216;nother post).</p>
<p>The reason this is even an issue is because of the Microsoft DevDiv monoculture. If it&#8217;s a Microsoft solution then it&#8217;s obviously the best. In the Java world &#8211; there&#8217;s JSP (classic asp using Java) and JSF (roughly webforms) &#8211; but there&#8217;s a whole boatload of other solutions to problems.</p>
<p>I don&#8217;t see anyone arguing that the only right way to build web apps using java is to use JSF. People are free to examine the problems they face, look at the solutions proposed by various other people who have published their work (e.g. Tapestry, Grails, RIFE, Struts, WebWork, Struts 2 etc&#8230;) and either use an existing solution or roll their own. Same in the Python (Django, Web.py, Zope), PHP (Zend Framework, Cake, various PEAR libraries), Perl and pretty much any other community you care to examine.</p>
<p>Which tool is right for you depends entirely on your context (the problem, your experience, your team, their experience etc). If Webforms is working for you &#8211; then fantastic but it&#8217;s not the right solution for everyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshrobb.com/blog/2007/08/02/soc-in-webforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monorail + URL Rewriting</title>
		<link>http://joshrobb.com/blog/2007/04/26/monorail-url-rewriting/</link>
		<comments>http://joshrobb.com/blog/2007/04/26/monorail-url-rewriting/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 10:10:48 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[castle]]></category>
		<category><![CDATA[iis]]></category>

		<guid isPermaLink="false">http://joshrobb.com/blog/2007/04/26/monorail-url-rewriting/</guid>
		<description><![CDATA[Often people need or want clean URLs (i.e. URL&#8217;s without file extensions). e.g. Not http://example.com/somecontroller/someaction.aspx but http://example.com/somecontroller/someaction Previously there&#8217;s been two options for this. Either mapping all requests to aspnet_isapi.dll which has serious performance implications &#8211; or using ISAPI Rewrite from Helicon Software. There&#8217;s a newish (to me anyway) alternative to ISAPI rewrite which is [...]]]></description>
			<content:encoded><![CDATA[<p>Often people need or want  clean URLs (i.e. URL&#8217;s without file extensions). e.g.</p>
<p>Not<br />
<a href="http://joshrobb.com/somecontroller/someaction.aspx">http://example.com/somecontroller/someaction.aspx</a><br />
but<br />
<a href="http://example.com/somecontroller/someaction">http://example.com/somecontroller/someaction</a></p>
<p>Previously there&#8217;s been two options for this. Either mapping all requests to aspnet_isapi.dll which has serious performance implications &#8211; or using <a href="http://www.isapirewrite.com/">ISAPI Rewrite</a> from Helicon Software.</p>
<p>There&#8217;s a newish (to me anyway) alternative to ISAPI rewrite which is open source (BSD) <a href="http://www.codeplex.com/IIRF">Ionics Isapi Rewrite Filter</a> &#8211; It&#8217;s got some really nice features that ISAPIRewrite doesn&#8217;t have. Specifically it supports the following setup:</p>
<pre>RewriteCond %{REQUEST_FILENAME}     !-f
RewriteCond %{REQUEST_FILENAME}     !-d
RewriteRule ^.*$     /default.aspx     [U,I,L]</pre>
<p>This checks the incoming request does not match an existing file/directory on the filesystem before it rewrites the request.</p>
<p>This is a feature that apache users have had in mod_rewrite forever &#8211; but it&#8217;s really helpful for us IIS users because it avoids all the overhead associated with mapping all requests to the aspnet_filter.dll. You can leave IIS configured as it is and any incoming requests which do not refer to existing files ( e.g. stylesheets/images/javascripts etc) will be processed by the <a href="http://asp.net/">ASP.NET</a> runtime where the monorail can take them over.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshrobb.com/blog/2007/04/26/monorail-url-rewriting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

