<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5428081208173028358</id><updated>2024-10-04T19:45:05.023-07:00</updated><category term="Compression"/><category term="IIS"/><category term="MongoDB"/><category term="Sharding"/><category term="WCF"/><category term="localhost"/><title type='text'>Code Karma</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-3814182483249321144</id><published>2011-12-23T06:53:00.001-08:00</published><updated>2011-12-23T06:53:14.255-08:00</updated><title type='text'>Event Aggregator in Javascript</title><content type='html'>Event Aggregator in Javascript</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/3814182483249321144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/3814182483249321144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3814182483249321144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3814182483249321144'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/12/event-aggregator-in-javascript.html' title='Event Aggregator in Javascript'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-5764657144883164681</id><published>2011-12-02T06:44:00.000-08:00</published><updated>2011-12-02T06:44:23.227-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="localhost"/><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="Sharding"/><title type='text'>Sharding in MongoDB</title><content type='html'>This great article should get you the necessary start to setup sharding&amp;nbsp;&lt;a href=&quot;http://yakiloo.com/mongodb-sharding/#comment-475&quot;&gt;http://yakiloo.com/mongodb-sharding/#comment-4&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The only hurdle you might face during the setup of sharding on you local system would be , is to add &quot;addLocal&quot; option during adding the shard&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #edeff0; color: #555555; font-family: Verdana, &#39;BitStream vera Sans&#39;, Helvetica, sans-serif; font-size: 12px; line-height: 17px;&quot;&gt;db.runCommand( { addshard : “localhost:10000″, name : “shard10000″ ,allowLocal:true} );&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #555555; font-family: Verdana, &#39;BitStream vera Sans&#39;, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 17px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Please let me know if you have any new discoveries ... Thanks ...</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/5764657144883164681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/5764657144883164681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5764657144883164681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5764657144883164681'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/12/sharding-in-mongodb.html' title='Sharding in MongoDB'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-4218448177007666306</id><published>2011-11-27T10:30:00.000-08:00</published><updated>2011-12-02T06:44:59.755-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Compression"/><category scheme="http://www.blogger.com/atom/ns#" term="IIS"/><category scheme="http://www.blogger.com/atom/ns#" term="WCF"/><title type='text'>Enabling Compression for WCF service</title><content type='html'>The below mentioned links will provide a good walk through of how to enable Compression in IIS, however you should not be surprised if your Req/Res are not getting compressed. One of the discoveries for me was &quot;Adding the appropriate MIME type&quot; in the config file.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;http://www.iis.net/ConfigReference/system.webServer/httpCompression&lt;/div&gt;&lt;div&gt;http://www.hanselman.com/blog/EnablingDynamicCompressionGzipDeflateForWCFDataFeedsODataAndOtherCustomServicesInIIS7.aspx&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Following the above articles you might add three types &#39;application/json&#39;, &#39;application/atom%u002bxml&#39; and &#39;application/atom%u002bxml;charset=utf-8&#39; in to your machine.config. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In my case the content type was &#39;application/json; charset=utf-8&#39;, so I had to run &lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;appcmd.exe set config -section:system.webServer/httpCompression /+&quot;dynamicTypes.[mimeType=&#39;application/json; charset=utf-8&#39;,enabled=&#39;True&#39;]&quot; /commit:apphost&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;A good to discover the additional content types you need to add is to use &quot;Fire Bug&quot; or &quot;Google Developer Tools&quot;, and identify the request type for the HTTP request made, it would in the header in &quot;Content-Type&quot; section.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Let me know if you have any other discoveries ... Thanks ....&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/4218448177007666306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/4218448177007666306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/4218448177007666306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/4218448177007666306'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/11/enabling-compression-for-wcf-service.html' title='Enabling Compression for WCF service'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-1488817673198946810</id><published>2011-11-23T06:56:00.001-08:00</published><updated>2011-11-23T06:56:37.262-08:00</updated><title type='text'>Tracing in WCF</title><content type='html'>Tracing in WCF</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/1488817673198946810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/1488817673198946810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1488817673198946810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1488817673198946810'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/11/tracing-in-wcf.html' title='Tracing in WCF'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-1529006112081242905</id><published>2011-11-07T12:30:00.001-08:00</published><updated>2011-11-07T12:30:42.254-08:00</updated><title type='text'>JQuery - Drag N Drop</title><content type='html'>JQuery - Drag N Drop</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/1529006112081242905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/1529006112081242905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1529006112081242905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1529006112081242905'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/11/jquery-drag-n-drop.html' title='JQuery - Drag N Drop'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-8086343668355280786</id><published>2011-06-24T12:00:00.000-07:00</published><updated>2011-07-24T19:38:45.612-07:00</updated><title type='text'>Relevant Patterns</title><content type='html'>This is an excerpt from &quot;Web Application Architecture Guide&quot; from Microsoft&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;!--The following information was generated by Microsoft Office Excel&#39;s Publish as Web Page wizard.--&gt;&lt;!--If the same item is republished from Excel, all information between the DIV tags will be replaced.--&gt;&lt;!-----------------------------&gt;&lt;!--START OF OUTPUT FROM EXCEL PUBLISH AS WEB PAGE WIZARD --&gt;&lt;!-----------------------------&gt; &lt;div id=&quot;Pattern Map_20628&quot; align=&quot;center&quot; publishsource=&quot;Excel&quot;&gt; &lt;table style=&quot;WIDTH: 440pt; BORDER-COLLAPSE: collapse; TABLE-LAYOUT: fixed&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;587&quot;&gt; &lt;colgroup&gt; &lt;col style=&quot;WIDTH: 173pt; mso-width-source: userset; mso-width-alt: 8448&quot; width=&quot;231&quot;&gt; &lt;col style=&quot;WIDTH: 267pt; mso-width-source: userset; mso-width-alt: 13019&quot; width=&quot;356&quot;&gt; &lt;/colgroup&gt;&lt;tbody&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;WIDTH: 173pt; HEIGHT: 15pt&quot; class=&quot;xl6620628&quot; height=&quot;20&quot; width=&quot;231&quot;&gt;&lt;b&gt;&lt;u&gt;Category&lt;/u&gt;&lt;/b&gt;&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; WIDTH: 267pt&quot; class=&quot;xl6620628&quot; width=&quot;356&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;mso-spacerun: yes&quot;&gt; &lt;/span&gt;Relevant Patterns&lt;/u&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Caching&lt;span style=&quot;mso-spacerun: yes&quot;&gt; &lt;/span&gt;&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Cache Dependency&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Page Cache&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Exception Management&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Exception Shielding&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Logging and Instrumentation&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Provider&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Navigation&lt;span style=&quot;mso-spacerun: yes&quot;&gt; &lt;/span&gt;&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Model View Presenter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Model View Controller&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Page  Layout (UI)&lt;span style=&quot;mso-spacerun: yes&quot;&gt; &lt;/span&gt;&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Template View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Composite View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Transform View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Two Step View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Request Processing&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Page Controller&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Front Controller&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Passive View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Supervising Controller&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Service Interface Layer&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Façade&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Service Interface&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Communication&lt;span style=&quot;mso-spacerun: yes&quot;&gt; &lt;/span&gt;&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Intercepting Filter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Pipes and Filters&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Service Interface&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Concurrency and Transactions&lt;span style=&quot;mso-spacerun: yes&quot;&gt; &lt;/span&gt;&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Capture Transaction Details&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Optimistic Offline Lock&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Pessimistic Offline Lock&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Coarse Grained Lock&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Implicit Lock&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Transaction Script&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Coupling and Cohesion&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Adapter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Dependency Injection&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Data  Access&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Active Record&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data Mapper&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Query Object&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Repository&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Row Data Gateway&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Table Data Gateway&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Composition&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Composite View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Transform View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Two-step View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Presentation Entities&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Entity Translator&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;User  Experience&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Asynchronous Callback&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Chain of Responsibility&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;UI  Processing Components&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Model View Controller (MVC)&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Passive View&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Supervisor Controller&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Business Components&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Application Façade&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Chain of Responsibility&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Command&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Business Entities&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Domain Model&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Entity Translator&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Table Module&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Workflows&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data-driven workflow&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Human workflow&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Sequential workflow&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  State-driven workflow&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;General&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Application Service&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data Transfer Object&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Batching&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Parallel Processing&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Partitioning&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Communication&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Duplex&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Fire and Forget&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Reliable Sessions&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Request Response&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Data  Consistency&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Atomic Transactions&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Cross-service Transactions&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Long running transactions&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Messaging Channels&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Channel Adapter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Message Bus&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Messaging Bridge&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Point-to-point Channel&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Publish-subscribe Channel&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Message Construction&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Command Message&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Document Message&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Event Message&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Request-Reply&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Message Endpoint&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Competing Consumer&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Durable Subscriber&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Idempotent Receiver&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Message Dispatcher&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Messaging Gateway&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Messaging Mapper&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Polling Consumer&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Selective Consumer&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Service Activator&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Transactional Client&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Message Protection&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data Confidentiality&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data Integrity&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data Origin Authentication&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Exception Shielding&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Federation&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Replay Protection&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Validation&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Message Routing&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Aggregator&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Content-Based Router&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Dynamic Router&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Message Broker (Hub-and-Spoke)&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Message Filter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Process Manager&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Message Transfomation&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Canonical Data Mapper&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Claim Check&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Content Enricher&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Content Filter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Envelope Wrapper&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Normalizer&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Rest&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Behavior&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Container&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Entity&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Store&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Transaction&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Service Interface&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Remote Façade&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;SOAP&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Data Contracts&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Fault Contracts&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Service Contracts&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Deployment&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Layered Application&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Three-Layered Services Application&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Tiered Distribution&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Three-Tiered Distribution&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Deployment Plan&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Manageability&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Adapter&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Provider&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Performance &amp;amp; Reliability&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Server Clustering&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Load-Balanced Cluster&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Failover Cluster&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt;Security&lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Brokered Authentication&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Direct Authentication&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Federated Authentication (SSO)&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Impersonation and Delegation&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt;•  Trusted Sub-System&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot; height=&quot;20&quot;&gt; &lt;/td&gt; &lt;td style=&quot;BORDER-LEFT: medium none; BORDER-TOP: medium none&quot; class=&quot;xl6520628&quot;&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt&quot; class=&quot;xl1520628&quot; height=&quot;20&quot;&gt;&lt;/td&gt; &lt;td class=&quot;xl1520628&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt&quot; class=&quot;xl1520628&quot; height=&quot;20&quot;&gt;&lt;/td&gt; &lt;td class=&quot;xl1520628&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt&quot; class=&quot;xl1520628&quot; height=&quot;20&quot;&gt;&lt;/td&gt; &lt;td class=&quot;xl1520628&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=&quot;HEIGHT: 15pt&quot; height=&quot;20&quot;&gt; &lt;td style=&quot;HEIGHT: 15pt&quot; class=&quot;xl1520628&quot; height=&quot;20&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Paste here&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/8086343668355280786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/8086343668355280786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/8086343668355280786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/8086343668355280786'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/06/relevant-patterns.html' title='Relevant Patterns'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-1902159629213553228</id><published>2011-06-16T14:10:00.001-07:00</published><updated>2011-06-16T14:10:45.373-07:00</updated><title type='text'>LINQ 360</title><content type='html'>LINQ 360</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/1902159629213553228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/1902159629213553228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1902159629213553228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1902159629213553228'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/06/linq-360.html' title='LINQ 360'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-5321546144178042248</id><published>2011-06-16T14:08:00.000-07:00</published><updated>2011-06-16T14:10:23.689-07:00</updated><title type='text'>Entity Framework, Code First and FluentAPI</title><content type='html'>Entity Framework, Code First and FluentAPI</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/5321546144178042248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/5321546144178042248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5321546144178042248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5321546144178042248'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/06/entity-framework-code-first-and.html' title='Entity Framework, Code First and FluentAPI'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-3882740137595165281</id><published>2011-06-07T11:34:00.000-07:00</published><updated>2011-06-07T11:44:04.225-07:00</updated><title type='text'>Unit Testing framework selection</title><content type='html'>Well after burning couple of hours on internet in the quest for an Unit testing framework , I ended up choosing MSTest + MOQ&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The needs of the project were,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Expressive and easy to learn&lt;/div&gt;&lt;div&gt;2. Ability to support Partial mocks&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Few links that help me make my decision are,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://codevanced.net/post/Mocking-frameworks-comparison.aspx&lt;/div&gt;&lt;div&gt;http://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.html&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://stackoverflow.com/questions/1379230/rhinomock-vs-typemock-vs-nunits-mocking&quot;&gt;http://stackoverflow.com/questions/1379230/rhinomock-vs-typemock-vs-nunits-mocking&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://stackoverflow.com/questions/1379230/rhinomock-vs-typemock-vs-nunits-mocking&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://stackoverflow.com/questions/64242/rhino-mocks-typemock-moq-or-nmock-which-one-do-you-use-and-why&quot;&gt;http://stackoverflow.com/questions/64242/rhino-mocks-typemock-moq-or-nmock-which-one-do-you-use-and-why&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://stackoverflow.com/questions/64242/rhino-mocks-typemock-moq-or-nmock-which-one-do-you-use-and-why&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/3882740137595165281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/3882740137595165281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3882740137595165281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3882740137595165281'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/06/unit-testing-framework-selection.html' title='Unit Testing framework selection'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-4120635112108993008</id><published>2011-06-06T13:20:00.000-07:00</published><updated>2011-06-06T13:21:18.642-07:00</updated><title type='text'>Entity Framework and Code promotion process</title><content type='html'>Entity Framework and Code promotion process</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/4120635112108993008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/4120635112108993008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/4120635112108993008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/4120635112108993008'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/06/entity-framework-and-code-promotion.html' title='Entity Framework and Code promotion process'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-9000884789888725524</id><published>2011-05-18T13:17:00.001-07:00</published><updated>2011-05-20T16:31:35.408-07:00</updated><title type='text'>New features in ASP.Net 4 - Primer</title><content type='html'>New features in ASP.Net 4 - Primer&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. ASP.Net Core services&lt;/div&gt;&lt;div&gt;2. ASP.Net web form&lt;/div&gt;&lt;div&gt;3. ASP.Net MVC&lt;/div&gt;&lt;div&gt;4. Dynamic Data&lt;/div&gt;&lt;div&gt;5. ASP.Net chart control&lt;/div&gt;&lt;div&gt;6. Enhancements of ASP.Net multi-targeting&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ASP.Net Core services&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. web.config file refactoring&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In .the .NET Framework 4, the major configuration elements have been moved to the machine.config file, and applications now inherit these settings. This allows the Web.config file in ASP.NET 4 applications to be empty or to specify only which version of the framework the application is targeting.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Extensible Output Caching&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since the time that ASP.NET 1.0 was released, output caching has enabled developers to store the generated output of pages, controls, and HTTP responses in memory. On subsequent Web requests, ASP.NET can serve content more quickly by retrieving the generated output from memory instead of regenerating the output from scratch. However, this approach has a limitation — generated content always has to be stored in memory. On servers that experience heavy traffic, the memory requirements for output caching can compete with memory requirements for other parts of a Web application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ASP.NET 4 adds extensibility to output caching that enables you to configure one or more custom output-cache providers. Output-cache providers can use any storage mechanism to persist HTML content. These storage options can include local or remote disks, cloud storage, and distributed cache engines.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Output-cache provider extensibility in ASP.NET 4 lets you design more aggressive and more intelligent output-caching strategies for Web sites. For example, you can create an output-cache provider that caches the &quot;Top 10&quot; pages of a site in memory, while caching pages that get lower traffic on disk.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By default, in ASP.NET 4, all HTTP responses, rendered pages, and controls use the in-memory output cache. The &lt;span&gt;&lt;span class=&quot;input&quot;&gt;defaultProvider&lt;/span&gt;&lt;/span&gt; attribute for ASP.NET is &lt;span class=&quot;code&quot;&gt;AspNetInternalProvider&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Auto-Start Web Application&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some Web applications must load large amounts of data or must perform expensive initialization processing before serving the first request. The feature provides a controlled approach for starting up an application pool, initializing an ASP.NET application, and then accepting HTTP requests. It lets you perform expensive application initialization prior to processing the first HTTP request.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4. Permanently Redirecting a page&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;In ASP.NET, developers have traditionally handled requests to old URLs by using the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirect.aspx&quot;&gt;Redirect&lt;/a&gt;&lt;/span&gt; method to forward a request to the new URL. However, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirect.aspx&quot;&gt;Redirect&lt;/a&gt;&lt;/span&gt; method issues an HTTP 302 (Found) response (which is used for a temporary redirect). This results in an extra HTTP round trip.&lt;/div&gt;&lt;div&gt;&lt;p&gt;ASP.NET 4 adds a &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx&quot;&gt;RedirectPermanent&lt;/a&gt;&lt;/span&gt; helper method that makes it easy to issue HTTP 301 (Moved Permanently) responses, as in the following example:&lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet2&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; font-size: 13px; white-space: pre; &quot;&gt;RedirectPermanent(&quot;/newpath/foroldcontent.aspx&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Search engines and other user agents that recognize permanent redirects will store the new URL that is associated with the content, which eliminates the unnecessary round trip made by the browser for temporary redirects.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. Sessions state compression&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By default, ASP.NET provides two options for storing session state across a Web farm. The first option is a session state provider that invokes an out-of-process session state server. The second option is a session state provider that stores data in a Microsoft SQL Server database.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;ASP.NET 4 introduces a new compression option for both kinds of out-of-process session state providers. By using this option, applications that have spare CPU cycles on Web servers can achieve substantial reductions in the size of serialized session state data.&lt;/p&gt;&lt;p&gt;You can set this option using the new &lt;span&gt;&lt;span class=&quot;input&quot;&gt;compressionEnabled&lt;/span&gt;&lt;/span&gt; attribute of the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx&quot;&gt;sessionState&lt;/a&gt; element in the configuration file.&lt;/p&gt;&lt;p&gt;&lt;b&gt;6. Expanding the range of allowable URLs&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Previous versions of ASP.NET constrained URL path lengths to 260 characters, based on the NTFS file-path limit. In ASP.NET 4, you have the option to increase (or decrease) this limit as appropriate for your applications, using two new attributes of the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;httpRuntime&lt;/span&gt;&lt;/span&gt; configuration element. The following example shows these new attributes.&lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div id=&quot;CodeSnippetContainerCode3&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;httpruntime maxrequestpathlength=&quot;260&quot; maxquerystringlength=&quot;2048&quot;&gt;&lt;/httpruntime&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt; In previous versions of ASP.NET, the URL character checks were limited to a fixed set of characters. In ASP.NET 4, you can customize the set of valid characters using the new &lt;span&gt;&lt;span class=&quot;input&quot;&gt;requestPathInvalidChars&lt;/span&gt;&lt;/span&gt; attribute of the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;httpRuntime&lt;/span&gt;&lt;/span&gt; configuration element, as shown in the following example: &lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;httpruntime requestpathinvalidchars=&quot;&amp;lt;,&amp;gt;,*,%,&amp;amp;,:,\,?&quot;&gt;&lt;/httpruntime&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;By default, the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;requestPathInvalidChars&lt;/span&gt;&lt;/span&gt; attribute defines eight characters as invalid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;7. Extensible request validation&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ASP.NET request validation searches incoming HTTP request data for strings that are typically used in cross-site scripting (XSS) attacks. The built-in request validation returns an error only when it finds the most common strings that are used in XSS attacks. Previous attempts to make the XSS validation more aggressive resulted in too many false positives.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In ASP.NET 4, the request validation feature has been made extensible so that you can use custom request-validation logic. To extend request validation, you create a class that derives from the new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx&quot;&gt;System.Web.Util&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;RequestValidator&lt;/a&gt;&lt;/span&gt; class, and you configure the application to use the custom type (in the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;httpRuntime&lt;/span&gt;&lt;/span&gt; section of the Web.config file).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;8. Object caching and Object caching extensibility&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since its first release, ASP.NET has included a powerful in-memory object cache (&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx&quot;&gt;System.Web.Caching&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;Cache&lt;/a&gt;&lt;/span&gt;). The cache implementation has been so popular that it has been used in non-Web applications. However, it is awkward for a Windows Forms or WPF application to include a reference to System.Web.dll just to be able to use the ASP.NET object cache. To make caching available for all applications, the .NET Framework 4 introduces a new assembly, a new namespace, some base types, and a concrete caching implementation. The new System.Runtime.Caching.dll assembly contains a new caching API in the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.caching.aspx&quot;&gt;System.Runtime.Caching&lt;/a&gt;&lt;/span&gt; namespace. The namespace contains two core sets of classes:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Abstract types that provide the foundation for building any type of custom cache implementation. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;A concrete in-memory object cache implementation (the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx&quot;&gt;MemoryCache&lt;/a&gt;&lt;/span&gt; class). &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The public caching APIs in the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.caching.aspx&quot;&gt;System.Runtime.Caching&lt;/a&gt;&lt;/span&gt; namespace have been updated to support development of custom caches, if you have used the ASP.NET &lt;span&gt;&lt;span class=&quot;input&quot;&gt;Cache&lt;/span&gt;&lt;/span&gt; object, you will find familiar concepts in the new APIs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;9. Extensible HTML, URL, and Http header encoding&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;In ASP.NET 4, you can create custom encoding routines for the following common text-encoding tasks:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;HTML encoding.  &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;URL encoding.  &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;HTML attribute encoding.  &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Encoding outbound HTTP headers. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can create a custom encoder by deriving from the new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.util.httpencoder.aspx&quot;&gt;System.Web.Util&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;HttpEncoder&lt;/a&gt;&lt;/span&gt; type and then configuring ASP.NET to use the custom type in the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;httpRuntime&lt;/span&gt;&lt;/span&gt; section of the Web.config file&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;10. Performance Monitoring for Individual Applications in a Single Worker Process&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order to increase the number of Web sites that can be hosted on a single server, many hosters run multiple ASP.NET applications in a single worker process. However, if multiple applications use a single shared worker process, it is difficult for server administrators to identify an individual application that is experiencing problems.&lt;/div&gt;&lt;div&gt;&lt;p&gt;ASP.NET 4 leverages new resource-monitoring functionality introduced by the CLR. To enable this functionality, you can add the following XML configuration snippet to the aspnet.config configuration file. &lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet4&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode4&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?--&gt;  &lt;configuration&gt;    &lt;runtime&gt;      &lt;appdomainresourcemonitoring enabled=&quot;true&quot;&gt;    &lt;/appdomainresourcemonitoring&gt;&lt;/runtime&gt;  &lt;/configuration&gt;  &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;11. jQuery Included with Web Forms and MVC&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;12. Content Delivery Network Support&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Microsoft Ajax Content Delivery Network (CDN) enables you to easily add ASP.NET Ajax and jQuery scripts to your Web applications. For example, you can start using the jQuery library simply by adding a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;script&lt;/span&gt;&lt;/span&gt; element to your page that points to Ajax.microsoft.com, as shown in the following example:&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet5&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode5&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;script src=&quot;http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;By taking advantage of the Microsoft Ajax CDN, you can significantly improve the performance of your Ajax applications.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;asp:scriptmanager id=&quot;sm1&quot; enablecdn=&quot;true&quot; runat=&quot;server&quot;&gt;&lt;/asp:scriptmanager&gt;&lt;/div&gt;&lt;div&gt;[assembly: WebResource(&quot;Example.js&quot;, &quot;application/x-javascript&quot;, CdnPath =&quot;http://contoso.com/app/site/Example.js&quot;)]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;13. ScriptManager Explicit Scripts&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you used the ASP.NET &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.aspx&quot;&gt;ScriptManager&lt;/a&gt;&lt;/span&gt; in earlier versions of ASP.NET, your Web application had to load the entire ASP.NET Ajax Library. By taking advantage of the new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.ajaxframeworkmode.aspx&quot;&gt;AjaxFrameworkMode&lt;/a&gt;&lt;/span&gt; property, you can control exactly which components of the ASP.NET Ajax Library are loaded. For more information, see the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.ajaxframeworkmode.aspx&quot;&gt;AjaxFrameworkMode&lt;/a&gt;&lt;/span&gt; property.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;asp:scriptmanager id=&quot;sm1&quot; ajaxframeworkmode=&quot;&amp;lt;b&amp;gt;Explicit&amp;lt;/b&amp;gt;&quot; runat=&quot;server&quot;&gt;  &lt;scripts&gt;      &lt;asp:scriptreference name=&quot;MicrosoftAjaxCore.js&quot;&gt;      &lt;asp:scriptreference name=&quot;MicrosoftAjaxComponentModel.js&quot;&gt;       &lt;asp:scriptreference name=&quot;MicrosoftAjaxSerialization.js&quot;&gt;      &lt;asp:scriptreference name=&quot;MicrosoftAjaxNetwork.js&quot;&gt;      &lt;/asp:scriptreference&gt;&lt;/asp:scriptreference&gt;&lt;/asp:scriptreference&gt;&lt;/asp:scriptreference&gt;&lt;/scripts&gt;  &lt;/asp:scriptmanager&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;asp:scriptmanager ajaxframeworkmode=&quot;&amp;lt;b&amp;gt;AjaxFrameworkMode&amp;lt;/b&amp;gt;&quot;&gt;&lt;/asp:scriptmanager&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;ASP.Net Web Forms&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Web Forms has been a core feature in ASP.NET since the release of ASP.NET 1.0. Many enhancements have been in this area for ASP.NET 4, such as the following:&lt;/div&gt;&lt;div&gt;&lt;ul xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;li&gt;&lt;p&gt;The ability to set &lt;span&gt;&lt;span class=&quot;input&quot;&gt;meta&lt;/span&gt;&lt;/span&gt; tags.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;More control over view state.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Support for recently introduced browsers and devices.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Easier ways to work with browser capabilities.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Support for using ASP.NET routing with Web Forms. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;More control over generated IDs.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The ability to persist selected rows in data controls.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;More control over rendered HTML in the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;FormView&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span class=&quot;input&quot;&gt;ListView&lt;/span&gt;&lt;/span&gt; controls.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Filtering support for data source controls.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Enhanced support for Web standards and accessibility.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Project template changes.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Setting Meta Tags with the Page.MetaKeywords and Page.MetaDescription Properties&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Two properties have been added to the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.page.aspx&quot;&gt;Page&lt;/a&gt;&lt;/span&gt; class: &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.page.metakeywords.aspx&quot;&gt;MetaKeywords&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.page.metadescription.aspx&quot;&gt;MetaDescription&lt;/a&gt;&lt;/span&gt;. These two properties represent corresponding &lt;span&gt;&lt;span class=&quot;input&quot;&gt;meta&lt;/span&gt;&lt;/span&gt; tags in the HTML rendered for a page, as shown in the following example:&lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet8&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode8&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;   &lt;title&gt;Untitled Page&lt;/title&gt;   &lt;meta name=&quot;keywords&quot; content=&quot;keyword1, keyword2&#39; /&amp;gt;   &amp;lt;meta name=&quot;&gt;  &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;These two properties work like the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.page.title.aspx&quot;&gt;Title&lt;/a&gt;&lt;/span&gt; property does, and they can be set in the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx&quot;&gt;@ Page&lt;/a&gt; directive.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Enabling View State for Individual Controls&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A new property has been added to the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.control.aspx&quot;&gt;Control&lt;/a&gt;&lt;/span&gt; class: &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.control.viewstatemode.aspx&quot;&gt;ViewStateMode&lt;/a&gt;&lt;/span&gt;. You can use this property to disable view state for all controls on a page except those for which you explicitly enable view state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;selflink&quot;&gt;Inherit ==&amp;gt; &lt;/span&gt;&lt;span&gt;Inherit the value of &lt;span&gt;&lt;span class=&quot;selflink&quot;&gt;ViewStateMode&lt;/span&gt;&lt;/span&gt; from the parent &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.control.aspx&quot;&gt;Control&lt;/a&gt;&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;selflink&quot;&gt;Enabled ==&amp;gt; &lt;/span&gt;&lt;span&gt;Enable view state for this control even if the parent control has view state disabled.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;selflink&quot;&gt;Disabled ==&amp;gt; &lt;/span&gt;&lt;span&gt;Disable view state for this control even if the parent control has view state enabled.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Support for Recently Introduced Browsers and Devices&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ASP.NET includes a feature that is named &lt;span class=&quot;parameter&quot;&gt;browser capabilities&lt;/span&gt; that lets you determine the capabilities of the user&#39;s browser. Browser capabilities are represented by the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx&quot;&gt;HttpBrowserCapabilities&lt;/a&gt;&lt;/span&gt; object which is stored in the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.httprequest.browser.aspx&quot;&gt;HttpRequest&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;Browser&lt;/a&gt;&lt;/span&gt; property. Information about a particular browser&#39;s capabilities is defined by a browser definition file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;The browser definition files that are included with ASP.NET 4 are shown in the following list:&lt;/p&gt;&lt;p&gt;•blackberry.browser&lt;/p&gt;&lt;p&gt;•chrome.browser&lt;/p&gt;&lt;p&gt;•Default.browser&lt;/p&gt;&lt;p&gt;•firefox.browser&lt;/p&gt;&lt;p&gt;•gateway.browser&lt;/p&gt;&lt;p&gt;•generic.browser&lt;/p&gt;&lt;p&gt;•ie.browser&lt;/p&gt;&lt;p&gt;•iemobile.browser&lt;/p&gt;&lt;p&gt;•iphone.browser&lt;/p&gt;&lt;p&gt;•opera.browser&lt;/p&gt;&lt;p&gt;•safari.browser&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;4. A New Way to Define Browser Capabilities&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;subsection&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;p&gt;ASP.NET 4 includes a new feature referred to as &lt;span class=&quot;parameter&quot;&gt;browser capabilities providers&lt;/span&gt;. As the name suggests, this lets you build a provider that in turn lets you write custom code to determine browser capabilities.&lt;/p&gt;&lt;p&gt;In ASP.NET version 3.5 Service Pack 1, you define browser capabilities in an XML file. This file resides in a machine-level folder or an application-level folder. Most developers do not need to customize these files, but for those who do, the provider approach can be easier than dealing with complex XML syntax. The provider approach makes it possible to simplify the process by implementing a common browser definition syntax, or a database that contains up-to-date browser definitions, or even a Web service for such a database.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. Routing in ASP.NET 4&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;ASP.NET 4 adds built-in support for routing with Web Forms. Routing is a feature that was introduced with ASP.NET 3.5 SP1 and lets you configure an application to use URLs that are meaningful to users and to search engines because they do not have to specify physical file names. This can make your site more user-friendly and your site content more discoverable by search engines.&lt;/p&gt;&lt;p&gt;For example, the URL for a page that displays product categories in your application might look like the following example:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;http://website/products.aspx?categoryid=12&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;By using routing, you can use the following URL to render the same information:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;http://website/products/software&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The second URL lets the user know what to expect and can result in significantly improved rankings in search engine results.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The new features include the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.routing.pageroutehandler.aspx&quot;&gt;PageRouteHandler&lt;/a&gt;&lt;/span&gt; class is a simple HTTP handler that you use when you define routes. You no longer have to write a custom route handler.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.httprequest.requestcontext.aspx&quot;&gt;HttpRequest&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;RequestContext&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.page.routedata.aspx&quot;&gt;Page&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;RouteData&lt;/a&gt;&lt;/span&gt; properties make it easier to access information that is passed in URL parameters.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The &lt;span&gt;&lt;span class=&quot;input&quot;&gt;RouteUrl&lt;/span&gt;&lt;/span&gt; expression provides a simple way to create a routed URL in markup.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;span class=&quot;input&quot;&gt;The RouteValue&lt;/span&gt;&lt;/span&gt; expression provides a simple way to extract URL parameter values in markup. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.routeparameter.aspx&quot;&gt;RouteParameter&lt;/a&gt;&lt;/span&gt; class makes it easier to pass URL parameter values to a query for a data source control (similar to &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formparameter.aspx&quot;&gt;FormParameter&lt;/a&gt;&lt;/span&gt;).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;You no longer have to change the Web.config file to enable routing.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;6. Setting Client IDs&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx&quot;&gt;ClientIDMode&lt;/a&gt;&lt;/span&gt; property makes it easier to write client script that references HTML elements rendered for server controls. Increasing use of Microsoft Ajax makes the need to do this more common.&lt;/p&gt;&lt;p&gt;You were not always able to predict what id values ASP.NET would generate, or ASP.NET could generate very long id values. The problem was especially difficult for data controls that would generate multiple rows for a single instance of the control in your markup.&lt;/p&gt;&lt;p&gt;ASP.NET 4 adds two new algorithms for generating &lt;span&gt;&lt;span class=&quot;input&quot;&gt;id&lt;/span&gt;&lt;/span&gt; attributes. These algorithms can generate &lt;span&gt;&lt;span class=&quot;input&quot;&gt;id&lt;/span&gt;&lt;/span&gt; attributes that are easier to work with in client script because they are more predictable and that are easier to work with because they are simpler. For more information about how to use the new algorithms, see the following topics:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/1d04y8ss.aspx&quot;&gt;ASP.NET Web Server Control Identification&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd381611.aspx&quot;&gt;Walkthrough: Making Data-Bound Controls Easier to Access from JavaScript&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd483476.aspx&quot;&gt;Walkthrough: Making Controls Located in Web User Controls Easier to Access from JavaScript&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd410598.aspx&quot;&gt;How to: Access Controls from JavaScript by ID&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;7. Persisting Row Selection in Data Controls&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx&quot;&gt;GridView&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx&quot;&gt;ListView&lt;/a&gt;&lt;/span&gt; controls enable users to select a row. In previous versions of ASP.NET, row selection was based on the row index on the page. For example, if you select the third item on page 1 and then move to page 2, the third item on page 2 is selected. In most cases, is more desirable not to select any rows on page 2. ASP.NET 4 supports Persisted Selection, a new feature that was initially supported only in Dynamic Data projects in the .NET Framework 3.5 SP1. When this feature is enabled, the selected item is based on the row data key. This means that if you select the third row on page 1 and move to page 2, nothing is selected on page 2. When you move back to page 1, the third row is still selected. This is a much more natural behavior than the behavior in earlier versions of ASP.NET. Persisted selection is now supported for the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx&quot;&gt;GridView&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx&quot;&gt;ListView&lt;/a&gt;&lt;/span&gt; controls in all projects. You can enable this feature in the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx&quot;&gt;GridView&lt;/a&gt;&lt;/span&gt; control, for example, by setting the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.enablepersistedselection.aspx&quot;&gt;EnablePersistedSelection&lt;/a&gt;&lt;/span&gt; property, as shown in the following example:&lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet9&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode9&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;asp:gridview id=&quot;GridView2&quot; runat=&quot;server&quot; persistedselection=&quot;true&quot;&gt; &lt;/asp:gridview&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; font-size: 13px; white-space: pre; &quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;8. FormView Control Enhancements&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.aspx&quot;&gt;FormView&lt;/a&gt;&lt;/span&gt; control is enhanced to make it easier to style the content of the control with CSS. In previous versions of ASP.NET, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.aspx&quot;&gt;FormView&lt;/a&gt;&lt;/span&gt; control rendered it contents using an item template. This made styling more difficult in the markup because unexpected table row and table cell tags were rendered by the control. The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.aspx&quot;&gt;FormView&lt;/a&gt;&lt;/span&gt; control supports &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.renderoutertable.aspx&quot;&gt;RenderOuterTable&lt;/a&gt;&lt;/span&gt;, a property in ASP.NET 4. When this property is set to &lt;span&gt;&lt;span class=&quot;input&quot;&gt;false&lt;/span&gt;&lt;/span&gt;, as show in the following example, the table tags are not rendered. This makes it easier to apply CSS style to the contents of the control. &lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet10&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode10&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;asp:formview id=&quot;FormView1&quot; runat=&quot;server&quot; rendertable=&quot;false&quot;&gt; &lt;/asp:formview&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;For more information, see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms227992.aspx&quot;&gt;FormView Web Server Control Overview&lt;/a&gt;&lt;/span&gt;. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;9. ListView Control Enhancements&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The &lt;span&gt;&lt;span class=&quot;input&quot;&gt;ListView&lt;/span&gt;&lt;/span&gt; control, which was introduced in ASP.NET 3.5, has all the functionality of the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;GridView&lt;/span&gt;&lt;/span&gt; control while giving you complete control over the output. This control has been made easier to use in ASP.NET 4. The earlier version of the control required that you specify a layout template that contained a server control with a known ID. The following markup shows a typical example of how to use the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;ListView&lt;/span&gt;&lt;/span&gt; control in ASP.NET 3.5.&lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet11&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode11&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;asp:listview id=&quot;ListView1&quot; runat=&quot;server&quot;&gt;     &lt;layouttemplate&gt;         &lt;asp:placeholder id=&quot;ItemPlaceHolder&quot; runat=&quot;server&quot;&gt;&lt;/asp:placeholder&gt;     &lt;/layouttemplate&gt;     &lt;itemtemplate&gt;         &amp;lt;% Eval(&quot;LastName&quot;)%&amp;gt;     &lt;/itemtemplate&gt; &lt;/asp:listview&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;In ASP.NET 4, the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;ListView&lt;/span&gt;&lt;/span&gt; control does not require a layout template. The markup shown in the previous example can be replaced with the following markup:&lt;/p&gt;&lt;div class=&quot;LW_CodeSnippetContainer&quot; xmlns=&quot;&quot;&gt;&lt;a name=&quot;CodeSpippet12&quot;&gt;&lt;/a&gt;&lt;div class=&quot;LW_CodeSnippetContainerCodeCollection&quot;&gt;&lt;div class=&quot;LW_CodeSnippetToolBar&quot;&gt;&lt;div style=&quot;valign: top;&quot; class=&quot;LW_CodeSnippetToolBarText&quot;&gt;&lt;a style=&quot;display: block;&quot; title=&quot;Copy to clipboard.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/s57a598e.aspx&quot; name=&quot;CodeSnippetname&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;CodeSnippetContainerCode12&quot; class=&quot;LW_CodeSnippetContainerCode&quot;&gt;&lt;div style=&quot;color: black;&quot;&gt;&lt;pre&gt;&lt;asp:listview id=&quot;ListView1&quot; runat=&quot;server&quot;&gt;     &lt;itemtemplate&gt;         &amp;lt;% Eval(&quot;LastName&quot;)%&amp;gt;     &lt;/itemtemplate&gt; &lt;/asp:listview&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: medium; &quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 0.7em; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot; cellspacing=&quot;2&quot; style=&quot;font-size: 0.7em; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; &quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 232px; &quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td colspan=&quot;6&quot; align=&quot;center&quot;&gt;&lt;b&gt;Supported Funcationalities&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;font-weight: bold; &quot;&gt;&lt;td style=&quot;width: 232px; &quot;&gt;Control&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Paging&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Data Grouping&lt;/td&gt;&lt;td style=&quot;width: 259px; &quot;&gt;Provide Flexible Layout&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Update,Delete&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Insert&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Sorting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 232px; &quot;&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx&quot; style=&quot;color: rgb(3, 78, 250); &quot;&gt;ListView&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;width: 125px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 135px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 259px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;supported&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 232px; &quot;&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx&quot; style=&quot;color: rgb(3, 78, 250); &quot;&gt;GridView&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;width: 125px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 135px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 259px; &quot;&gt;Not Supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not Supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;supported&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 232px; &quot;&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.aspx&quot; style=&quot;color: rgb(3, 78, 250); &quot;&gt;DataList&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;width: 125px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 135px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 259px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not supported&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 232px; &quot;&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx&quot; style=&quot;color: rgb(3, 78, 250); &quot;&gt;Repeater&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;width: 125px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 135px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 259px; &quot;&gt;supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not supported&lt;/td&gt;&lt;td style=&quot;width: 177px; &quot;&gt;Not supported&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;10. Filtering Data with the QueryExtender Control&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;A very common task for developers who create data-driven Web pages is to filter data. This traditionally has been performed by building Where clauses in data source controls. This approach can be complicated, and in some cases the Where syntax does not let you take advantage of the full functionality of the underlying database. &lt;/p&gt;&lt;p&gt;To make filtering easier, a new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.queryextender.aspx&quot;&gt;QueryExtender&lt;/a&gt;&lt;/span&gt; control has been added in ASP.NET 4. This control can be added to &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.aspx&quot;&gt;EntityDataSource&lt;/a&gt;&lt;/span&gt; or &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linqdatasource.aspx&quot;&gt;LinqDataSource&lt;/a&gt;&lt;/span&gt; controls in order to filter the data returned by these controls. Because the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.queryextender.aspx&quot;&gt;QueryExtender&lt;/a&gt;&lt;/span&gt; control relies on LINQ, but you do not to need to know how to write LINQ queries to use the query extender. &lt;/p&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.queryextender.aspx&quot;&gt;QueryExtender&lt;/a&gt;&lt;/span&gt; control supports a variety of filter options. The following lists &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.queryextender.aspx&quot;&gt;QueryExtender&lt;/a&gt;&lt;/span&gt; filter options.&lt;/p&gt;&lt;div class=&quot;caption&quot;&gt;&lt;/div&gt;&lt;div class=&quot;tableSection&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;&lt;p&gt;Term&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt;Definition&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.expressions.searchexpression.aspx&quot;&gt;SearchExpression&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Searches a field or fields for string values and compares them to a specified string value.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.expressions.rangeexpression.aspx&quot;&gt;RangeExpression&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Searches a field or fields for values in a range specified by a pair of values. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.expressions.propertyexpression.aspx&quot;&gt;PropertyExpression&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Compares a specified value to a property value in a field. If the expression evaluates to &lt;span&gt;&lt;span class=&quot;input&quot;&gt;true&lt;/span&gt;&lt;/span&gt;, the data that is being examined is returned.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.expressions.orderbyexpression.aspx&quot;&gt;OrderByExpression&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Sorts data by a specified column and sort direction.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.expressions.customexpression.aspx&quot;&gt;CustomExpression&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Calls a function that defines custom filter in the page. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;For more information, see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.queryextender.aspx&quot;&gt;QueryExtender&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd537671.aspx&quot;&gt;QueryExtender Web Server Control Overview&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;11. Enhanced support for Web standards and Accessibility&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Earlier versions of ASP.NET controls sometimes render markup that does not conform to HTML, XHTML, or accessibility standards. ASP.NET 4 eliminates most of these exceptions. &lt;/p&gt;&lt;p&gt;For details about how the HTML that is rendered by each control meets accessibility standards, see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms227996.aspx&quot;&gt;ASP.NET Controls and Accessibility&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;12. CSS for Controls that Can be Disabled&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In ASP.NET 3.5, when a control is disabled (see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.enabled.aspx&quot;&gt;WebControl&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;Enabled&lt;/a&gt;&lt;/span&gt;), a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;disabled&lt;/span&gt;&lt;/span&gt; attribute is added to the rendered HTML element. For example, the following markup creates a &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.label.aspx&quot;&gt;Label&lt;/a&gt;&lt;/span&gt; control that is disabled:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;asp:label id=&quot;Label1&quot; runat=&quot;server&quot; span=&quot;&quot;&gt;&lt;/asp:label&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;  Text=&quot;Test&quot; Enabled=&quot;false&quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;In ASP.NET 3.5, the previous control settings generate the following HTML:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;span id=&quot;Label1&quot; disabled=&quot;disabled&quot;&gt;Test&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;In HTML 4.01, the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;disabled&lt;/span&gt;&lt;/span&gt; attribute is not considered valid on &lt;span&gt;&lt;span class=&quot;input&quot;&gt;span&lt;/span&gt;&lt;/span&gt; elements. It is valid only on &lt;span&gt;&lt;span class=&quot;input&quot;&gt;input&lt;/span&gt;&lt;/span&gt; elements because it specifies that they cannot be accessed. On display-only elements such as &lt;span&gt;&lt;span class=&quot;input&quot;&gt;span&lt;/span&gt;&lt;/span&gt; elements, browsers typically support rendering for a disabled appearance, but a Web page that relies on this non-standard behavior is not robust according to accessibility standards. &lt;/p&gt;&lt;p&gt;For display-only elements, you should use CSS to indicate a disabled visual appearance. Therefore, by default ASP.NET 4 generates the following HTML for the control settings shown previously:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;span id=&quot;Label1&quot; class=&quot;aspNetDisabled&quot;&gt;Test&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;You can change the value of the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;class&lt;/span&gt;&lt;/span&gt; attribute that is rendered by default when a control is disabled by setting the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.disabledcssclass.aspx&quot;&gt;DisabledCssClass&lt;/a&gt;&lt;/span&gt; property.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;13. CSS for Validation Controls&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In ASP.NET 3.5, validation controls render a default color of &lt;span&gt;&lt;span class=&quot;input&quot;&gt;red&lt;/span&gt;&lt;/span&gt; as an inline style. For example, the following markup creates a &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx&quot;&gt;RequiredFieldValidator&lt;/a&gt;&lt;/span&gt; control:&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;asp:requiredfieldvalidator id=&quot;RequiredFieldValidator1&quot; runat=&quot;server&quot; span=&quot;&quot;&gt;&lt;/asp:requiredfieldvalidator&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;  ErrorMessage=&quot;Required Field&quot; ControlToValidate=&quot;RadioButtonList1&quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;ASP.NET 3.5 renders the following HTML for the validator control:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;span id=&quot;RequiredFieldValidator1&quot; span=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;  style=&quot;color:Red;visibility:hidden;&quot;&amp;gt;RequiredFieldValidator&lt;/span&gt;&lt;/p&gt;&lt;p&gt;By default, ASP.NET 4 does not render an inline style to set the color to red. An inline style is used only to hide or show the validator, as shown in the following example:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;span id=&quot;RequiredFieldValidator1&quot; span=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;  style&quot;visibility:hidden;&quot;&amp;gt;RequiredFieldValidator&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Therefore, ASP.NET 4 does not automatically show error messages in red. For information about how to use CSS to specify a visual style for a validation control, see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/7kh55542.aspx&quot;&gt;Validating User Input in ASP.NET Web Pages&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;14. CSS for the Hidden Fields Div Element&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;ASP.NET uses hidden fields to store state information such as view state and control state. These hidden fields are contained by a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;div&lt;/span&gt;&lt;/span&gt; element. In ASP.NET 3.5, this &lt;span&gt;&lt;span class=&quot;input&quot;&gt;div&lt;/span&gt;&lt;/span&gt; element does not have a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;class&lt;/span&gt;&lt;/span&gt; attribute or an &lt;span&gt;&lt;span class=&quot;input&quot;&gt;id&lt;/span&gt;&lt;/span&gt; attribute. Therefore, CSS rules that affect all &lt;span&gt;&lt;span class=&quot;input&quot;&gt;div&lt;/span&gt;&lt;/span&gt; elements could unintentionally cause this &lt;span&gt;&lt;span class=&quot;input&quot;&gt;div&lt;/span&gt;&lt;/span&gt; to be visible. To avoid this problem, ASP.NET 4 renders the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;div&lt;/span&gt;&lt;/span&gt; element for hidden fields with a CSS class that you can use to differentiate the hidden fields &lt;span&gt;&lt;span class=&quot;input&quot;&gt;div&lt;/span&gt;&lt;/span&gt; from others. The new class&lt;span&gt;&lt;span class=&quot;input&quot;&gt; &lt;/span&gt;&lt;/span&gt;value is shown in the following example:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;aspNetHidden&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;15. CSS for the Table, Image, and ImageButton Controls&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;By default, in ASP.NET 3.5, some controls set the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;border&lt;/span&gt;&lt;/span&gt; attribute of rendered HTML to zero (0). The following example shows HTML that is generated by the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.table.aspx&quot;&gt;Table&lt;/a&gt;&lt;/span&gt; control in ASP.NET 3.5:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.image.aspx&quot;&gt;Image&lt;/a&gt;&lt;/span&gt; control and the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.imagebutton.aspx&quot;&gt;ImageButton&lt;/a&gt;&lt;/span&gt; control also do this. Because this is not necessary and provides visual formatting information that should be provided by using CSS, the attribute is not generated in ASP.NET 4.&lt;/p&gt;&lt;p&gt;&lt;b&gt;16. CSS for the UpdatePanel and UpdateProgress Controls&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In ASP.NET 3.5, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.aspx&quot;&gt;UpdatePanel&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.updateprogress.aspx&quot;&gt;UpdateProgress&lt;/a&gt;&lt;/span&gt; controls do not support expando attributes. This makes it impossible to set a CSS class on the HTML&lt;span&gt;&lt;span class=&quot;input&quot;&gt; &lt;/span&gt;&lt;/span&gt;elements that they render. In ASP.NET 4 these controls have been changed to accept expando attributes, as shown in the following example:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;asp:updatepanel runat=&quot;server&quot; class=&quot;myStyle&quot;&gt;&lt;/asp:updatepanel&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The following HTML is rendered for this markup:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;ctl00_MainContent_UpdatePanel1&quot; class=&quot;expandoclass&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;17. Eliminating Unnecessary Outer Tables&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In ASP.NET 3.5, the HTML that is rendered for the following controls is wrapped in a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;table&lt;/span&gt;&lt;/span&gt; element whose purpose is to apply inline styles to the entire control:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.aspx&quot;&gt;FormView&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.aspx&quot;&gt;Login&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery.aspx&quot;&gt;PasswordRecovery&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.changepassword.aspx&quot;&gt;ChangePassword&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you use templates to customize the appearance of these controls, you can specify CSS styles in the markup that you provide in the templates. In that case, no extra outer table is required. In ASP.NET 4, you can prevent the table from being rendered by setting the new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.renderoutertable.aspx&quot;&gt;RenderOuterTable&lt;/a&gt;&lt;/span&gt; property to &lt;span&gt;&lt;span class=&quot;input&quot;&gt;false&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;18. Layout Templates for Wizard Controls&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In ASP.NET 3.5, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.wizard.aspx&quot;&gt;Wizard&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.createuserwizard.aspx&quot;&gt;CreateUserWizard&lt;/a&gt;&lt;/span&gt; controls generate an HTML &lt;span&gt;&lt;span class=&quot;input&quot;&gt;table&lt;/span&gt;&lt;/span&gt; element that is used for visual formatting. In ASP.NET 4 you can use a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;LayoutTemplate&lt;/span&gt;&lt;/span&gt; element to specify the layout. If you do this, the HTML &lt;span&gt;&lt;span class=&quot;input&quot;&gt;table&lt;/span&gt;&lt;/span&gt; element is not generated. In the template, you create placeholder controls to indicate where items should be dynamically inserted into the control. (This is similar to how the template model for the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx&quot;&gt;ListView&lt;/a&gt;&lt;/span&gt; control works.) For more information, see the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.wizard.layouttemplate.aspx&quot;&gt;Wizard&lt;span xmlns=&quot;&quot;&gt;.&lt;/span&gt;LayoutTemplate&lt;/a&gt;&lt;/span&gt; property.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;19. New HTML Formatting Options for the CheckBoxList and RadioButtonList Controls&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;ASP.NET 3.5 uses HTML table elements to format the output for the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx&quot;&gt;CheckBoxList&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobuttonlist.aspx&quot;&gt;RadioButtonList&lt;/a&gt;&lt;/span&gt; controls. To provide an alternative that does not use tables for visual formatting, ASP.NET 4 adds two new options to the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeatlayout.aspx&quot;&gt;RepeatLayout&lt;/a&gt;&lt;/span&gt; enumeration:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeatlayout.aspx&quot;&gt;UnorderedList&lt;/a&gt;&lt;/span&gt;. This option causes the HTML output to be formatted by using &lt;span&gt;&lt;span class=&quot;input&quot;&gt;ul&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span class=&quot;input&quot;&gt;li&lt;/span&gt;&lt;/span&gt; elements instead of a table.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeatlayout.aspx&quot;&gt;OrderedList&lt;/a&gt;&lt;/span&gt;. This option causes the HTML output to be formatted by using &lt;span&gt;&lt;span class=&quot;input&quot;&gt;ol&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span class=&quot;input&quot;&gt;li&lt;/span&gt;&lt;/span&gt; elements instead of a table.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For examples of HTML that is rendered for the new options, see the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeatlayout.aspx&quot;&gt;RepeatLayout&lt;/a&gt;&lt;/span&gt; enumeration.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;20. Header and Footer Elements for the Table Control&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In ASP.NET 3.5, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.table.aspx&quot;&gt;Table&lt;/a&gt;&lt;/span&gt; control can be configured to render &lt;span&gt;&lt;span class=&quot;input&quot;&gt;thead&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span class=&quot;input&quot;&gt;tfoot&lt;/span&gt;&lt;/span&gt; elements by setting the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.tablerow.tablesection.aspx&quot;&gt;TableSection&lt;/a&gt;&lt;/span&gt; property of the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.tableheaderrow.aspx&quot;&gt;TableHeaderRow&lt;/a&gt;&lt;/span&gt; class and the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.tablefooterrow.aspx&quot;&gt;TableFooterRow&lt;/a&gt;&lt;/span&gt; class. In ASP.NET 4 these properties are set to the appropriate values by default.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;21. CSS and ARIA support for Menu control&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;In ASP.NET 3.5, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx&quot;&gt;Menu&lt;/a&gt;&lt;/span&gt; control uses HTML &lt;span&gt;&lt;span class=&quot;input&quot;&gt;table&lt;/span&gt;&lt;/span&gt; elements for visual formatting, and in some configurations it is not keyboard-accessible. ASP.NET 4 addresses these problems and improves accessibility in the following ways:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The generated HTML is structured as an unordered list (&lt;span&gt;&lt;span class=&quot;input&quot;&gt;ul&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span class=&quot;input&quot;&gt;li&lt;/span&gt;&lt;/span&gt; elements).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CSS is used for visual formatting.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The menu behaves in accordance with ARIA standards for keyboard access. You can use arrow keys to navigate menu items. (For information about ARIA, see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms228004.aspx&quot;&gt;Accessibility in Visual Studio and ASP.NET&lt;/a&gt;&lt;/span&gt;.)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ARIA role and property attributes are added to the generated HTML. (Attributes are added by using JavaScript instead of included in the HTML, to avoid generating HTML that would cause markup validation errors.)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Styles for the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx&quot;&gt;Menu&lt;/a&gt;&lt;/span&gt; control are rendered in a &lt;span&gt;&lt;span class=&quot;input&quot;&gt;style&lt;/span&gt;&lt;/span&gt; block at the top of the page, instead of inline with the rendered HTML elements. If you want to use a separate CSS file so that you can modify the menu styles, you can set the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx&quot;&gt;Menu&lt;/a&gt;&lt;/span&gt; control&#39;s new &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.includestyleblock.aspx&quot;&gt;IncludeStyleBlock&lt;/a&gt;&lt;/span&gt; property to &lt;span&gt;&lt;span class=&quot;input&quot;&gt;false&lt;/span&gt;&lt;/span&gt;, in which case the style block is not generated. &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;22. Valid XHTML for the HtmlForm Control&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In ASP.NET 3.5, the &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlform.aspx&quot;&gt;HtmlForm&lt;/a&gt;&lt;/span&gt; control (which is created implicitly by the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;&lt;form runat=&quot;server&quot;&gt;&lt;/form&gt;&lt;/span&gt;&lt;/span&gt; tag) renders an HTML &lt;span&gt;&lt;span class=&quot;input&quot;&gt;form&lt;/span&gt;&lt;/span&gt; element that has both &lt;span&gt;&lt;span class=&quot;input&quot;&gt;name&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span class=&quot;input&quot;&gt;id&lt;/span&gt;&lt;/span&gt; attributes. The &lt;span&gt;&lt;span class=&quot;input&quot;&gt;name&lt;/span&gt;&lt;/span&gt; attribute is deprecated in XHTML 1.1. Therefore, this control does not render the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;name&lt;/span&gt;&lt;/span&gt; attribute in ASP.NET 4.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;23. Maintaining Backward Compatibility in Control Rendering&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;An existing ASP.NET Web site might have code in it that assumes that controls are rendering HTML the way they do in ASP.NET 3.5. To avoid causing backward compatibility problems when you upgrade the site to ASP.NET 4, you can have ASP.NET continue to generate HTML the way it does in ASP.NET 3.5 after you upgrade the site. To do so, you can set the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;controlRenderingCompatibilityVersion&lt;/span&gt;&lt;/span&gt; attribute of the &lt;span&gt;&lt;span class=&quot;input&quot;&gt;pages&lt;/span&gt;&lt;/span&gt; element to &quot;3.5&quot; in the Web.config file of an ASP.NET 4 Web site, as shown in the following example:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;system.web&gt;&lt;/system.web&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;  &lt;pages controlrenderingcompatibilityversion=&quot;3.5&quot;&gt;&lt;/pages&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;code&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;If this setting is omitted, the default value is the same as the version of ASP.NET that the Web site targets. (For information about multi-targeting in ASP.NET, see &lt;span&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb398791.aspx&quot;&gt;.NET Framework Multi-Targeting for ASP.NET Web Projects&lt;/a&gt;&lt;/span&gt;.)&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;24. Project Template Changes&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;ASP.Net MVC&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ASP.Net MVC comes as separate release and is not part of core .Net framework release. New features of ASP.Net MVC 3 could be found at &lt;a href=&quot;http://www.asp.net/mvc/mvc3&quot;&gt;http://www.asp.net/mvc/mvc3&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table id=&quot;Table2&quot; border=&quot;0&quot;&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/9000884789888725524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/9000884789888725524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/9000884789888725524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/9000884789888725524'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/new-features-in-aspnet-4-primer.html' title='New features in ASP.Net 4 - Primer'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-6223103552535345241</id><published>2011-05-16T15:04:00.000-07:00</published><updated>2011-05-16T16:49:28.351-07:00</updated><title type='text'>New features in .Net 4 - Primer</title><content type='html'>New features in.Net 4 are,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;C# Optional and Named Parameters&lt;/li&gt;&lt;li&gt;Dynamic&lt;/li&gt;&lt;li&gt;Dynamic and Functional Language Support&lt;/li&gt;&lt;li&gt;Parallel Processing&lt;/li&gt;&lt;li&gt;Parallel LINQ (PLINQ)&lt;/li&gt;&lt;li&gt;Task Parallel Library (TPL) &lt;/li&gt;&lt;li&gt;Managed Extensibility Framework (MEF)&lt;/li&gt;&lt;li&gt;Distributed Caching with Velocity &lt;/li&gt;&lt;li&gt;ASP.Net MVC&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The Common Language Runtime (CLR) is Microsoft’s implementation of the Common Language &lt;/div&gt;&lt;div&gt;Infrastructure (CLI). The CLI is an open standard that defines how different languages can compile to an intermediate bytecode for execution on virtual machines on various platforms.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Essentially, C#, VB .NET, and other .NET languages compile to Common Intermediate Language (CIL) and are executed by the CLR.This means that any platform with an implementation of the CLR can execute your code with zero changes.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;C# Optional and Named Parameters &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;If you have a method that has multiple optional parameters, you can provide names for the &lt;/div&gt;&lt;div&gt;parameters you do want to supply in the form (name : value),&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;public static void Test(int id, string foo=&quot;bar&quot;, char initial=&#39;a&#39;)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;Console.WriteLine(&quot;ID: {0}&quot;, id);&lt;/div&gt;&lt;div&gt;Console.WriteLine(&quot;Foo: {0}&quot;, foo);&lt;/div&gt;&lt;div&gt;Console.WriteLine(&quot;Initial: {0}&quot;, initial);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;Test(1, initial : &#39;z&#39;);&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Named parameters have to appear after required parameters in method calls; however, they can be provided in any order therein.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Dynamic&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A better way of doing reflection &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;object reverseLib = InitReverseLib();&lt;/div&gt;&lt;div&gt;type reverseType = reverseLib.GetType();&lt;/div&gt;&lt;div&gt;object output = reverseType.InvokeMember( &quot;FlipString&quot;, BindingFlags.InvokeMethod, null, new object[] { &quot;No, sir, away! A papaya war is on!&quot; });&lt;/div&gt;&lt;div&gt;Console.WriteLine(output.ToString());&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Can be done like,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;dynamic reverseLib = InitReverseLib();&lt;/div&gt;&lt;div&gt;Console.WriteLine(reverseLib.FlipString(&quot;No, sir, away! A papaya war is on!&quot;));&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;For the uninitiated, duck typing means “If it looks like a duck and quacks like a duck, it must be a duck.” It refers to the ability of dynamic languages to treat objects  the same if they have the same method signatures. For example, if class A has methods Foo and Bar and class B has methods Foo and Bar, then class C can treat A and B identically since they “look” the same. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Dynamic and Functional Language Support&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;• IronPython &lt;/div&gt;&lt;div&gt;• IronRuby &lt;/div&gt;&lt;div&gt;• F# &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Parallel Processing&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Parallel LINQ (PLINQ) &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;PLINQ queries implement the IParallelEnumerable&lt;t&gt; interface; as such, the runtime distributes &lt;/t&gt;&lt;/div&gt;&lt;div&gt;the workload across available cores or processors. Listing 1–10 describes a typical LINQ query that uses &lt;/div&gt;&lt;div&gt;the standard processing model. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;return mySearch.Where(x =&amp;gt; myCustomFilter(x));&lt;/div&gt;&lt;div&gt;return mySearch.AsParallel().Where(x =&amp;gt; myCustomFilter(x));&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Task Parallel Library (TPL) &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The TPL provides constructs familiar to developers, such as For and ForEach loops, but calls them via the parallel libraries. The runtime handles the rest for you, hiding the  details behind the abstraction.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;// declares an array of integers with 10,000 elements&lt;/div&gt;&lt;div&gt;int[] myArray = new int[10000];&lt;/div&gt;&lt;div&gt;for(int index=0; index&amp;lt;10000; index++)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;// take the current index raised to the 3rd power and find the square root of it&lt;/div&gt;&lt;div&gt;myArray[index] = Math.Sqrt(Math.Pow(myArray[index], 3));&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;can be done like,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;// declares an array of integers with 10,000 elements&lt;/div&gt;&lt;div&gt;int[] myArray = new int[10000];&lt;/div&gt;&lt;div&gt;Parallel.For(0, 10000, delegate(int index)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;// take the current index raised to the 3rd power and find the square root of it&lt;/div&gt;&lt;div&gt;myArray[index] = Math.Sqrt(Math.Pow(myArray[index], 3));&lt;/div&gt;&lt;div&gt;});&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Managed Extensibility Framework (MEF)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Fundamentally, MEF exposes ComposableParts, Imports, and Exports, which manage instances of extensions to your application. The MEF core provides methods to allow discovery of extensions and  handles proper loading (as well as ensuring that extensions are loaded in the correct order). The nature  of extensions is exposed via metadata and attributes, which should be very familiar territory to .NET  developers and allows for a very consistent usage across .NET applications. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Distributed Caching with Velocity &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Although the in-memory .NET cache is both  convenient and fast, the hit ratio is terribly low and not a viable solution in a multiserver situation.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Velocity is Microsoft’s answer to that problem, allowing developers to set up distributed cache servers that hold data in-memory; objects stored in the cache do not have to be retrieved from potentially expensive database calls, resulting in greater availability and a better distribution of workload.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Hit ratio defines the number of times an object was successfully retrieved from the cache (a cache hit) versus how many times it could not be (a miss). &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;In a distributed environment, one or more caching servers sit separately from the web servers and database servers. The purpose of these servers is to provide extremely quick access to frequently used resources and data, reducing the load incurred by expensive database calls and operations. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;With situations such as distributed caching, it’s a good idea to hide the implementation details of the cache behind a custom abstraction (in this case, CMSCache). If at some point you decide that Velocity is not for you and you would rather use Memcached or NCache, it’s much easier to modify or extend your caching classes than to modify every area in your application where caching is used. Save yourself the headache, and hide the guts out of sight. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;ASP.Net MVC&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The traditional WebForms model is meant to solve the problem of maintaining state on a web page and the HTML output rendered by .NET controls (Buttons,  GridViews, and so on) was in no way standards-compliant, and at the time the options were a bit limited  in how to resolve these problems. In the years since, Microsoft has definitely cleaned the markup that &lt;/div&gt;&lt;div&gt;standard .NET controls produce, but ViewState remains a critical component in the WebForms solution. ViewState is Microsoft’s primary way of preserving state information between page requests. It consists of one or more hidden input fields &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The problem with ViewState is that it can get tremendously large very quickly. Try placing several GridViews with paging inside ASP.NET AJAX UpdatePanels and view the source of your page as you  navigate; it becomes obvious that the ViewState is significantly bloating the size of the page that the user receives. Worse, the ViewState appears at the top of the page, potentially putting a large roadblock between you and content that is search engine–friendly; search engines typically index only a particular number of characters in a page’s content, and if 5,000 or more characters are wasted on content-less  ViewState data, that’s 5,000 fewer characters that a potential audience could see. ViewState is not for sensitive information. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Model View Controller is designed to solve all those problems and return to .NET developers clean, standardized markup using traditional HTML elements as well as the complete elimination of ViewState. The Model aspect refers to the data source of the application, which for our purposes will be a SQL  database. The Controller is the brain of the operation, fetching the appropriate information from the Model and feeding it to the View, which is our user interface. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt; In the MVC world, the page itself is quite dumb, capable of very little without being told. The View relies on being fed complete state information from the Controller and makes no decisions on its own. The result is a clean separation of concerns, a lightweight page model, and 100 percent control over the markup on your applications. The biggest difference is that in MVP, the UI is responsible for handling user input. In MVC, this is handled by the controller. Who exactly handles the input and decides what logic to execute in an application is actually a very big &lt;/div&gt;&lt;div&gt;implementation decision. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/6223103552535345241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/6223103552535345241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/6223103552535345241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/6223103552535345241'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/new-features-on-net-4.html' title='New features in .Net 4 - Primer'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-6906049742906114791</id><published>2011-05-11T09:01:00.000-07:00</published><updated>2011-05-13T13:22:11.001-07:00</updated><title type='text'>Common Project Management Challenges</title><content type='html'>&lt;div&gt;Few of the common project management challenges are,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1. Geographically dispersed project teams&lt;div&gt;2. Using the wrong tool for the job&lt;/div&gt;&lt;div&gt;3. Overbooked resource&lt;/div&gt;&lt;div&gt;4. Wasting time looking for project assets&lt;/div&gt;&lt;div&gt;5. Too much time spent in project status meeting&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Geographically dispersed project teams&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Projects are inherently collaborative efforts, and by their very nature project teams are usually comprised of multiple team members, often incorporating multiple organizations and multiple locations. It is essential to manage this asynchronous process well. A centralized &lt;/span&gt;&lt;strong&gt;&lt;a href=&quot;http://www.projectinsight.net/default.aspx&quot; target=&quot;_blank&quot; class=&quot;external&quot; style=&quot;font-size: 13px; color: rgb(0, 0, 153); text-decoration: none; &quot;&gt;project management software&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot;&gt; (&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;http://www.projectinsight.net/&quot;&gt;http://www.projectinsight.net/&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; line-height: 16px; &quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;solution can help manage this challenge, especially when working across multiple time zones.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;Using the wrong tool for the job&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;Many companies attempt to manage projects using desktop software applications like Microsoft Project and Microsoft Excel. The main challenge with using desktop software to manage projects is that these applications were not designed for collaboration among several parties. At worst, the file is shared by e-mailing the file to all parties on the team. At best, the file may be posted on a network or on an extranet and shared from there.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;A project management solution that is Web-based can help solve these issues by allowing project managers and their team members to access project information from any browser in the world, at any time of the day or night. The project information is centralized in one database and posted in real-time, assuring that all project members and executive management can view the most recent information about the project.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;Overbooked resource&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;Project teams usually have more demand for projects than they have team members or resources to execute the projects. Project managers and resource managers using desktop applications have a challenging time being able to see how much work each resource has across all projects. Teams without a centralized project management solution often use an Excel spreadsheet to manage workloads and find that this is quite a cumbersome exercise.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;A Web-based project management solution has the advantage of storing all projects, all resources and their task assignments in one centralized place. A project management solution should be able to drill down to the specifics projects and tasks to show what is causing over allocation.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;Wasting time looking for project assets&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;All projects have assets that belong to the project and/or task. The common-use file sharing frequently employed on networks seems to be the lowest common denominator for project teams. The challenge with even the best file storage systems on the internal network is that team members still complain that they cannot find critical documents. The other problem with this method is that third parties usually cannot access these internal files. This often results in the project manager resorting to e-mailing assets to these outside resources, which can result in version control problems.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;A Web-based project management solution can solve these issues by posting all project assets in the centralized repository that is accessible by all participants, providing version control, and e-mail notifications. Another good feature to look for is the ability for the project team to collaborate on project files and assets by posting comments or threads. That way, the entire project history is captured in the documents repository.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;Too much time spent in project status meeting&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;Many project team members complain about spending too much time in meetings focused on project status updates. A Web-based project management solution can permit each team member to report back on project tasks and activities throughout the workday instead of relying on status meetings. The beauty of Web-based solutions is that each project resource is empowered to report back on his or her tasks, pushing the responsibility back where it belongs, to the team member.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;Source: &lt;a href=&quot;http://www.itbusinessedge.com/slideshows/show.aspx?c=87894&quot;&gt;http://www.itbusinessedge.com/slideshows/show.aspx?c=87894&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px; line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); line-height: normal; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/6906049742906114791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/6906049742906114791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/6906049742906114791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/6906049742906114791'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/common-project-management-challenges.html' title='Common Project Management Challenges'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-609661040631763277</id><published>2011-05-06T13:28:00.000-07:00</published><updated>2011-05-06T13:29:39.686-07:00</updated><title type='text'>Setup Drupal website on Windows 7</title><content type='html'>Setup Drupal website on Windows 7</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/609661040631763277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/609661040631763277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/609661040631763277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/609661040631763277'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/setup-drupal-website-on-windows-7.html' title='Setup Drupal website on Windows 7'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-1834618865480362280</id><published>2011-05-05T13:35:00.001-07:00</published><updated>2011-05-05T13:35:18.613-07:00</updated><title type='text'>WebSockets in HTML5</title><content type='html'>WebSockets in HTML5</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/1834618865480362280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/1834618865480362280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1834618865480362280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1834618865480362280'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/websockets-in-html5.html' title='WebSockets in HTML5'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-6473095898687756076</id><published>2011-05-05T13:29:00.000-07:00</published><updated>2011-05-05T13:30:01.417-07:00</updated><title type='text'>HTML 5</title><content type='html'>&lt;a href=&quot;http://diveintohtml5.org/&quot;&gt;http://diveintohtml5.org/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/6473095898687756076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/6473095898687756076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/6473095898687756076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/6473095898687756076'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/html-5.html' title='HTML 5'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-3706911387302726435</id><published>2011-05-05T13:27:00.000-07:00</published><updated>2011-05-05T13:29:15.227-07:00</updated><title type='text'>Using MVCTurbine</title><content type='html'>Using MVCTurbine</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/3706911387302726435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/3706911387302726435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3706911387302726435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3706911387302726435'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/using-mvcturbine.html' title='Using MVCTurbine'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-3058687925913729146</id><published>2011-05-05T13:26:00.001-07:00</published><updated>2011-05-05T13:26:47.765-07:00</updated><title type='text'>Web-API WCF</title><content type='html'>Web-API WCF&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/3058687925913729146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/3058687925913729146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3058687925913729146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3058687925913729146'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/05/web-api-wcf.html' title='Web-API WCF'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-1508568924464494858</id><published>2011-04-28T13:20:00.000-07:00</published><updated>2011-04-28T13:21:43.798-07:00</updated><title type='text'>Placeholder</title><content type='html'>Placeholder</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/1508568924464494858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/1508568924464494858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1508568924464494858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/1508568924464494858'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/04/placeholder.html' title='Placeholder'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-3548519237096009854</id><published>2011-04-28T13:18:00.001-07:00</published><updated>2011-04-28T13:18:58.314-07:00</updated><title type='text'>Amazon AWS vs Windows Azure vs Force</title><content type='html'>Amazon AWS vs Windows Azure vs Force</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/3548519237096009854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/3548519237096009854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3548519237096009854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3548519237096009854'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/04/amazon-aws-vs-windows-azure-vs-force.html' title='Amazon AWS vs Windows Azure vs Force'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-563787697722741632</id><published>2011-04-16T11:39:00.001-07:00</published><updated>2011-04-16T13:23:47.352-07:00</updated><title type='text'>Drupal using Visual Studio</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;&gt;In this article lets see how to setup a Drupal website using WAMP,and also load the Drupal website from Visual Studio and debug it. This article is influenced from the book Apress.Pro.Drupal.7.for.Windows.Developers, zillion thanks to Apress, and Brian Travis for giving this wonderful book for Windows community&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Hurdle 1&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;MySQL phpamdin root no password error&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Hurdle 2&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;h1&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot; &gt;&lt;i&gt;Internal Server Error&lt;/i&gt;&lt;/span&gt;&lt;/h1&gt; &lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;The server encountered an internal error or misconfiguration and was unable  to complete your request.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;Please contact the server administrator, [no address given] and inform them  of the time the error occurred, and anything you might have done that may have  caused the error.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;More information about this error may be available in the server error  log.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll&#39;, Skipped loading symbols. Module is optimized and the debugger option &#39;Just My Code&#39; is enabled.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Program Files (x86)\Jcx.Software\VS.Php\2010\webserver.exe&#39;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll&#39;, Skipped loading symbols. Module is optimized and the debugger option &#39;Just My Code&#39; is enabled.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Program Files (x86)\Jcx.Software\VS.Php\2010\vsphp_utils.dll&#39;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll&#39;, Skipped loading symbols. Module is optimized and the debugger option &#39;Just My Code&#39; is enabled.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll&#39;, Skipped loading symbols. Module is optimized and the debugger option &#39;Just My Code&#39; is enabled.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Windows\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll&#39;, Skipped loading symbols. Module is optimized and the debugger option &#39;Just My Code&#39; is enabled.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;&#39;webserver.exe&#39; (Managed (v2.0.50727)): Loaded &#39;C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll&#39;, Skipped loading symbols. Module is optimized and the debugger option &#39;Just My Code&#39; is enabled.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;Executing: C:\Program Files (x86)\Jcx.Software\VS.Php\2010\apache2\bin\apache.exe -f &quot;C:\wamp\www\drupal7\.httpd.conf&quot; -X -DPHP_5.2 -DPHP_5_2_SAPI&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;i&gt;Logging disabled (QUIET_MODE set)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/563787697722741632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/563787697722741632' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/563787697722741632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/563787697722741632'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/04/drupal-using-visual-studio.html' title='Drupal using Visual Studio'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-5587792558993698221</id><published>2011-04-12T15:26:00.001-07:00</published><updated>2011-04-12T15:26:53.169-07:00</updated><title type='text'>Code Contracts in .NET Framework 4</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: &#39;Segoe UI&#39;, &#39;Lucida Grande&#39;, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 15px; &quot;&gt;Code Contracts in .NET Framework 4&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/5587792558993698221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/5587792558993698221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5587792558993698221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5587792558993698221'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/04/code-contracts-in-net-framework-4.html' title='Code Contracts in .NET Framework 4'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-5412749809285222258</id><published>2011-04-11T13:36:00.000-07:00</published><updated>2011-04-11T16:38:57.495-07:00</updated><title type='text'>101 - Enterprise Architecture Methodologies</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;I would want to briefly talk about the four most popular Enterprise Architect process/methodology/framework&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;li&gt;The Zachman Framework for Enterprise Architectures&lt;/li&gt;&lt;li&gt;The Open Group Architectural Framework (TOGAF)&lt;/li&gt;&lt;li&gt;The Federal Enterprise Architecture&lt;/li&gt;&lt;li&gt;The Gartner Methodology&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;b&gt;The Zachman Framework for Enterprise Architectures&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;The Zachman &quot;Framework&quot; is actually a taxonomy for organizing architectural artifacts (in other words, design documents, specifications, and models) that takes into account both who the artifact targets (for example, business owner and builder) and what particular issue (for example, data and functionality) is being addressed.&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;Zachman proposed that there are six descriptive foci (data, function, network, people, time, and motivation) and six player perspectives (planner, owner, designer, builder, subcontractor, and enterprise.) These two dimensions can be arranged in a grid, as shown below&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/ilog/brms/wp-content/uploads/2008/11/zachman.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;There are 36 intersecting cells in a Zachman grid—one for each meeting point between a player&#39;s perspective (for example, business owner) and a descriptive focus (for example, data.). As we move horizontally (for example, left to right) in the grid, we see different descriptions of the system—all from the same player&#39;s perspective. As we move vertically in the grid (for example, top to bottom), we see a single focus, but change the player from whose perspective we are viewing that focus.&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;Few suggestion on Zachman grid,&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;1. Every architectural artifact should live in one and only one cell. There should be no ambiguity about where a particular artifact lives. If it is not clear in which cell a particular artifact lives, there is most likely a problem with the artifact itself.&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;2. An architecture can be considered a &lt;em&gt;complete&lt;/em&gt; architecture only when every cell in that architecture is complete. A cell is complete when it contains sufficient artifacts to fully define the system for one specific player looking at one specific descriptive focus&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;3. Cells in columns should be related to each other. Consider, for example, the data column (the first column) of the Zachman grid. From the business owner&#39;s (Bret&#39;s) perspective, &lt;em&gt;data&lt;/em&gt; is information about the business. From the database administrator&#39;s perspective, data is rows and columns in the database.&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;b&gt;The Open Group Architecture Framework ( TOGAF )&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;TOGAF divides an enterprise architecture into four categories, as follows:&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Business architecture&lt;/strong&gt;—Describes the processes the business uses to meet its goals&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Application architecture&lt;/strong&gt;—Describes how specific applications are designed and how they interact with each other&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Data architecture&lt;/strong&gt;—Describes how the enterprise datastores are organized and accessed&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Technical architecture&lt;/strong&gt;—Describes the hardware and software infrastructure that supports applications and their interactions&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Important part of TOGAF is the Architecture Development Method, better known as ADM. ADM is a recipe for creating architecture. A recipe can be categorized as a &lt;em&gt;process&lt;/em&gt;. Given that ADM is the most visible part of TOGAF, I categorize TOGAF overall as an &lt;em&gt;architectural process&lt;/em&gt;, instead of either an &lt;em&gt;architectural framework&lt;/em&gt; (as The Open Group describes TOGAF) or a &lt;em&gt;methodology&lt;/em&gt; (as it describes ADM).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &#39;Segoe UI&#39;, Verdana, Arial; font-size: 14px; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/5412749809285222258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/5412749809285222258' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5412749809285222258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/5412749809285222258'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/04/101-enterprise-architecture.html' title='101 - Enterprise Architecture Methodologies'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-3800643457715955818</id><published>2011-04-06T21:54:00.000-07:00</published><updated>2011-04-10T17:43:14.340-07:00</updated><title type='text'>Aspect Oriented Programming and Unity 2.0</title><content type='html'>&lt;div&gt;An aspect describes a reusable piece of code that you want to inject in existing classes without touching the source code of those classes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;To maximize the reuse of complex business logic code, we typically tend to design a hierarchy of classes around the core and primary business functions of the system. But when the other non-business-specific concerns that cross-cut through the hierarchy of classes? we will fit features such as caching, security and logging in to business object and there by coupling our functionality with non-functional needs.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Not being a specific responsibility of a given component or family of components, a cross-cutting concern is an aspect of the system that must be dealt with at a different logical level, a level beyond application classes. For relatively simple scenarios, such as tracing, caching and decoration of components in the application tier, the capabilities of DI frameworks usually do&lt;/div&gt;&lt;div&gt;the trick. However, it’s difficult to go with DI frameworks when it comes to domain objects and UI objects. A cross-cutting concern can certainly be seen as an external dependency, and DI techniques certainly allow you to inject external dependencies in a class.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Code injection is differs from dependency injection where CI is insert calls to public endpoints in the aspect at specific points within the body of classes decorated with a given aspect, on the other hand DI is are resolved automatically and self-contained aspect component are attached in to a public class method.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;A join point indicates a point in the source code of the target class where you want to inject the aspect’s code.  A pointcut represents a collection of join points.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikRsgaYIzocMrrkNxmiE22BkD7oZtq1na5iC_-w89L07UYC0eMk3gxGozsxxOZEcpjcu3VoOb4KFMk2dySWnjnPCEP4bcKax_GMwJQ7yg8fa6FPI3lsADh_MlHcD_38x5KXiHGTw6ZXIE/s1600/AOP+JP+PC+Advice.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 181px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikRsgaYIzocMrrkNxmiE22BkD7oZtq1na5iC_-w89L07UYC0eMk3gxGozsxxOZEcpjcu3VoOb4KFMk2dySWnjnPCEP4bcKax_GMwJQ7yg8fa6FPI3lsADh_MlHcD_38x5KXiHGTw6ZXIE/s320/AOP+JP+PC+Advice.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5593272458063545490&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Unity is one of the Enterprise Library application blocks. Also available for Silverlight, Unity is essentially a DI container with additional support for an interception mechanism through which&lt;/div&gt;&lt;div&gt;you can make your classes a bit more aspect-oriented.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Interception is essentially an extremely flexible approach to add new behavior to an object at run time without touching its source code and without affecting the behavior of classes in the same inheritance path. Unity interception is a way to implement the Decorator pattern, which is a popular design pattern devised to extend the functionality of an object at run time as the object is used. A decorator is a container object that receives (and maintains a reference to) an instance of the target object and augments its capabilities toward the outside world.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Interception works regardless of the way in which the object is instantiated, whether the object is created through the Unity container or is a known instance. In the latter case, you can just use a different, completely standalone API. If you do so, however, you lose the configuration fi le support.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGwhQj2Zhc0iRjerz-HqndfY4okS8csqGm9dtc9HBasoUAe-fjwzB0B9Ss4lFZMid1xB5ZrdURClBJj_vUsodfcAc5AxvPu_7jXF1AQ-TknR14_QdHDsZInLYQqBiAQeXUb-OoU0cAIM8/s1600/Unity+Interception+Pipeline.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 181px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGwhQj2Zhc0iRjerz-HqndfY4okS8csqGm9dtc9HBasoUAe-fjwzB0B9Ss4lFZMid1xB5ZrdURClBJj_vUsodfcAc5AxvPu_7jXF1AQ-TknR14_QdHDsZInLYQqBiAQeXUb-OoU0cAIM8/s320/Unity+Interception+Pipeline.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5593280155063143618&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Th e interception subsystem is made of three key elements: &lt;/div&gt;&lt;div&gt;1. The interceptor (or proxy); &lt;/div&gt;&lt;div&gt;2. The behavior pipeline; &lt;/div&gt;&lt;div&gt;3. The behavior or aspect. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the two extremes of the subsystems you find the client application and the target object—that is, the object being assigned additional behaviors not hardcoded in its source code. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once the client application is configured to use the interception API of Unity on a given instance, any method invocation goes through a proxy object—the interceptor. This proxy object looks at the list of registered behaviors and invokes them through the internal pipeline. Each configured behavior is given a chance to run before or after the regular invocation of the object method. Th e proxy injects input data into the pipeline and receives any return value as initially generated&lt;/div&gt;&lt;div&gt;by the target object and then further modifi ed by behaviors.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;In Unity 2.0, interception is just a new extension you add to the container to describe how an object is actually resolved. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://msdn.microsoft.com/en-us/library/ff660872(v=PandP.20).aspx &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/3800643457715955818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/3800643457715955818' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3800643457715955818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/3800643457715955818'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/04/aspect-oriented-programming-and-unity.html' title='Aspect Oriented Programming and Unity 2.0'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikRsgaYIzocMrrkNxmiE22BkD7oZtq1na5iC_-w89L07UYC0eMk3gxGozsxxOZEcpjcu3VoOb4KFMk2dySWnjnPCEP4bcKax_GMwJQ7yg8fa6FPI3lsADh_MlHcD_38x5KXiHGTw6ZXIE/s72-c/AOP+JP+PC+Advice.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5428081208173028358.post-250593931417085270</id><published>2011-03-31T10:11:00.000-07:00</published><updated>2011-03-31T10:12:09.721-07:00</updated><title type='text'>Introduction to OData - Open Data Protocol</title><content type='html'>Introduction to OData - Open Data Protocol</content><link rel='replies' type='application/atom+xml' href='http://manjeshgowda.blogspot.com/feeds/250593931417085270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5428081208173028358/250593931417085270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/250593931417085270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5428081208173028358/posts/default/250593931417085270'/><link rel='alternate' type='text/html' href='http://manjeshgowda.blogspot.com/2011/03/introduction-to-odata-open-data.html' title='Introduction to OData - Open Data Protocol'/><author><name>Code Karma</name><uri>http://www.blogger.com/profile/14242330825940653496</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>