<?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>AdaRuby &#187; Fluid Web</title>
	<atom:link href="http://www.adaruby.com/category/fluid-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adaruby.com</link>
	<description>Rich Dynamic Applications with Ruby on Rails</description>
	<lastBuildDate>Thu, 04 Aug 2011 04:42:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Quest for The Fluid Web Framework</title>
		<link>http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quest-for-the-fluid-web-framework</link>
		<comments>http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:52:20 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Fluid Web]]></category>

		<guid isPermaLink="false">http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/</guid>
		<description><![CDATA[During my experience developing web applications, it&#8217;s challenging to find the “best” web development approach of them all.I like these principles: POJO approach. No inheritance, interfaces, minimal annotations. Configuration is all that&#8217;s necessary. Convention over Configuration. Even with POJO, some configuration is needed. Minimize configuration by using conventions. And document the conventions! Because conventions can [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2010%2F01%2F08%2Fquest-for-the-fluid-web-framework%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2010%2F01%2F08%2Fquest-for-the-fluid-web-framework%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Quest for The Fluid Web Framework" alt=" Quest for The Fluid Web Framework" /><br />
			</a>
		</div>
<div>During my experience developing web applications, it&#8217;s challenging to find the “best” web development approach of them all.I like these principles:</p>
<ul>
<li><strong>POJO approach.</strong> No inheritance, interfaces, minimal annotations. Configuration is all that&#8217;s necessary.</li>
<li><strong>Convention over Configuration.</strong> Even with POJO, some configuration is needed. Minimize configuration by using conventions. And document the conventions! Because conventions can sometimes be confusing.</li>
<li><strong>REST approach.</strong> This is not anti-SOAP or anti-WS-*. It means designed for the web, and embrace resource-oriented and stateless principles.</li>
<li><strong>Use JSON.</strong> For browser-server communication JSON is preferable. Atom+XML is more suited for documents and server-server communication.</li>
<li><strong>Decentralized.</strong> Rather than one big app, decompose as much as possible. Decentralization means a more robust infrastructure is needed, and yes it means looking for trouble.</li>
<li><strong>Resource-oriented.</strong> Contrasts with page-oriented or procedural. Somewhat similar to object-oriented but with resource semantics. Kind of Objects than implement IResource.</li>
<li><strong>Interoperable.</strong> Services are exposed via JSON-REST API, AtomPub, or other mechanism. Can also consume other services easily</li>
<li><strong>Robust security infrastructure.</strong> Provides sufficient authentication and authorization mechanisms, and easily programmable.</li>
<li>“ <strong>Native”.</strong> Blends with the host environment, even if just a simulation. jQTouch, Qt, Swing, are all good examples here.</li>
<li><strong>Lightweight.</strong> Prefers lightweight specialized frameworks, like Merb, Sinatra, than Ruby on Rails. Spring than Java EE. Heavy full-stack framworks (some call it “bloated”, though I don&#8217;t believe that term anymore) does have its plus sides though, less headache is one of them.</li>
<li><strong>Scalable.</strong> Runs on a scalable clustered system like Google Apps Engine or Heroku. Also means dictated by scalability restrictions of the respective environments (more headaches).</li>
<li><strong>Reasonably Reusable.</strong> I wanted cross-platform, but now it has expanded to cross-environment (with mobile devices and other stuff). So now I think some sort of reusability is desirable. For example, JavaScript logic that can be used by server-side desktop web application, server-side mobile web application, and client-side applications with embedded browser component.</li>
</ul>
<p>The  <em>Fluid Web framework</em> (I made up that term) provides most of the benefits with a reasonable level of complexity and learning curve.</p>
<p>Fluid Web will also use the best programming model for the task at hand. Divided broadly, there are three programming models in question:</p>
<ol>
<li><strong>POJO Model.</strong> to Spring Programming Model. Also used in JavaScript and all Object-oriented programming languages. It&#8217;s RPC and object-oriented.</li>
<li><strong>REST Model.</strong> The “Web programming model” as Google calls it. This is less of an API and more of a protocol(s). It&#8217;s resource-oriented or document-oriented.</li>
<li><strong>Comet model.</strong> Asynchronous programming model. Data is passed through several message channels. Everybody are clients, they can publish and subscribe to the channels. XMPP belongs here too.</li>
<li><strong>SQL model.</strong> Great for accessing data stores declaratively. Also in this category: SPARQL for RDF triplets, YQL for web resources, GQL for Google Big Table, Microsoft&#8217;s LINQ. Resulting data is document-oriented.</li>
</ol>
<p>I have been somewhat obsessed by this quest since a few years ago, and haven&#8217;t yet found the true answer. Betting on it on a commercial project is also too risky. So I decided that I will do more experiments on it on a research basis, and share my experiences here.</p>
<p>Feel free to share your ideas.</p>
</div>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

