<?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:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-18486664</id><updated>2010-03-08T12:42:28.318-08:00</updated><title type='text'>Kala's Blog Spot</title><subtitle type='html'>Birds Eye Views...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.kalharas.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18486664.post-2535612684385404514</id><published>2009-09-13T02:01:00.000-07:00</published><updated>2009-09-13T02:04:38.337-07:00</updated><title type='text'>Low cost white board</title><content type='html'>Get a A3 paper laminated, you have an instant white board in top of your desk that can be used for brainsttorming or for your notes. What a clever invention by my friend Gregor good work man. Why don't you try it ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-2535612684385404514?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/2535612684385404514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=2535612684385404514' title='46 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/2535612684385404514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/2535612684385404514'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2009/09/low-cost-white-board.html' title='Low cost white board'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>46</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-1832563901941701422</id><published>2009-09-12T23:39:00.000-07:00</published><updated>2009-09-12T23:49:07.687-07:00</updated><title type='text'>Designing UI applications</title><content type='html'>"Everything is best for something and worst for something else.&lt;br /&gt;The trick is knowing for what, when, for whom, and why." —Bill Buxton&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was involved in Windows based application development for some time and it was seriously lacking a good user interaction guideline doc. I have read lot of books and articles but they are not quite up to the standards. Check this out now Microsoft have released a good one&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa511258.aspx"&gt;UI Guidelines&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-1832563901941701422?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/1832563901941701422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=1832563901941701422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/1832563901941701422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/1832563901941701422'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2009/09/designing-ui-applications.html' title='Designing UI applications'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-554446133197663967</id><published>2009-09-12T20:27:00.000-07:00</published><updated>2009-09-12T20:36:31.834-07:00</updated><title type='text'>Handy sql script to find lost quries</title><content type='html'>I always forget to save the quires that I'm executing against sql server and want to recover them without writing them back, here's a handy script which I use for this&lt;br /&gt;&lt;br /&gt;select objtype,p.size_in_bytes,[sql].text&lt;br /&gt;from sys.dm_exec_cached_plans p&lt;br /&gt;outer apply sys.dm_exec_sql_text (p.plan_handle) sql&lt;br /&gt;where [sql].[test] like '%Something goes here%'&lt;br /&gt;order by usecounts desc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-554446133197663967?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/554446133197663967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=554446133197663967' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/554446133197663967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/554446133197663967'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2009/09/handy-sql-script-to-find-lost-quries.html' title='Handy sql script to find lost quries'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-242502657096299796</id><published>2009-06-06T00:58:00.000-07:00</published><updated>2009-06-06T01:21:59.069-07:00</updated><title type='text'>Back to business</title><content type='html'>Writing a blog post after a long time. I went through all of my friends blogs today and felt sad b'cos I was not contributing at all. &lt;br /&gt;&lt;br /&gt;Here are some tips for software ARCHITECTS&lt;br /&gt;&lt;br /&gt;   1. Don't put your resume ahead of the requirements  &lt;br /&gt;   2. Simplify essential complexity; diminish accidental complexity&lt;br /&gt;   3. Chances are your biggest problem isn't technical&lt;br /&gt;   4. Communication is King; Clarity and Leadership its humble servants&lt;br /&gt;   5. Architecting is about balancing&lt;br /&gt;   6. Seek the value in requested capabilities&lt;br /&gt;   7. Stand Up!&lt;br /&gt;   8. Skyscrapers aren't scalable&lt;br /&gt;   9. You're negotiating more often than you think&lt;br /&gt;  10. Quantify&lt;br /&gt;  11. One line of working code is worth 500 of specification&lt;br /&gt;  12. There is no one-size-fits-all solution&lt;br /&gt;  13. It's never too early to think about performance&lt;br /&gt;  14. Application architecture determines application performance&lt;br /&gt;  15. Commit-and-run is a serious crime. Respect your Colleagues&lt;br /&gt;  16. There Can be More than One&lt;br /&gt;  17. Business Drives&lt;br /&gt;  18. Simplicity before generality, use before reuse&lt;br /&gt;  19. Architects must be hands on&lt;br /&gt;  20. Continuously Integrate&lt;br /&gt;  21. Avoid Scheduling Failures &lt;br /&gt;  22. Architectural Tradeoffs&lt;br /&gt;  23. Database as a Fortress&lt;br /&gt;  24. Use uncertainty as a driver&lt;br /&gt;  25. Scope is the enemy of success&lt;br /&gt;  26. Reuse is about people and education, not just architecture&lt;br /&gt;  27. There is no 'I' in architecture&lt;br /&gt;  28. Get the 1000ft view&lt;br /&gt;  29. Try before choosing&lt;br /&gt;  30. Understand The Business Domain&lt;br /&gt;  31. Programming is an act of design&lt;br /&gt;  32. Time changes everything&lt;br /&gt;  33. Give developers autonomy&lt;br /&gt;  34. Value stewardship over showmanship&lt;br /&gt;  35. Warning, problems in mirror may be larger than they appear&lt;br /&gt;  36. The title of software architect has only lower-case 'a's; deal with it&lt;br /&gt;  37. Software architecture has ethical consequences&lt;br /&gt;  38. Everything will ultimately fail&lt;br /&gt;  39. Context is King&lt;br /&gt;  40.It's all about performance&lt;br /&gt;  41. Engineer in the white spaces&lt;br /&gt;  42. Talk the Talk&lt;br /&gt;  43. Heterogeneity Wins&lt;br /&gt;  44. Dwarves, Elves, Wizards, and Kings&lt;br /&gt;  45. Learn from Architects of Buildings&lt;br /&gt;  46. Fight repetition&lt;br /&gt;  47. Welcome to the real world&lt;br /&gt;  48. Don't Control, but Observe&lt;br /&gt;  49. Janus the Architect&lt;br /&gt;  50.Architects focus is on the boundaries and interfaces&lt;br /&gt;  51.Challenge assumptions - especially your own&lt;br /&gt;  52.Record your rationale&lt;br /&gt;  53.Empower developers&lt;br /&gt;  54.It is all about the data&lt;br /&gt;  55.Control the data, not just the code&lt;br /&gt;  56.Don't Stretch The Architecture Metaphors&lt;br /&gt;  57. Focus on Application Support and Maintenance&lt;br /&gt;  58. Prepare to pick two&lt;br /&gt;  59. Prefer principles, axioms and analogies to opinion and taste&lt;br /&gt;  60. Start with a Walking Skeleton&lt;br /&gt;  61. Share your knowledge and experiences&lt;br /&gt;  62. Make sure the simple stuff is simple&lt;br /&gt;  63. If you design it, you should be able to code it&lt;br /&gt;  64. The ROI variable&lt;br /&gt;  65. Your system is legacy, design for it&lt;br /&gt;  66. If there is only one solution, get a second opinion&lt;br /&gt;  67. Understand the impact of change &lt;br /&gt;  68. You have to understand Hardware too&lt;br /&gt;  69. Shortcuts now are paid back with interest later&lt;br /&gt;  70. "Perfect" is the Enemy of "Good Enough"&lt;br /&gt;  71. Avoid "Good Ideas"&lt;br /&gt;  72. Great content creates great systems&lt;br /&gt;  73. The Business Vs. The Angry Architect&lt;br /&gt;  74. Stretch key dimensions to see what breaks&lt;br /&gt;  75. Before anything, an architect is a developer&lt;br /&gt;  76. A rose by any other name will end up as a cabbage&lt;br /&gt;  77. Stable problems get high quality solutions&lt;br /&gt;  78. It Takes Diligence&lt;br /&gt;  79. Take responsibility for your decisions&lt;br /&gt;  80. Dont Be a Problem Solver&lt;br /&gt;  81. Choose your weapons carefully, relinquish them reluctantly&lt;br /&gt;  82. Your Customer is Not Your Customer&lt;br /&gt;  83. It will never look like that&lt;br /&gt;  84. Choose Frameworks that play well with others&lt;br /&gt;  85. Making a strong business case&lt;br /&gt;  86. Pattern Pathology&lt;br /&gt;  87. Learn a new language&lt;br /&gt;  88. Dont Be Clever&lt;br /&gt;  89. Build Systems to be Zuhanden&lt;br /&gt;  90. Find and retain passionate problem solvers&lt;br /&gt;  91. Software doesnt really exist&lt;br /&gt;  92. Pay down your technical debt&lt;br /&gt;  93. You can't future-proof solutions&lt;br /&gt;  94. The User Acceptance Problem&lt;br /&gt;  95. The Importance of Consommé&lt;br /&gt;  96. For the end-user, the interface is the system&lt;br /&gt;  97. Great software is not built, it is grown&lt;br /&gt;&lt;br /&gt;Detail article can be found at &lt;a href="http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book"&gt;97 things software architect should know&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-242502657096299796?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/242502657096299796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=242502657096299796' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/242502657096299796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/242502657096299796'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2009/06/back-to-business.html' title='Back to business'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-2496786727603068320</id><published>2007-12-22T04:30:00.000-08:00</published><updated>2007-12-22T04:49:10.734-08:00</updated><title type='text'>SQL Performance Tips</title><content type='html'>When you are writing serious SQL, TSQL or PLSQL one of the common error that you play around is the "Time Out" errors. There are number of reasons for these errors. You have to exactly pin point the problem to properly fix it. I thought of publishing some links that I found on this area which might helpful for you&lt;br /&gt;The areas which you have to look for are :&lt;br /&gt;    1) Transaction Locking&lt;br /&gt;    2) Performance of your queries (In medium and high data volumes)&lt;br /&gt;    3) Transaction isolation levels&lt;br /&gt;    4) Clustered index and indexes of your tables&lt;br /&gt;Browse the flowing for in-depth understanding.....&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vyaskn.tripod.com/watch_your_timeouts.htm"&gt;DBA’s Quick Guide to Timeouts&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vyaskn.tripod.com/sql_odbc_timeout_expired.htm"&gt;How to troubleshoot ODBC timeout errors&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-2496786727603068320?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/2496786727603068320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=2496786727603068320' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/2496786727603068320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/2496786727603068320'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/12/sql-performance-tips.html' title='SQL Performance Tips'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-3695282349371444748</id><published>2007-11-30T12:46:00.000-08:00</published><updated>2007-11-30T12:59:08.844-08:00</updated><title type='text'>Dynamic SQL Tips and Tricks</title><content type='html'>Definitely  you will be facing lot of challenges in your day to day SQL programming. I found the following site very use full to find curse and blessings of dynamic SQL. Have a look, it might be useful for for you as well&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sommarskog.se/dynamic_sql.html"&gt;&lt;br /&gt;The Curse and Blessings of Dynamic SQL&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-3695282349371444748?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/3695282349371444748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=3695282349371444748' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/3695282349371444748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/3695282349371444748'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/11/dynamic-sql-tips-and-tricks.html' title='Dynamic SQL Tips and Tricks'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-8682145089342436007</id><published>2007-08-18T18:06:00.000-07:00</published><updated>2007-08-18T18:34:51.583-07:00</updated><title type='text'>UI Productivity Features (Build Vs Buy)</title><content type='html'>One of the most important factor in all the software projects is user interface. Users need lot of productivity features in their UI to make their liefs easy in their day to day operations. If you categorize, these are not really business functionalities but mainly user productivity features. If you analyze the no of hours developers spent to implement these UI layer productivity features it's huge. So the important message that I want to bring up is if you are building windows or web applications, build the application on top of a superior UI framework (controls) available on the platform you are working on. That will make the delivery quicker. Since I'm coming from .NET background I have evaluated and used two brilliant frameworks for this purpose. &lt;a href="http://www.janusys.com/controls/"&gt;Janus  &lt;/a&gt;and &lt;a href="http://www.infragistics.com/"&gt;Infragistics&lt;/a&gt; are the ones. Both are equally good and worth while you to analyze and decide on a tool. Happy UI programming....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-8682145089342436007?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/8682145089342436007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=8682145089342436007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8682145089342436007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8682145089342436007'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/08/ui-productivity-features-build-vs-buy.html' title='UI Productivity Features (Build Vs Buy)'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-4175422729958774847</id><published>2007-06-12T09:53:00.000-07:00</published><updated>2007-06-12T09:56:25.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNN'/><title type='text'>ASP.NET Ajax support in DNN</title><content type='html'>DotnetNuke developers good news! Partial rendering (ASP.NET Ajax support) is now available for module controls with DNN 4.5. &lt;span align="left"&gt;&lt;span class="NormalBold"&gt;Shaun Walker has published a good &lt;/span&gt;&lt;/span&gt;&lt;a title="blog post" href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryID/1410/Default.aspx"&gt;blog post&lt;/a&gt;. This is a good initiative and definitely .NET community will love this.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-4175422729958774847?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/4175422729958774847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=4175422729958774847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4175422729958774847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4175422729958774847'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/06/dotnetnuke-developers-good-news-partial.html' title='ASP.NET Ajax support in DNN'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-4451402742083773163</id><published>2007-06-09T07:45:00.000-07:00</published><updated>2007-06-12T09:56:44.836-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Architects! Design Scalable ASP.NET Solutions</title><content type='html'>          Do you have these issues ?&lt;br&gt;&lt;ul&gt;&lt;li&gt;My solution accesses web services and they are fairly slow&lt;br&gt;&lt;/li&gt;&lt;li&gt;Overall site usage is very high&lt;br&gt;&lt;/li&gt;&lt;li&gt;Simple web requests takes too long to get their responses&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;The reason for the above issues are the solution is not scaling enough to handle heavy work loads. If you are using web services in your solution the site can easily get bogged down when there is a heavy load accessing the site. The reason for this is the entire ASP.NET thread pool will get busy due to slow web service calls and then all the subsequent requests starts queueing up until threads gets free-ed up. The reason is solution is not scaling in heavy work loads. &lt;br&gt;&lt;br&gt;One of the simplest design technique is to design asynchronous pages which access third party web services. ASP.NET 2.0 has built in support for implementing Async web pages. You simply have to :&lt;br&gt;&lt;br&gt;1) Add &lt;i&gt;&lt;font color="#3333ff"&gt;&amp;lt;%@ Page Async="true"&lt;/font&gt;&lt;/i&gt;  directive in your page&lt;br&gt;2) Register "Begin event handler" and "End event handler" delegates using &lt;font color="#3333ff"&gt;&lt;i&gt;&lt;b&gt;AddOnPreRenderCompleteAsync &lt;/b&gt;&lt;/i&gt;&lt;/font&gt;method&lt;br&gt;&lt;br&gt;Call your web service in Begin event handler and process the web service response in End event handler. &lt;a title="Read this" href="http://msdn.microsoft.com/msdnmag/issues/05/10/WickedCode/"&gt;Read this&lt;/a&gt; for in-depth understanding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-4451402742083773163?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/4451402742083773163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=4451402742083773163' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4451402742083773163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4451402742083773163'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/06/architects-design-scalable-asp.html' title='Architects! Design Scalable ASP.NET Solutions'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-7221291064484418656</id><published>2007-06-03T09:33:00.000-07:00</published><updated>2007-06-03T10:04:25.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>My Last Trip at EC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_28tNBCbb8HI/RmLvdzUNnXI/AAAAAAAAAbs/2bsn_B64Q90/s1600-h/CIMG2788.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_28tNBCbb8HI/RmLvdzUNnXI/AAAAAAAAAbs/2bsn_B64Q90/s320/CIMG2788.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5071879425642831218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was my last trip at Eurocenter and was a remarkable one. The place was beautiful and we enjoyed a lot at this cool atmosphere. EC guys were great and I will miss these great fun events yet to come.............. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_28tNBCbb8HI/RmLyMDUNnYI/AAAAAAAAAb0/bzDjOeS8d78/s1600-h/CIMG2702.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_28tNBCbb8HI/RmLyMDUNnYI/AAAAAAAAAb0/bzDjOeS8d78/s320/CIMG2702.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5071882419235036546" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-7221291064484418656?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/7221291064484418656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=7221291064484418656' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/7221291064484418656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/7221291064484418656'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/06/my-last-trip-at-ec.html' title='My Last Trip at EC'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_28tNBCbb8HI/RmLvdzUNnXI/AAAAAAAAAbs/2bsn_B64Q90/s72-c/CIMG2788.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-1577573925804608983</id><published>2007-05-26T11:28:00.000-07:00</published><updated>2007-05-26T11:43:33.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET 2.0 Beginners Troubleshooting Guide</title><content type='html'>Problem: I'm using ASP.NET 2.0's membership provider for forms authentication. It is working fine in VS environment with the integrated web server. But when I move it to IIS, login control fails to authenticate the same user.&lt;br /&gt;&lt;br /&gt;Resolution : In IIS the account(ASPNET or NETWORK SERVICE) access the app_data folder. Therefore the app_data folder must have write/modify permission for this account &lt;br /&gt;&lt;br /&gt;I will try to add some troubleshooting tips into this article time to time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-1577573925804608983?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/1577573925804608983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=1577573925804608983' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/1577573925804608983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/1577573925804608983'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/05/aspnet-20-beginners-troubleshooting.html' title='ASP.NET 2.0 Beginners Troubleshooting Guide'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-5175489586320991980</id><published>2007-05-20T11:05:00.000-07:00</published><updated>2007-05-26T11:44:01.518-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Do you believe in Unit Testing</title><content type='html'>Most of the developers don't believe in unit testing. They always complain they don't have time to do unit testing. So where is the problem ? is it in estimation ? quality focus of our developers? or are we using the correct tools ? Unit testing has a direct relationship with estimation, I'm not going to touch that now, it seems most of the developers are quality focus but they are not using the correct tools for unit testing. Tools are not just "NUnit" or "JUnit"......... I would say these are primary tools there are lot of supplementary tools that you have to use together with primary tools in the commercial world. Otherwise you will kill u'r self with unit testing and not producing a much of a value &lt;br /&gt;&lt;br /&gt;Some of the supplementary tools are :&lt;br /&gt;&lt;br /&gt;        - NDbUnit, DbUnit&lt;br /&gt;        - Rhino Mocks, NMock&lt;br /&gt;        - Fit, WinFITRunnerLite&lt;br /&gt;        - TypeMock&lt;br /&gt;        - NUnitAsp&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;Have a look at these tools and rethink about unit testing. You will Definitely embrace  unit testing into your code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-5175489586320991980?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/5175489586320991980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=5175489586320991980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/5175489586320991980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/5175489586320991980'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/05/do-you-believe-in-unit-testing.html' title='Do you believe in Unit Testing'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-7199296311466718318</id><published>2007-05-16T16:30:00.000-07:00</published><updated>2007-05-26T11:44:01.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET Tools Portal</title><content type='html'>Sometimes it's difficult to find the correct tool at the correct time. I found this portal for .NET tools a common place to some valuable tools. It has categorized the tools nicely and easy to find. &lt;a href="http://sharptoolbox.com/"&gt;Here is the site&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-7199296311466718318?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/7199296311466718318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=7199296311466718318' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/7199296311466718318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/7199296311466718318'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/05/net-tools-portal.html' title='.NET Tools Portal'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-4907218418651248525</id><published>2007-05-05T05:33:00.000-07:00</published><updated>2007-05-26T11:44:01.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Maintainable Regular Expressions</title><content type='html'>We all know regular expression is a very powerful tool. But one of the difficulties we face is reading regex statements written by others. Sometimes it's almost impossible. So it's always better to document your regular expressions and make them more readable for others and make your piece of code more maintainable. Here what you can do &lt;br /&gt;&lt;br /&gt;Regex regex = new Regex(@"&lt;br /&gt;                        ^           # anchor at the start&lt;br /&gt;                       (?=.*\d)     # must contain at least one numeric character&lt;br /&gt;                       (?=.*[a-z])  # must contain one lowercase character&lt;br /&gt;                       (?=.*[A-Z])  # must contain one uppercase character&lt;br /&gt;                       .{8,10}      # From 8 to 10 characters in length&lt;br /&gt;                       \s           # allows a space &lt;br /&gt;                       $            # anchor at the end", &lt;br /&gt;                       RegexOptions.IgnorePatternWhitespace);&lt;br /&gt;&lt;br /&gt;You can comment your expressions using # but make sure you use the RegexOption IgnorePatternWhitespace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-4907218418651248525?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/4907218418651248525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=4907218418651248525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4907218418651248525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4907218418651248525'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/05/maintainable-regular-expressions.html' title='Maintainable Regular Expressions'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-6805571980688602108</id><published>2007-04-21T10:16:00.000-07:00</published><updated>2007-04-21T10:28:40.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>How to Study with your Spouse, Children and  a Full Time Job</title><content type='html'>You may be wondering this is impossible. 50% of my colleagues don't believe in this and they destroy their careers after they got married and have started on their kids. Read this article this is a good one to keep you energize and to move up with your career. Though you have not done your degree or professional certifications you will be up-to-date in your industry by following this and count on me you will be in a good position in your work place :)))&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.lifehack.org/articles/productivity/how-to-study-with-a-full-time-job.html"&gt;How to Study with Full Time Job&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-6805571980688602108?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/6805571980688602108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=6805571980688602108' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/6805571980688602108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/6805571980688602108'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/04/how-to-study-with-your-spouse-children.html' title='How to Study with your Spouse, Children and  a Full Time Job'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-8597667659599118876</id><published>2007-04-08T23:15:00.000-07:00</published><updated>2007-04-21T09:20:09.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>CSS Friendly Adaptor Controls</title><content type='html'>Our web designers are always complain about the code generated from ASP.NET controls. For an example code generated from Menu controls are using table tags. But modern web designers love CSS based menus b'cos of two reasons. They looks elegant and the page size is very small compared to table base menus. So here is what you are looking for...... CSS Friendly Adaptor Controls, brilliant piece of work. You can make your existing site produce CSS friendly code and style your controls using CSS without even touching your existing aspx pages. It's definitely a wow isn't it :) Actually it is.... Compare the following rendered html using adaptor control with your own table base menu rendering results you will feel the difference.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;div class="SimpleEntertainmentMenu" id="Menu1"&amp;gt;&lt;br /&gt; &amp;lt;div class="AspNet-Menu-Horizontal"&amp;gt;&lt;br /&gt;   &amp;lt;ul class="AspNet-Menu"&amp;gt;&lt;br /&gt;    &amp;lt;li class="AspNet-Menu-WithChildren"&amp;gt;&lt;br /&gt;     &amp;lt;a href="javascript:__doPostBack('Menu1','bMusic')" class="AspNet-Menu-Link"&amp;gt;&lt;br /&gt;      Music&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;ul&amp;gt;&lt;br /&gt;      &amp;lt;li class="AspNet-Menu-Leaf"&amp;gt;&lt;br /&gt;       &amp;lt;a href="javascript:__doPostBack('Menu1','bMusic\\Clasical')" class="AspNet-Menu-Link"&amp;gt;&lt;br /&gt;        Clasical&amp;lt;/a&amp;gt;&lt;br /&gt;      &amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;/ul&amp;gt;&lt;br /&gt;    &amp;lt;/li&amp;gt;&lt;br /&gt;    &amp;lt;li class="AspNet-Menu-WithChildren"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;a href="javascript:__doPostBack('Menu1','bMovies')" class="AspNet-Menu-Link"&amp;gt;&lt;br /&gt;      Movies&amp;lt;/a&amp;gt;&lt;br /&gt;     &amp;lt;ul&amp;gt;&lt;br /&gt;      &amp;lt;li class="AspNet-Menu-Leaf"&amp;gt;&lt;br /&gt;       &amp;lt;a href="javascript:__doPostBack('Menu1','bMovies\\Action')" class="AspNet-Menu-Link"&amp;gt;&lt;br /&gt;        Action&amp;lt;/a&amp;gt;&lt;br /&gt;      &amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/li&amp;gt;&lt;br /&gt;   &amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the App_Browsers folder create the CSSFriendlyAdapters.browser and configure all the adaptor controls to be used with different ASP.NET controls.&lt;br /&gt;In this file you can configure in which browsers Adaptor controls should be enabled or disables. Please refer &lt;a title="CSS Friendly Adaptors" href="http://www.asp.net/cssadapters/"&gt;CSS Friendly Adaptors&lt;/a&gt;  for more details&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-8597667659599118876?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/8597667659599118876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=8597667659599118876' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8597667659599118876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8597667659599118876'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/04/css-friendly-adaptor-controls.html' title='CSS Friendly Adaptor Controls'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-7536336765835150416</id><published>2007-04-01T10:16:00.000-07:00</published><updated>2007-04-21T09:31:23.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>MS SQLEXPRESS Issue</title><content type='html'>&lt;p class="MsoNormal"&gt;If somebody is getting the following error when trying to create new sqlexpress data bases from Visual Studio please &lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;follow &lt;/span&gt;the instructions bellow to sort out the problem. I've been struggling for couple of hours to figure out the problem&lt;br /&gt;&lt;br /&gt;Error : "Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance"&lt;br /&gt;&lt;br /&gt;Resolution : &lt;span id="_ctl0_MainContent_PostFlatView"&gt;Delete C:\Documents and Settings\USERNAME\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS.&lt;br /&gt;&lt;br /&gt;This is definitely authentication problem. When you uninstall and reinstall sqlexpress it can happen.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-7536336765835150416?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/7536336765835150416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=7536336765835150416' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/7536336765835150416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/7536336765835150416'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/04/ms-sqlexpress-issue.html' title='MS SQLEXPRESS Issue'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-8413395603712467441</id><published>2007-03-25T03:49:00.000-07:00</published><updated>2007-04-21T09:30:44.038-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Automate your Build and Packaging Process</title><content type='html'>Check this out great toolset for automate your build and packaging process&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wix.sourceforge.net/"&gt;Wix ToolSet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/03/WixTricks/"&gt;&lt;span style="text-decoration: underline;"&gt;Tips and Tricks&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/InsideMSBuild/"&gt;Learn MSBUILD&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-8413395603712467441?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/8413395603712467441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=8413395603712467441' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8413395603712467441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8413395603712467441'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/03/automate-your-build-and-packaging.html' title='Automate your Build and Packaging Process'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-4216498485225669959</id><published>2007-03-22T22:03:00.000-07:00</published><updated>2007-04-21T09:30:09.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Beauty Of .NET (Extender Controls)</title><content type='html'>Have you ever wanted to extend functionality of .NET controls ? if so first thing you will do is subclasing the control and implement your functionality. Hmm there is a much more elegant way of doing this by using Extender Controls.&lt;br /&gt;&lt;br /&gt;Extender controls allows you to extend functionality of exiting controls in a form without subclasing. You have to only drag the extender control to the form and there you go ..... all the controls in the form are equipped with the new functionality.&lt;br /&gt;&lt;br /&gt;The basics are very simple, and you have to build the rest according to your needs. End of this article I have presented some interesting things that can be done using this technique. Extender control is a component so you have inherit your class from a component and implement the IExtenderProvider interface.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;[ProvideProperty("HelloWorld",typeof(System.ComponentModel.Component))]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;public class HelloWorldComponent : Component,IExtenderProvider&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IExtenderProvider interface is very simple. You have to only implement the CanExtend method.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public bool CanExtend(object extendee)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            if (extendee is Control &amp;&amp;amp; !(extendee is HelloWorldComponent))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                return true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                return false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above will extend all the controls in a form (win or web) with properties extended from extender control. You can introduce one to many properties to controls in a form using one extender control. For introduce a property you have implement two methods Set&lt;propertyname&gt;(Component,String) and Get&lt;propertyname&gt;(Component). &lt;span style="color: rgb(51, 102, 255);"&gt;ProvideProperty&lt;/span&gt; attribute gives names of the properties. Pls refer &lt;a title="Extender Controls Tutorial" href="http://www.devx.com/dotnet/Article/21462/0/page/2"&gt;Extender Controls Tutorial&lt;/a&gt; for more details on creating and using extender controls.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Interesting things you can do with Extender Controls&lt;br /&gt;&lt;br /&gt;    1) &lt;a title="UI Security Implementations" href="http://www.devx.com/security/Article/20837/0/page/1"&gt;UI Security Implementations&lt;/a&gt;&lt;br /&gt;    2) &lt;a title="Two Way Data Binding in ASP.NET for simple controls like text boxes and radio buttons" href="http://msdn.microsoft.com/msdnmag/issues/06/12/ExtendASPNET/default.aspx"&gt;Two Way Data Binding in ASP.NET for simple controls like text boxes and radio buttons&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have fun.........&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-4216498485225669959?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/4216498485225669959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=4216498485225669959' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4216498485225669959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/4216498485225669959'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/03/beauty-of-net-extender-controls.html' title='Beauty Of .NET (Extender Controls)'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-8586975227434964953</id><published>2007-03-09T22:47:00.000-08:00</published><updated>2007-04-21T09:27:47.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Patterns'/><title type='text'>Robust Coding with CBO's and Hydrator</title><content type='html'>I thought of giving some of my thoughts on DAL and BL designing. Some buzz words today among designers are DTO's and Business Objects (BO's). DTO Vs BO discussion is somewhat controversy and I'm not going to touch that here :). DTO's are smiler to CBO's (Custom Business Objects) that I'm talking in this article.&lt;br /&gt;&lt;br /&gt;First I'll refer to a Framework that use CBO's and hydrator design pattern. DotnetNuke is a open source Content Management and Portal development framework (http://www.dotnetnuke.com/). It has a large community and fairly stable product. We have used this for couple of commercial products and customers are happy so do we. The complete data layer of this solution is built on CBO's and a Hydrator. This greatly reduces the size of the code and it's complexity.&lt;br /&gt;&lt;br /&gt;If you are using CBO's in your code just think how are you going to populate those objects using a DaraReader. If you are going to hand code all the filling mechanisms definitely it's going to be a nightmare. Just think the the maintenance effort, if you change something in the data model you have to go and change the filling codes as well. You can greatly reduce this complexity by using a hydrator or a helper class with CBO's to automatically fill your CBO's based on reflection.&lt;br /&gt;&lt;br /&gt;Few hints on how to write a flexible helper class (Hydrator)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         Use .NET 2.0 Generics to define the FillCollection method   &lt;/li&gt;&lt;/ul&gt;      &lt;br /&gt;        public static C FillCollection&lt;c,&gt;(Type objType, IDataReader dr)&lt;br /&gt;           where T : class, new()&lt;br /&gt;           where C : ICollection&lt;t&gt;, new()&lt;br /&gt; &lt;br /&gt;By using generics  you can generalize the method to use custom return collections as well as to define concrete objects to be filled at compile time. What I love about this is you can specify generic constraint using where clause.&lt;br /&gt;&lt;br /&gt;&lt;span name="intelliTxt"&gt;  &lt;p&gt;   C# supports five different constraints: &lt;/p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/t&gt;&lt;/c,&gt;&lt;ol&gt;&lt;li&gt;&lt;span name="intelliTxt"&gt;     Interface constraint - The type argument must implement the specified interface.   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span name="intelliTxt"&gt;     Inheritance constraint - The type argument must derive from the specified base class.   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span name="intelliTxt"&gt;     Class constraint - The type argument must be a reference type.   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span name="intelliTxt"&gt;     Struct constraint - The type argument must be a value type.   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span name="intelliTxt"&gt;     New constraint - The type argument must expose a public, parameterless (default) constructor.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span name="intelliTxt"&gt;&lt;br /&gt;In the above &lt;/span&gt;"where T : class, new()" means the object should be a reference type and it should have a parameterless constructor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use Custom Attributes to map object properties to DB columns and to define custom values to null properties. So you don't have to use the same DB column names in your object properties and you can override default null values.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.kalharas.com-a.googlepages.com/CBO.zip"&gt;Download Code&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-8586975227434964953?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/8586975227434964953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=8586975227434964953' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8586975227434964953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/8586975227434964953'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/03/robust-coding-with-cbos-and-hydrator.html' title='Robust Coding with CBO&apos;s and Hydrator'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-5401530032655680242</id><published>2007-02-24T04:36:00.000-08:00</published><updated>2007-02-24T04:37:45.476-08:00</updated><title type='text'>Google Apps</title><content type='html'>My friend Hasith one day showed me this interesting concept of google docs. Though I was not that interested on it, Today i thought of just looking at it. I came across this online Google Application concept it's not just Google docs, it has different application packages for home users, small business users, enterprise users etc. It's interesting concept ah! Everything is 100% free :) only requirement is you have to have a domain name to get registered into Google apps. Before I was using MS word to write my blog posts today I'm using Google Docs Wow. The great benefit I'm getting is I can write my documents if I can get hold of a computer and Internet connection. I don't have to wait till I come home or to the office. This is a hassle free powerful communication &amp;amp; collaborative platform for all of us enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-5401530032655680242?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/5401530032655680242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=5401530032655680242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/5401530032655680242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/5401530032655680242'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/02/google-apps.html' title='Google Apps'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-116840780814779939</id><published>2007-01-09T21:36:00.000-08:00</published><updated>2007-04-21T09:29:50.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Connection Strings</title><content type='html'>Guys who want's to refer connection strings here is the site http://www.connectionstrings.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-116840780814779939?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/116840780814779939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=116840780814779939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/116840780814779939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/116840780814779939'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/01/connection-strings.html' title='Connection Strings'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-116792646253283248</id><published>2007-01-04T07:59:00.000-08:00</published><updated>2007-04-21T09:29:11.199-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET Documentation Compilers</title><content type='html'>&lt;p class="MsoNormal"&gt;When Microsoft introduces XML documentation I was wondering why Microsoft didn’t introduce a compiler to compile this XML documentation into nice looking &lt;st1:stockticker&gt;API&lt;/st1:stockticker&gt;’s. &lt;span style=""&gt; &lt;/span&gt;Hmm I don’t have an answer for it but some open source guys came up with a good tool (NDOC) for this need. Guys who have the experience in NDOC know what I’m talking about. If you don’t know about NDOC have a look at &lt;a href="http://sourceforge.net/projects/ndoc/"&gt;http://sourceforge.net/projects/ndoc/&lt;/a&gt;&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Now the good news is Microsoft have open up there internal MSDN style XML documentation tool to the community. All who are interested in code / &lt;st1:stockticker&gt;API&lt;/st1:stockticker&gt; documentation look at SandCastle. &lt;a href="http://blogs.msdn.com/sandcastle/"&gt;http://blogs.msdn.com/sandcastle/&lt;/a&gt; is a good place to hang around. Download it from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads&lt;/a&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;SandCastle is purely command prompt base set of tools and compilers. If you like to get a technical overview of the tool have a look at this blog&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="https://blogs.msdn.com/sandcastle/archive/2006/07/28/681209.aspx"&gt;https://blogs.msdn.com/sandcastle/archive/2006/07/28/681209.aspx&lt;/a&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;Some guys have written a NDOC style application in top of SandCastle tools and can be found at &lt;a href="http://www.codeplex.com/SHFB"&gt;http://www.codeplex.com/SHFB&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Enjoy !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-116792646253283248?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/116792646253283248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=116792646253283248' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/116792646253283248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/116792646253283248'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2007/01/net-documentation-compilers.html' title='.NET Documentation Compilers'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-116201365417096814</id><published>2006-10-27T22:13:00.000-07:00</published><updated>2006-10-27T22:34:14.206-07:00</updated><title type='text'>Change Your Destiny....</title><content type='html'>&lt;p class="MsoNormal"&gt;Last 3 days I attended the Microsoft Tech.ED 2006 held at Waters Edge Sri Lanka. It was a good experience but bit pissed off b'cos the expected contents are not delivard in this 3 days of sessions. I'm not expected marketing presentations in a TechED forum. Do you? Some of the speakers new what they are talking about (technically fluent) but that is less than 40% of them and the rest are Marketing guys.&lt;br /&gt;&lt;br /&gt;Actually I loved the concept of "People Ready" software which I believe futuristic concept. It shows the maturity of the IT industry. Big thanks go to Microsoft for addressing this and I hope Microsoft will think backward compatibility issues and not to discontinue their tools and platforms as they wish b'cos many is going to suffer from it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-116201365417096814?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/116201365417096814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=116201365417096814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/116201365417096814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/116201365417096814'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2006/10/change-your-destiny.html' title='Change Your Destiny....'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18486664.post-115164401223957411</id><published>2006-06-29T22:04:00.000-07:00</published><updated>2007-04-21T09:28:42.230-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><title type='text'>ADO.NET Data Reader Vs DataSet</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;st1:stockticker&gt;&lt;b style=""&gt;&lt;span lang="NO-BOK"&gt;ADO&lt;/span&gt;&lt;/b&gt;&lt;/st1:stockticker&gt;&lt;b style=""&gt;&lt;span lang="NO-BOK"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;st1:stockticker&gt;&lt;b style=""&gt;&lt;span lang="NO-BOK"&gt;NET&lt;/span&gt;&lt;/b&gt;&lt;/st1:stockticker&gt;&lt;b style=""&gt;&lt;span lang="NO-BOK"&gt; Data Reader Vs DataSet&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="" lang="NO-BOK"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;For a long time I was thinking of maintaining my own blog, but unfortunately I couldn’t find time for it since I’m always busy with my office work.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Though I’m enjoying my daily life style very much, I always feel I’m not sharing my thoughts and knowledge with others. So here is my first writing in the area of &lt;st1:stockticker&gt;ADO&lt;/st1:stockticker&gt;.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt;.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Let’s start&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;When I first heard the name &lt;st1:stockticker&gt;ADO&lt;/st1:stockticker&gt;.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; I thought this is the next version of classic &lt;st1:city&gt;&lt;st1:place&gt;&lt;st1:stockticker&gt;ADO&lt;/st1:stockticker&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;. But I was wrong it’s totally new set of components that are optimized to the internet world.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:stockticker&gt;ADO&lt;/st1:stockticker&gt;.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; provides two options to retrieve data from an underlying data source. Those are:&lt;span style=""&gt;                  &lt;/span&gt;DataSet and&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                        &lt;/span&gt;DataReader&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The above are exposed through different providers in &lt;st1:stockticker&gt;ADO&lt;/st1:stockticker&gt;.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt;. &lt;span style=""&gt; &lt;/span&gt;Data providers in .&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; framework are used to connect to a database execute commands and retrieve data. This resides as a thin layer between the code base and the data source which optimizes the connectivity.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Lets start with DataReader&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There are number of Data Providers in &lt;st1:stockticker&gt;ADO&lt;/st1:stockticker&gt;.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; which has its own implementations of DataReader. Commonly they all have implemented the IDataReader interface. If you are sending out the DataReader from a method you can send it out as IDataReader which wraps the actual implementation which solves the problem of many actual implementations when passing the DataReader around different layers of your design.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;DataReader is a one way forward only, read only method to read data from a result set. Once you get data into a DataReader it’s very important to remember that the pointer is just before the first record in the result set. You have to call .Read() which moves the pointer to the next location in the result set and returns “true” if it is a valid row.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Common way of reading data from a DaraReader is as follows:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;SqlDataReader reader = command.ExecuteReader();&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;   If(reader.HasRows)&lt;br /&gt;   {&lt;/span&gt;&lt;/p&gt;       &lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;span style=""&gt;&lt;/span&gt;while(reader.Read())&lt;/span&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;       {&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;…..&lt;br /&gt;       }&lt;br /&gt;   }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;o:p&gt; D&lt;/o:p&gt;&lt;b style=""&gt;ataSets&lt;/b&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;DataSets are database independent in memory data store which can be used to access one or many tables. It can contain one or many DataTables and these tables can contain rows and columns of data.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Data within DataSets can be updated by the user and can persist to the underplaying data store through DataAdapters. DataAdapters are database specific implementations in DataProiders.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Which to be used?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If you need one way read only access to data that we often need in ASP.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; DataReader makes sense. ASP.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; is a stateless technology and you will not hold any data or database connections between requests. ASP.&lt;st1:stockticker&gt;NET&lt;/st1:stockticker&gt; allows holding data using session state but it’s not the ideal model to hold custom DataSets between requests and will not make your solution scalable. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The bad side of DataReader is it keeps the database connection open till you finish entire processing of your data. So keep in mind if you have any long processing requirements DataSets may be ideal.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For windows and Smart client applications DataSets are ideal since they maintain their state whole through its life time. The dark side of using DataSet is it holds the entire data store in memory. This may cause high memory requirements if you are loading thousands and millions of data into these DataSets. Data readers are ideal in such cases.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Some Key Points&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If you are passing a DataReader around your logical layers there is an inherent problem of closing the Database connection. This is one of the mistakes developers do in their developments which causes application performance and scalable issues. This issue can be solved by using the CommandBehavior.CloseConnection parameter with the ExecureReader which automatically close the database connection when closing the DataReader.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;command.ExecuteReader(&lt;span style="color:teal;"&gt;CommandBehavior&lt;/span&gt;.CloseConnection)&lt;/span&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;DataSets can be easily converted into XML and vise versa, this can be very useful if you want to serialize data across the wire (.ReadXML, .WriteXML methods can be used).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;span style=""&gt;DataSets are accepted by ASP.&lt;/span&gt;&lt;st1:stockticker&gt;&lt;span style=""&gt;NET&lt;/span&gt;&lt;/st1:stockticker&gt;&lt;span style=""&gt; web services and can return DataSets as well. You must be thinking this is strange, though you think it’s limits usability of you web service, it might be a good reason to use those features if you know all your web service consumers are .&lt;/span&gt;&lt;st1:stockticker&gt;&lt;span style=""&gt;NET&lt;/span&gt;&lt;/st1:stockticker&gt;&lt;span style=""&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18486664-115164401223957411?l=blog.kalharas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.kalharas.com/feeds/115164401223957411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=18486664&amp;postID=115164401223957411' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/115164401223957411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18486664/posts/default/115164401223957411'/><link rel='alternate' type='text/html' href='http://blog.kalharas.com/2006/06/adonet-data-reader-vs-dataset.html' title='ADO.NET Data Reader Vs DataSet'/><author><name>Kalhara</name><uri>http://www.blogger.com/profile/12380891043485230938</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01683786196382274598'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry></feed>