<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/2.4.1" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>The Hand of FuManChu - Latest comments on Customization vs handler dispatch in web application servers</title>
		<link>http://www.aminus.org/blogs/index.php?blog=2&#38;disp=comments</link>
		<description></description>
		<language>en-US</language>
		<docs>http://backend.userland.com/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=2.4.1"/>
		<ttl>60</ttl>
				<item>
			<title>In response to: Customization vs handler dispatch in web application servers</title>
			<pubDate>Tue, 25 Oct 2005 19:27:21 +0000</pubDate>
			<dc:creator>Ben Bangert [Visitor]</dc:creator>
			<guid isPermaLink="false">c6062@http://www.aminus.org/blogs/</guid>
			<description>&lt;p&gt;I'm looking forward to better methods to plug-in dispatch schemes for CherryPy. One person &lt;a href=&quot;http://www.zachary.com/s/blog/2005/10/01/integrating_cherrypy_and_routes&quot;&gt;already coded up an integration with Routes for CherryPy&lt;/a&gt; though I'm sure it has some bugs since he couldn't fully integrate it into CherryPy's back-end. I believe as it currently is, this should be implemented as some sort of filter?&lt;br /&gt;
&lt;br /&gt;
In Routes, I added two functions intended to be used by the developer in whatever framework they use, that passes the configuration data using a thread-local singleton class. Kind of non-Pythonic (implicit instead of explicit), but it seemed like the best choice.&lt;br /&gt;
&lt;br /&gt;
There are some interesting abilities gained and lost by having the C in MVC taken care of independently of the V. Of course, it will be more modular and a framework developer will be able to pick and choose more parts when they can plug-in a Controller (middle-section) type thing like CherryPy, then a template language, a Model class, etc. On the other hand, more advanced functionality that requires access to the Controller or sub-requests to Controller data might not work at all or as well when they are bound more closely.&lt;br /&gt;
&lt;br /&gt;
This is one of the &lt;a href=&quot;http://groovie.org/articles/2005/10/18/hooked-on-myghty&quot;&gt;reasons I'm using Myghty as the VC in MVC&lt;/a&gt; for my own little mega-framework. In the case I cite at the end, the functionality desired is to pull the content of what is essentially a sub-request, and insert its content into the template being rendered. It's possible this is do-able in CherryPy, but I can't seem to find it in the docs.&lt;br /&gt;
&lt;br /&gt;
Regarding creating frameworks in general, I'm hoping more people choose mega-framework type things, so I don't have to keep learning tons of new stuff anytime I want a new framework (ie, build on CherryPy, Myghty, or other extensible frameworks). Transferrable skill-sets are nice to have, as TurboGears emphasizes.&lt;/p&gt;
</description>
			<content:encoded><![CDATA[<p>I'm looking forward to better methods to plug-in dispatch schemes for CherryPy. One person <a href="http://www.zachary.com/s/blog/2005/10/01/integrating_cherrypy_and_routes">already coded up an integration with Routes for CherryPy</a> though I'm sure it has some bugs since he couldn't fully integrate it into CherryPy's back-end. I believe as it currently is, this should be implemented as some sort of filter?<br />
<br />
In Routes, I added two functions intended to be used by the developer in whatever framework they use, that passes the configuration data using a thread-local singleton class. Kind of non-Pythonic (implicit instead of explicit), but it seemed like the best choice.<br />
<br />
There are some interesting abilities gained and lost by having the C in MVC taken care of independently of the V. Of course, it will be more modular and a framework developer will be able to pick and choose more parts when they can plug-in a Controller (middle-section) type thing like CherryPy, then a template language, a Model class, etc. On the other hand, more advanced functionality that requires access to the Controller or sub-requests to Controller data might not work at all or as well when they are bound more closely.<br />
<br />
This is one of the <a href="http://groovie.org/articles/2005/10/18/hooked-on-myghty">reasons I'm using Myghty as the VC in MVC</a> for my own little mega-framework. In the case I cite at the end, the functionality desired is to pull the content of what is essentially a sub-request, and insert its content into the template being rendered. It's possible this is do-able in CherryPy, but I can't seem to find it in the docs.<br />
<br />
Regarding creating frameworks in general, I'm hoping more people choose mega-framework type things, so I don't have to keep learning tons of new stuff anytime I want a new framework (ie, build on CherryPy, Myghty, or other extensible frameworks). Transferrable skill-sets are nice to have, as TurboGears emphasizes.</p>
]]></content:encoded>
			<link>http://www.aminus.org/blogs/index.php/2005/10/25/mapping_uri_s_to_handlers_in_web_applica?blog=2#c6062</link>
		</item>
				<item>
			<title>In response to: Customization vs handler dispatch in web application servers</title>
			<pubDate>Tue, 25 Oct 2005 17:23:28 +0000</pubDate>
			<dc:creator>fumanchu [Member]</dc:creator>
			<guid isPermaLink="false">c6060@http://www.aminus.org/blogs/</guid>
			<description>&lt;p&gt;Hi, Ben!&lt;br /&gt;
&lt;br /&gt;
The post is descriptive. I'm trying to point out some of the issues that a developer will run into when making a framework.&lt;br /&gt;
&lt;br /&gt;
&quot;If you're looking for better systems for deployers, I'd suggest looking at Paste.&quot;&lt;br /&gt;
&lt;br /&gt;
I'm not, really. I'm much more interested in the content of such a file than the management of it. [However, if the management tools, like Paste, are widely considered to be hard to understand, then framework and server authors are naturally going to prefer other ways to allow customization of their code.]&lt;br /&gt;
&lt;br /&gt;
&quot;The other thing I'm not sure you're accounting for is all of the frameworks you mention will fail in a deployment scenario where the entire web application is deployed under another URL namespace.&quot;&lt;br /&gt;
&lt;br /&gt;
I disagree, but I think it may be semantics. There are two issues involved in supporting arbitrary mount points. First, dispatch needs to still work (input), and second, URL's need to be written appropriately (output). The latter can be addressed either via relative URL's or via rewriting (interpolation of the correct absolute root). At least three of the four servers I covered have facilities for correct dispatch:&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;One of Django's design goals is to &lt;a href='http://www.djangoproject.com/documentation/design_philosophies/#id2'&gt;promote fluid roots&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Mod_python can depend on its deployers using mod_rewrite in almost every case.&lt;/li&gt;&lt;li&gt;It's easy enough to find or write a filter for CherryPy which does the dispatch-rewriting for you.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
I can't speak for Quixote on this issue.&lt;br /&gt;
&lt;br /&gt;
Regarding the output (URL generation), I'm only really familiar with CherryPy, which, since it is templating-language agnostic, leaves the relativity of URI's to the application developer (I know all of &lt;em&gt;my&lt;/em&gt; URI's are both correct and re-routable). One nice thing about CherryPy is that it doesn't own any URI's itself, and therefore does not have to address this issue in the core.&lt;br /&gt;
&lt;br /&gt;
Regardless of existing support, I think Routes is a great step in providing this functionality to lots of existing frameworks.&lt;br /&gt;
&lt;br /&gt;
&quot;I've read your post a few times now, and I'm still having difficulty deciphering the terms you're using for various contexts. Perhaps thats because I'm not primarily a web framework creator?&quot;&lt;br /&gt;
&lt;br /&gt;
Perhaps, but it's more likely just my intuitive munging of terms. I'll re-read it (now that I've had some sleep) and see if I can't touch it up and be more consistent.&lt;br /&gt;
&lt;br /&gt;
Thanks for the info re: Myghty and Routes. I've actually got another post in draft right now regarding CherryPy, and how I'd like to turn it inside-out in order to support various dispatch schemes. [I don't think it'll start doing response composition anytime soon, though. That is, I don't see CP resolvers handling &quot;sub-requests&quot;; perhaps that's an advantage that Myghty provides, that CP can't count on (not having a blessed template solution).]&lt;/p&gt;
</description>
			<content:encoded><![CDATA[<p>Hi, Ben!<br />
<br />
The post is descriptive. I'm trying to point out some of the issues that a developer will run into when making a framework.<br />
<br />
"If you're looking for better systems for deployers, I'd suggest looking at Paste."<br />
<br />
I'm not, really. I'm much more interested in the content of such a file than the management of it. [However, if the management tools, like Paste, are widely considered to be hard to understand, then framework and server authors are naturally going to prefer other ways to allow customization of their code.]<br />
<br />
"The other thing I'm not sure you're accounting for is all of the frameworks you mention will fail in a deployment scenario where the entire web application is deployed under another URL namespace."<br />
<br />
I disagree, but I think it may be semantics. There are two issues involved in supporting arbitrary mount points. First, dispatch needs to still work (input), and second, URL's need to be written appropriately (output). The latter can be addressed either via relative URL's or via rewriting (interpolation of the correct absolute root). At least three of the four servers I covered have facilities for correct dispatch:<br />
<br /></p>

<ul><li>One of Django's design goals is to <a href='http://www.djangoproject.com/documentation/design_philosophies/#id2'>promote fluid roots</a>.</li><li>Mod_python can depend on its deployers using mod_rewrite in almost every case.</li><li>It's easy enough to find or write a filter for CherryPy which does the dispatch-rewriting for you.</li></ul>

<p><br />
<br />
I can't speak for Quixote on this issue.<br />
<br />
Regarding the output (URL generation), I'm only really familiar with CherryPy, which, since it is templating-language agnostic, leaves the relativity of URI's to the application developer (I know all of <em>my</em> URI's are both correct and re-routable). One nice thing about CherryPy is that it doesn't own any URI's itself, and therefore does not have to address this issue in the core.<br />
<br />
Regardless of existing support, I think Routes is a great step in providing this functionality to lots of existing frameworks.<br />
<br />
"I've read your post a few times now, and I'm still having difficulty deciphering the terms you're using for various contexts. Perhaps thats because I'm not primarily a web framework creator?"<br />
<br />
Perhaps, but it's more likely just my intuitive munging of terms. I'll re-read it (now that I've had some sleep) and see if I can't touch it up and be more consistent.<br />
<br />
Thanks for the info re: Myghty and Routes. I've actually got another post in draft right now regarding CherryPy, and how I'd like to turn it inside-out in order to support various dispatch schemes. [I don't think it'll start doing response composition anytime soon, though. That is, I don't see CP resolvers handling "sub-requests"; perhaps that's an advantage that Myghty provides, that CP can't count on (not having a blessed template solution).]</p>
]]></content:encoded>
			<link>http://www.aminus.org/blogs/index.php/2005/10/25/mapping_uri_s_to_handlers_in_web_applica?blog=2#c6060</link>
		</item>
				<item>
			<title>In response to: Customization vs handler dispatch in web application servers</title>
			<pubDate>Tue, 25 Oct 2005 16:47:53 +0000</pubDate>
			<dc:creator>Ben Bangert [Visitor]</dc:creator>
			<guid isPermaLink="false">c6059@http://www.aminus.org/blogs/</guid>
			<description>&lt;p&gt;I'm not entirely sure what the point of this post is, is it comparing methods or trying to find strengths in one or the other?&lt;br /&gt;
&lt;br /&gt;
If you're looking for better systems for deployers, I'd suggest looking at Paste. The config file format is rather minimal given the ability it wraps up, though CherryPy will need the ticket resolved that prevents it from functioning properly with multiple webapps in a single process.&lt;br /&gt;
&lt;br /&gt;
The other thing I'm not sure you're accounting for is all of the frameworks you mention will fail in a deployment scenario where the entire web application is deployed under another URL namespace. If you wrote your web application with the presumption it'd &quot;own&quot; the root path, and have hard-coded /archives/2004 in templates and such, the webapp will fail when a user tries to deploy it under /joes/blog URI.&lt;br /&gt;
&lt;br /&gt;
For a web application to survive under this type of deployment, all URL's it generates to its own parts will need to be generated. This was one of my primary goals in porting the Rails system of Routes to Python (and I liked their flexible mapping system that didn't use huge regexps). Zope already has this under control as well since they use URL generation to call webapp resources.&lt;br /&gt;
&lt;br /&gt;
I've read your post a few times now, and I'm still having difficulty deciphering the terms you're using for various contexts. Perhaps thats because I'm not primarily a web framework creator?&lt;br /&gt;
&lt;br /&gt;
I should mention however, that Myghty allows for significant customization of dispatch far beyond what I believe CherryPy or Django offer. As I'm building a mega-framework of sorts on top of Myghty, the customization has allowed me to easily build MVC frameworks and experiment using:&lt;br /&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;A stateless controller class (one controller is instantiated and used persistently)&lt;/li&gt;&lt;li&gt;A stateful controller class (controller is instantiated and used for each request)&lt;/li&gt;&lt;li&gt;Stateless controller thats automatically instantiated outside the users code&lt;/li&gt;&lt;li&gt;Pipe-lined request dispatch (ala the Axkit XML/XSLT approach)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://routes.groovie.org/&quot;&gt;Routes&lt;/a&gt;-based dispatching&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
Myghty's &lt;a href=&quot;http://www.myghty.org/docs/resolver.myt&quot;&gt;advanced resolver&lt;/a&gt; mechanism allows the entire resolver dispatch scheme to be fully customized by the web application developer (should they choose to). Entire custom resolvers can be written and added in, or pipe-lined. The resolvers can even be fine-tuned per the context of the request, for example one rule-set of resolvers could be used during the initial request, and a different set of resolvers could be called during a sub-request.&lt;br /&gt;
&lt;br /&gt;
This entire approach makes for a very very powerful and customizable base for building custom mega-frameworks on top of it (as I'm doing). Of course, in Myghty's case this means the templating it provides is available though there's no reason one couldn't build their own mega-framework using Myghty for this feature and using another template language.&lt;br /&gt;
&lt;br /&gt;
Hopefully that helps some with the comparison of URL dispatching/configuration and the customizability it provides a developer.&lt;/p&gt;
</description>
			<content:encoded><![CDATA[<p>I'm not entirely sure what the point of this post is, is it comparing methods or trying to find strengths in one or the other?<br />
<br />
If you're looking for better systems for deployers, I'd suggest looking at Paste. The config file format is rather minimal given the ability it wraps up, though CherryPy will need the ticket resolved that prevents it from functioning properly with multiple webapps in a single process.<br />
<br />
The other thing I'm not sure you're accounting for is all of the frameworks you mention will fail in a deployment scenario where the entire web application is deployed under another URL namespace. If you wrote your web application with the presumption it'd "own" the root path, and have hard-coded /archives/2004 in templates and such, the webapp will fail when a user tries to deploy it under /joes/blog URI.<br />
<br />
For a web application to survive under this type of deployment, all URL's it generates to its own parts will need to be generated. This was one of my primary goals in porting the Rails system of Routes to Python (and I liked their flexible mapping system that didn't use huge regexps). Zope already has this under control as well since they use URL generation to call webapp resources.<br />
<br />
I've read your post a few times now, and I'm still having difficulty deciphering the terms you're using for various contexts. Perhaps thats because I'm not primarily a web framework creator?<br />
<br />
I should mention however, that Myghty allows for significant customization of dispatch far beyond what I believe CherryPy or Django offer. As I'm building a mega-framework of sorts on top of Myghty, the customization has allowed me to easily build MVC frameworks and experiment using:<br /></p>

<ul><li>A stateless controller class (one controller is instantiated and used persistently)</li><li>A stateful controller class (controller is instantiated and used for each request)</li><li>Stateless controller thats automatically instantiated outside the users code</li><li>Pipe-lined request dispatch (ala the Axkit XML/XSLT approach)</li><li><a href="http://routes.groovie.org/">Routes</a>-based dispatching</li></ul>

<p><br />
<br />
Myghty's <a href="http://www.myghty.org/docs/resolver.myt">advanced resolver</a> mechanism allows the entire resolver dispatch scheme to be fully customized by the web application developer (should they choose to). Entire custom resolvers can be written and added in, or pipe-lined. The resolvers can even be fine-tuned per the context of the request, for example one rule-set of resolvers could be used during the initial request, and a different set of resolvers could be called during a sub-request.<br />
<br />
This entire approach makes for a very very powerful and customizable base for building custom mega-frameworks on top of it (as I'm doing). Of course, in Myghty's case this means the templating it provides is available though there's no reason one couldn't build their own mega-framework using Myghty for this feature and using another template language.<br />
<br />
Hopefully that helps some with the comparison of URL dispatching/configuration and the customizability it provides a developer.</p>
]]></content:encoded>
			<link>http://www.aminus.org/blogs/index.php/2005/10/25/mapping_uri_s_to_handlers_in_web_applica?blog=2#c6059</link>
		</item>
			</channel>
</rss>
