<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>.NETTER Characters...</title><link>https://weblogs.asp.net:443/ashraful/</link><description>Every part of your life is best, if you can know yourself and thus create your life like an artist! </description><item><title>30+ Technologies You Need to Know to Build Scalable Systems: Using Microsoft Based Technologies (Preferably)</title><link>https://weblogs.asp.net:443/ashraful/30-technologies-you-need-to-know-to-build-scalable-systems-using-microsoft-based-technologies-preferably</link><description>&lt;p&gt;One of the beauties of information technology world is it is continuously evolving and getting better everyday in almost lightning speed. Technologies are originally developed to make peoples life easy, which is also true for developers. Creating a web experience that captures and stores data is a matter for few minutes (in some cases few seconds) to build now a days, which required possibly few days to weeks on the early days of web development technologies.&lt;/p&gt;&lt;p&gt;While the better and better technologies are getting available for building robust applications easy, functional and scalability requirements are getting more complex day by day, due to the increased demand of different kind of usage and information. &lt;/p&gt;&lt;p&gt;Here I’ve tried to summarize a list of top technologies that can be used to build scalable systems efficiently, probably with weeks of efforts, which could be taking months to years few years back considering traditional systems. Few fundamental or basic considerations, such as programming/scripting languages, operating system choices, additional tooling etc have been intentionally ignored to make the list simple.&lt;/p&gt;&lt;p&gt;Although other combinations of technologies from other providers can be considered depending on different technical and business context basis, the technologies as listed here are mostly in Microsoft stack, with the productivity consideration of uniform interoperability across the technologies.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Windows-Live-Writer/b2361fd25ea9_CEF5/image_4.png"&gt;&lt;img width="528" height="794" title="image" style="display: inline; background-image: none;" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Windows-Live-Writer/b2361fd25ea9_CEF5/image_thumb_1.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here goes the list with additional details:&lt;/p&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;&lt;b&gt;Purpose&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;&lt;b&gt;Use Case&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;&lt;b&gt;Technology&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;Client Side&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Client Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;AngularJS&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Type System&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;TypeScript&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;UI Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Bootstrap&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;Backend&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Server Side MVC Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;ASP.NET MVC&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Server Side API Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;ASP.NET Web API&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Relational Data Access Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Assets, liabilities, income, expense (query)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Entity Framework&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Cloud Access Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Cloud storage access, logging etc&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure SDK&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Concurrency Framework&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;.NET Task API&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Telemetry Event Ingestion&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User activity log (accept)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Event Hub&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Enterprise Search&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Product search&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Search&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Prefix based Search&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Product search (with prefix)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt; &amp;lt;still not available, any suggestion?&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Item Recommendation&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Product recommendation&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure ML&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Server to Client Notification&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Sending monthly summary report&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Notification Hub&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Web Socket&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Sending monthly summary report&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;SignalIR&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;· &lt;b&gt; &lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Background Processing (Large)&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User activity log processing&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Worker Role&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Background Processing (Medium/Light)&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Sending monthly summary report&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;Azure Web Job&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Async Messaging (1:1)&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Queue Storage&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Async Messaging (1:N)&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Service Bus&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Server Deployment Environment &lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Web Role&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;Storage&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Log Data (i.e. User Log)&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User activity log (write)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Cassandra&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Analytics&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User activity analytics (analyze)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Cassandra&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Map Reduce&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User activity analytics (advanced)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure HD Insight&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Reporting&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Daily operational report&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Sql Server Reporting Service&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Binary content&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User profile picture, logo&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Blob Storage&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;CDN Cache&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User profile picture, logo (cached)&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure CDN&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;In Memory Cache&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;User session data&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Redis Cache&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Shopping Cart Data&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Shopping cart&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure Table Storage&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Catalog Data &lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Product catalog&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Azure DocumentDB&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Graph Data &lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Social network&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Neo4J&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;Financial Data&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;p&gt;Assets, liabilities, income, expense&lt;/p&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Sql (Azure) Database &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;ALM&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;ALM&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;VS Online&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="83" valign="top"&gt;&lt;p&gt;&lt;b&gt;-&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="255" valign="top"&gt;&lt;p&gt;IDE&lt;/p&gt;&lt;/td&gt;&lt;td width="272" valign="top"&gt;&lt;/td&gt;&lt;td width="192" valign="top"&gt;&lt;p&gt;Visual Studio&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Happy coding!&lt;/p&gt;</description><pubDate>Mon, 15 Sep 2014 11:32:37 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/30-technologies-you-need-to-know-to-build-scalable-systems-using-microsoft-based-technologies-preferably</guid></item><item><title>So, Who is a Software Architect? Hunting for a Simple Answer</title><link>https://weblogs.asp.net:443/ashraful/does-a-software-architect-code</link><description>&lt;p&gt;When I was a computer science student, I had a dream to become a software architect. Along with all of its &lt;a href="http://money.cnn.com/pf/best-jobs/2013/snapshots/3.html" target="_blank"&gt;glamorous coverage&lt;/a&gt; in software development community, this is probably one of the most desirable roles in software development.&lt;/p&gt;&lt;p&gt;Fortunately I didn’t have to wait for a long to become a Software Architect. Few small and medium success on software development given my employers&amp;nbsp; a confidence to push me towards a harder role, which with the glamorous title “Software Architect”, but eventually the lead software engineer.&lt;/p&gt;&lt;p&gt;The role description of software architect, which I found is over-described, over-talked – so that I become confused over time – what does a software architect do? More importantly – should they code?&lt;/p&gt;&lt;p&gt;With all 10 years of software development experience, I tried to recap what I did in my mind, then connected those with existing “Software Architect” definitions and finally tried to come up with the possible simplest description of software architect role (and yes! finally I convinced myself that I’m a Software Architect).&lt;/p&gt;&lt;h3&gt;What’s the Primary Goal of an Architect?&lt;/h3&gt;&lt;p&gt;A Software Architect balances between Productivity &amp;amp; Extensibility aligned with Customer Goal (Product or Project). Providing extensibility to adapt new changes is a expensive process, which of course requires productivity overhead. &lt;/p&gt;&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Windows-Live-Writer/Does-a-Software-Architect-Code_E7AC/image_5.png"&gt;&lt;img width="418" height="249" title="image" style="display: inline; background-image: none;" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Windows-Live-Writer/Does-a-Software-Architect-Code_E7AC/image_thumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;What Does a Software Architect Deliver?&lt;/h3&gt;&lt;p&gt;Provides &lt;em&gt;technical structure&lt;/em&gt; and &lt;em&gt;standards&lt;/em&gt; in given context to find the optimal solution.&lt;/p&gt;&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Windows-Live-Writer/Does-a-Software-Architect-Code_E7AC/image_4.png"&gt;&lt;img width="421" height="246" title="image" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Windows-Live-Writer/Does-a-Software-Architect-Code_E7AC/image_thumb_1.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In simple and short: Software Architects deliverables can be categorized into two &lt;p&gt;(1) Providing technical structure that meets customer and business goal, budget accordingly &lt;p&gt;(2) Providing a set of standards (best practices, conventions, cheat sheet etc) to be followed by its implementers.&lt;h3&gt;Design Architects VS Implementation Architects&lt;/h3&gt;&lt;p&gt;Software Architects can be considered in two levels: &lt;p&gt;(1) &lt;em&gt;Design Architects&lt;/em&gt;: who designs and provide standards from top level view.&lt;p&gt;(2) &lt;em&gt;Implementation Architects&lt;/em&gt;: does the same thing, but in addition bridges between the top level design and implementation, where he focuses taking the right decisions from deeper technical perspective (i.e. implementation of a certain algorithm with appropriate libraries etc).&lt;p&gt;For small and medium projects a single person may play both roles, whereas for complex projects or products, multiple persons may get involved.&lt;/p&gt;&lt;h3&gt;What are the Activities involved in an Architects Role?&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Structure&lt;ul&gt;&lt;li&gt;Technology selection&lt;li&gt;Defining non-functional requirements&lt;li&gt;Providing technical structure (logical layering, physical tiering)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Adaptability on changes&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Standards&lt;ul&gt;&lt;li&gt;Defining standards (best practices, coding standards, patterns etc)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Mentoring&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h3&gt;Should a Software Architect Code?&lt;/h3&gt;&lt;p&gt;Yes, of course! &lt;/p&gt;&lt;p&gt;I think the reason lots of people ask this question, because they try to relate a “Software Architect”s role with Building Architect’s role. However no matter what Building Architects don’t get involved doing actual “construction” work. Software Development, on the other hand, as a knowledge based industry is completely different from this point, as it requires the architects to evolve his design with real value from implementation perspective (provided that the software implementation and building construction work is far different from intellectual engagement point of view). &lt;/p&gt;&lt;p&gt;No matter a person is Design or Implementation Architect; he is required to come from a strong implementation background and should have a significant involvement in coding (from 30% to 70% of his time depending on project or product size and available resources).&lt;/p&gt;&lt;h3&gt;Further Reading&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/brown-are-you-a-software-architect"&gt;Are You a Software Architect?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://randomactsofarchitecture.com/2012/11/20/should-software-architects-write-code/"&gt;Should Software Architects Write Code?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description><pubDate>Thu, 10 Jul 2014 08:28:41 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/does-a-software-architect-code</guid></item><item><title>Announcement: Employee Info Starter Kit (v6.0–ASP.NET MVC Edition) is Released</title><link>https://weblogs.asp.net:443/ashraful/announcement-employee-info-starter-kit-v6-0-asp-net-mvc-edition-is-released</link><description>&lt;p&gt;After a long wait, the next version of Employee Info Starter Kit is released! This starter kit is basically a project template that contains code samples targeting a specific technology, such as ASP.NET Web Form, ASP.NET MVC etc. &lt;/p&gt;  &lt;p&gt;Since its first release, this open source project gained a huge popularity in the developer community and had 250K+ combined downloads. This starter kit is honored to be placed at the &lt;a href="http://www.asp.net/web-forms/samples" target="_blank"&gt;official ASP.NET site&lt;/a&gt;, along with other asp.net starter kits, which all are being considered as the “best” ASP.NET coding standards, recommended by Microsoft. EISK is showcased in Microsoft’s &lt;a href="http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-New-Mix-Sessions-announced-dissecting-IE9-Performance-Azure-Toolkit-for-WP7" target="_blank"&gt;Channel 9’s Weekly Show&lt;/a&gt;, as well.&lt;/p&gt;  &lt;p&gt;The &lt;a href="https://eisk.codeplex.com/releases/view/82905" target="_blank"&gt;ASP.NET MVC Edition of the new version&lt;/a&gt; 6.0 bundles most of the greatest and successful platforms, frameworks and technologies together, to enable web developers to learn and build manageable and high performance web applications with rich user experience effectively and quickly.&lt;/p&gt;  &lt;h5&gt;User End Specifications&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Creating a new employee record &lt;/li&gt;    &lt;li&gt;Read existing employee records &lt;/li&gt;    &lt;li&gt;Update an existing employee record &lt;/li&gt;    &lt;li&gt;Delete existing employee records &lt;/li&gt;    &lt;li&gt;Role based security model &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Key Technology Areas&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET MVC 4 &lt;/li&gt;    &lt;li&gt;Entity Framework 4.3.1 &lt;/li&gt;    &lt;li&gt;Sql Server Compact Edition 4 &lt;/li&gt;    &lt;li&gt;Visual Studio 2012 &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;QuickStart Guide&lt;/h5&gt;  &lt;p&gt;   &lt;br /&gt;Getting started with EISK 6.0 ASP.NET is pretty easy. Once you've Visual Studio 2012 installed, then just follow the steps as provided below:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_28DA2EC0.png" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the &lt;a href="http://eisk.codeplex.com/releases/view/82905#DownloadId=346822"&gt;EISK 6.0 MVC&lt;/a&gt; version. &lt;/li&gt;    &lt;li&gt;Extract the file. From the extracted folder, click the solution file &amp;quot;Eisk.MVC-VS2012.sln&amp;quot;. Right click the &amp;quot;Eisk.MVC&amp;quot; project node and select &amp;quot;Select set as StartUp Project&amp;quot;. &lt;/li&gt;    &lt;li&gt;Hit Ctrl+F5 and explore! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_5E0E85DB.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_428983D8.png" width="329" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;Architectural Overview&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Overall architecture is based on Model-View-Controller pattern &lt;/li&gt;    &lt;li&gt;Support for desktop &amp;amp; mobile browsers. &lt;/li&gt;    &lt;li&gt;Usage of Domain Model, Repository and Unit of Work pattern from Domain Driven Development approach &lt;/li&gt;    &lt;li&gt;Usage of Data Annotations in model (entity) classes to centralize basic validation mechanism that facilitates DRY principle &lt;/li&gt;    &lt;li&gt;Usage of IValidatableObject interface in model (entity) classes that isolates custom business logic from application layer &lt;/li&gt;    &lt;li&gt;Usage of OOP inheritance and Value Object pattern in model (entity) classes that provides reusability in application architecture &lt;/li&gt;    &lt;li&gt;Usage of View Model, Editor Model pattern that provides mechanism for testable view rendering logic &lt;/li&gt;    &lt;li&gt;Several helper classes and extension methods to enable developers build application with reduced code &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;   &lt;br /&gt;If you want to learn more about it in details, just check the following links:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://eisk.codeplex.com/wikipage?title=v6.0%20-%20ASP.NET%20MVC%20Edition%3a%20Getting%20Started"&gt;Getting Started&lt;/a&gt; - &lt;a href="http://eisk.codeplex.com/wikipage?title=v6.0%20-%20ASP.NET%20MVC%20Edition%3a%20Hands%20on%20Coding%20Walk%20through"&gt;Hands on Coding Walkthrough&lt;/a&gt; – &lt;a href="http://eisk.codeplex.com/wikipage?title=v6.0%20-%20ASP.NET%20MVC%20Edition%3a%20Technologies"&gt;Technology Stack&lt;/a&gt; - &lt;a href="http://eisk.codeplex.com/wikipage?title=v6.0%20-%20ASP.NET%20MVC%20Edition%3a%20Architectural%20Reference"&gt;Design &amp;amp; Architecture&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;</description><pubDate>Sun, 16 Jun 2013 10:07:35 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/announcement-employee-info-starter-kit-v6-0-asp-net-mvc-edition-is-released</guid></item><item><title>Pop Quiz: Why Don't Good Developers Want to Write Comments?</title><link>https://weblogs.asp.net:443/ashraful/pop-quiz-why-don-t-good-developers-want-to-write-comments</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture_403D7B7C.png"&gt;&lt;img title="Capture" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Capture" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture_thumb_69D146AF.png" width="244" height="226" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2" data-ft="{&amp;quot;tn&amp;quot;:&amp;quot;K&amp;quot;}"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0" class="UFICommentBody"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:0"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:0.:2"&gt;Before going to consider whether comments are really needed, let’s consider few other things that already became “rivals” of it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2" data-ft="{&amp;quot;tn&amp;quot;:&amp;quot;K&amp;quot;}"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0" class="UFICommentBody"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:0"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:0.:4"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2" data-ft="{&amp;quot;tn&amp;quot;:&amp;quot;K&amp;quot;}"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0" class="UFICommentBody"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:0"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:0.:4"&gt;Unit Tests: Having well written unit tests are smarter and useful solution, than detailed comments. Unit tes&lt;/span&gt;&lt;/span&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0.:0"&gt;ts not only can check for the quality (and better architectural design in case of TDD), but also serves as a documentation regarding how the API should be used. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2" data-ft="{&amp;quot;tn&amp;quot;:&amp;quot;K&amp;quot;}"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0" class="UFICommentBody"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0.:2"&gt;&lt;font size="2" face="Verdana"&gt;Advanced IDE Features: With the advanced features, such as conditional debugging, call stack, dependency graph (and a lot more) in modern IDE’s its relatively easy to understand the code without manually reading the comment and the code. &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2" data-ft="{&amp;quot;tn&amp;quot;:&amp;quot;K&amp;quot;}"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0" class="UFICommentBody"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0.:4"&gt;&lt;font size="2" face="Verdana"&gt;Architectural Documentation: A well written architectural documentation really helps people who intend to start working on an existing codebase. &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2" data-ft="{&amp;quot;tn&amp;quot;:&amp;quot;K&amp;quot;}"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0" class="UFICommentBody"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0.:6"&gt;Now the first question, whether comments are needed? The short answer is, yes. However in real world comment may lead to confusions if they are not maintained through the change cycle of the code. Thus it should be written only when it is really needed and should be maintained.&lt;/span&gt;                 &lt;br id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0.:7" /&gt;&lt;span id=".reactRoot[48].:1:1:1:comment575190545859705_575374469174646.:0.:1.:0.:1.:0.:0.:0:2.:0.:3.:0.:8"&gt;And the next question is why good developers don’t want to write comment? I’d say, people who build software that meet quality, time and budget accordingly are good developers, where almost everyone uses the “rivals” of comments, along with bare minimum comments (that are truly required), some of them are more obsessed to focus on unit tests, as these are automated and easy to maintain than comments.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 31 May 2013 14:55:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/pop-quiz-why-don-t-good-developers-want-to-write-comments</guid></item><item><title>Design Patterns for Model</title><link>https://weblogs.asp.net:443/ashraful/design-patterns-for-model</link><description>&lt;h2&gt;What is Model?&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image25_5D4D36F4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image25_thumb_3E669D49.png" width="242" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A model can be considered as a container&amp;#160; that facilitates presentation view, behavior and/or persisting data to/from data source (i.e. database etc). Besides the data container elements, a model may or may not contain behavior (i.e. logic), depending on design context of corresponding architecture.    &lt;br /&gt;While the term “Model” is frequently discussed and used in Model-View-Controller pattern context, it is one of most important consideration in current world of software architecture.&lt;/p&gt;  &lt;p&gt;Download the &lt;a href="http://eisk.codeplex.com/releases/82905/download/346822" target="_blank"&gt;EISK 6.0 MVC Edition&lt;/a&gt; release to see few of the patterns mentioned in this post – in action!&lt;/p&gt;  &lt;h2&gt;Common Container Models&lt;/h2&gt;  &lt;h3&gt;Entity&lt;/h3&gt;  &lt;p&gt;Entities can be considered as the “heart” of a data driven application and plays a primary role on all Model related patterns. By definition, each data container that is designed as an Entity - contains identity (i.e. primary key) and typically utilized to store data in structured storage system.&lt;/p&gt;  &lt;h3&gt;Value Object Pattern&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://martinfowler.com/eaaCatalog/valueObject.html" target="_blank"&gt;Value Objects&lt;/a&gt; are simple data containers which don’t have any identity. A value object may participate in an entity object as member to provide an object oriented style design or may itself be used as Data Transfer Object (discussed later) to transfer data.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_1479638A.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_4B070ECE.png" width="428" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure: &lt;em&gt;the Person class represents an Entity, where as the Address class represents a Value Object&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Model Set Pattern&lt;/h3&gt;  &lt;p&gt;As the name applies - a Model Set encapsulates a set of model objects in a single class.    &lt;br /&gt;While containing objects of different type in a single class is very common in software architecture and implementation world, defining the term “Model Set” in model related architecture context will enable understanding different boundaries in different scenarios.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_546D08DB.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_3234FD55.png" width="232" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Data Transfer Object Pattern&lt;/h3&gt;  &lt;p&gt;As the name applies, &lt;a href="http://martinfowler.com/eaaCatalog/dataTransferObject.html" target="_blank"&gt;Data Transfer Object&lt;/a&gt; (DTO) is used to transfer data from one boundary to another. According to Fowler - &lt;em&gt;an object that carries data between processes in order to reduce the number of method&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Data Transfer Objects can be considered a form of Model Set pattern, in addition with a mandatory responsibility of participation in transferring data.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Relevant patterns:&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Model Set Pattern &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Business Models&lt;/h2&gt;  &lt;h3&gt;Domain Model Pattern&lt;/h3&gt;  &lt;p&gt;By definition, &lt;a href="http://martinfowler.com/eaaCatalog/domainModel.html" target="_blank"&gt;Domain Model&lt;/a&gt; is - &lt;em&gt;an object model of the domain that incorporates both behavior and data.&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;Models in a domain model object graph, contains core business logic&lt;em&gt;.&lt;/em&gt; Domain object typically contains identity. &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_1DCF37CA.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_7D847B4C.png" width="495" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Trigger Model Pattern &lt;/h3&gt;  &lt;p&gt;Each model is responsible to execute relevant business rules, each of which is encapsulated in a separate class, containing utility methods to facilitate unit testing.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_438ED4D4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_350FC4B0.png" width="495" height="482" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure: &lt;em&gt;A sequence diagram demonstrating a portion of Trigger Model work flow. Click the image for larger view.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Relevant patterns:&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Single Responsibility Principle &lt;/li&gt;    &lt;li&gt;Transaction Script Design Pattern &lt;/li&gt;    &lt;li&gt;Domain Model Design Pattern &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;User Interface Models &lt;/h2&gt;  &lt;h3&gt;Presentation Model Pattern&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://martinfowler.com/eaaDev/PresentationModel.html" target="_blank"&gt;Presentation Model&lt;/a&gt; (also known as Application Model) &lt;em&gt;represents the state and behavior of the presentation independently of the GUI controls used in the interface.&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;Apart from handling user interaction related behaviors, Presentation Model may utilize Presentation Data Models (discussed later) effectively to minimize user interface rendering logic in view.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_1F32B88C.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_6F847432.png" width="472" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure (courtesy: &lt;a href="http://martinfowler.com" target="_blank"&gt;Martin Fowler&lt;/a&gt;): &lt;em&gt;How objects react to clicking the classical check box.&lt;/em&gt; &lt;/p&gt;  &lt;h3&gt;Presentation Data Model&lt;/h3&gt;  &lt;p&gt;It is often beneficial to create a presentation data model that contains decorated version of domain data models, which are completely presentation friendly. &lt;/p&gt;  &lt;p&gt;For instance, if we have a property “Notes”, for a given employee in a domain object, we can create our view friendly model that will encapsulate necessary display logic in a property of presentation data model. In that way we can reduce untestable and unmaintainable code from view. Such an example is shown as below:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_1287AC24.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_0FFE7A66.png" width="642" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Based on characteristics, Presentation Data Models can be categorized on 2 primary ways:&lt;/p&gt;  &lt;h4&gt;View Model Pattern&lt;/h4&gt;  &lt;p&gt;As mentioned earlier, instead embedding display rendering logic to view, it is often beneficial for testing and maintainability to construct the view rendering logic in to a separate class before sending the model to view. View models are not typically designed to be persisted to database. &lt;/p&gt;  &lt;p&gt;Some people consider “View Model” to have Editor related data as well, which I think is very confusing, as the term “View” provides a “read-only” impression. Patterns specific to editor related data are discussed later.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_2DE6C5F7.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_04234B04.png" width="204" height="291" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Relevant patterns: &lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Façade Pattern &lt;/li&gt;    &lt;li&gt;Data Transfer Object &lt;/li&gt;    &lt;li&gt;Presentation Model &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Editor Model Pattern&lt;/h4&gt;  &lt;p&gt;Editor model is a special model to facilitate rendering appropriate data in editor user interface, where the entity and other editor related objects are encapsulated in a single view friendly class and enables the entity to be persisted to database upon submission of data to service. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Relevant patterns:&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Façade Pattern &lt;/li&gt;    &lt;li&gt;Data Transfer Object &lt;/li&gt;    &lt;li&gt;Presentation Model &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Editor Model Pattern can be categorized in 2 following ways:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Member Editor Model Pattern&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Member Editor Model is a simple form of Editor Model pattern, where the persistence entity object is placed in a Model Set as a class member. Other class members of the Model Set include related presentation friendly objects.    &lt;br /&gt;Since the Model Set contains the database persistence entity, it requires very less coding effort to perform crud operation.     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_084D22C9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_36E32BAB.png" width="495" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Relevant patterns:&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Model Set Pattern &lt;/li&gt;    &lt;li&gt;Façade Pattern &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Adapter Editor Model Pattern&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Adapter Editor Model Pattern combines the benefit of View Model and Editor Model pattern, with an additional overhead of adapter component that converts a editor model object to entity object to facility working with data access layer.    &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Relevant patterns:&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;View Model Pattern &lt;/li&gt;    &lt;li&gt;Façade Pattern &lt;/li&gt;    &lt;li&gt;Adapter Design Pattern &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope you found it useful. Cheers!&lt;/p&gt;  &lt;p&gt;Subscribe me on &lt;a href="http://www.facebook.com/ashraful.alam" target="_blank"&gt;Facebook&lt;/a&gt;, if you like the post and are interested to learn my latest thoughts!&lt;/p&gt;</description><pubDate>Sun, 19 Feb 2012 16:25:22 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/design-patterns-for-model</guid></item><item><title>Imagine Cup 2011: Finalist Team from Bangladesh Announced</title><link>https://weblogs.asp.net:443/ashraful/imagine-cup-2011-finalist-team-from-bangladesh-announced</link><description>&lt;p&gt;Every year Microsoft organizes software contest &lt;a href="http://en.wikipedia.org/wiki/Imagine_Cup" target="_blank"&gt;Imagine Cup&lt;/a&gt; where young technologists around the world participate based on a theme: to help resolve some of the world&amp;rsquo;s toughest challenges.&lt;/p&gt;
&lt;p&gt;This year, a team from Bangladesh is also going to participate in Imagine Cup final round, which has been selected among hundreds of teams in Bangladesh, through different phases.&lt;/p&gt;
&lt;p&gt;As one of the judges of Imagine Cup 2011 to select finalists from Bangladesh, I was very excited to see the efforts that were given by all the participants of Imagine Cup 2011 from Bangladesh.&lt;/p&gt;
&lt;p&gt;One of the most exciting things that I enjoyed, besides excellence in software engineering, all participants put their effort on innovation to do some good for humankind, by being encouraged with the theme of this competition.&lt;/p&gt;
&lt;p&gt;On 10&lt;sup&gt;th&lt;/sup&gt; May 2011, the result has been announced. &amp;ldquo;Team Rapture&amp;rdquo; won the first position, which will participate to the final round of Imagine Cup 2011, to be held in USA on July. Their project was focused on mobile phone client software to make the life easy for visually impaired people.&lt;/p&gt;
&lt;p&gt;I believe this is just a good start to show the brightest light from Bangladesh to the world.&lt;/p&gt;
&lt;p&gt;Thanks to all who participated and congratulations to the winning team!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</description><pubDate>Thu, 12 May 2011 11:17:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/imagine-cup-2011-finalist-team-from-bangladesh-announced</guid></item><item><title>Microsoft datajs API: A 5 Minutes Quick Start</title><link>https://weblogs.asp.net:443/ashraful/microsoft-datajs-api-a-5-minutes-quick-start</link><description>&lt;p&gt;Ajax enabled data centric applications are getting popular day by day in web development space. While these type of web applications provide rich user experience, building a robust and powerful application quickly is a great challenge for developers. Fortunately Microsoft has started providing great frameworks, plug-ins and APIs to facilitate this process.&lt;/p&gt;  &lt;p&gt;Last week Microsoft &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2011/04/13/announcing-datajs-version-0-0-3.aspx" target="_blank"&gt;announced&lt;/a&gt; a new version of java-script API “&lt;a href="http://datajs.codeplex.com/" target="_blank"&gt;datajs&lt;/a&gt;”, which is intended to help web developers to build data centric AJAX applications quickly, along with utilizing modern browsers features (such as HTML5 local storage, IndexDB etc) and protocols (such as oData). Datajs is designed to be small, fast and easy to use.&lt;/p&gt;  &lt;p&gt;While datajs includes lots of cool features, today in this post, I will have a very basic introductory quick start so that any developer can have an idea how datajs can be implemented in different application architecture. Checkout last week’s &lt;a href="http://channel9.msdn.com/events/MIX/MIX11/HTM02" target="_blank"&gt;MIX session video&lt;/a&gt; to learn few cool features available in datajs.&lt;/p&gt;  &lt;p&gt;Download the full quick start sample from &lt;a href="http://code.msdn.microsoft.com/datajs-API-Quick-Start-9e28fe34" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Invoking Cross-Domain Service&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://developer.netflix.com/docs/oData_Catalog" target="_blank"&gt;Netflix&lt;/a&gt; has provided an excellent oData API to enable developers to experiment with their data hosted in their infrastructure. The code below, uses NetFlix service and datajs API to show movie data. The cool thing is you really don’t need to build any web or data service to test your app.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;datajs-0.0.3.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://odata.netflix.com/Catalog/Titles&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        OData.defaultHttpClient.enableJsonpCallback = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        OData.read(&lt;/pre&gt;

  &lt;pre class="alt"&gt;                url,&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (data, request) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;var&lt;/span&gt; html = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; data.results.length; i++) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                        html += &lt;span class="str"&gt;&amp;quot;&amp;lt;div&amp;gt;&amp;quot;&lt;/span&gt; + data.results[i].Name + &lt;span class="str"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;                    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    document.getElementById(&lt;span class="str"&gt;&amp;quot;Movies&amp;quot;&lt;/span&gt;).innerHTML = html;&lt;/pre&gt;

  &lt;pre&gt;                },&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (err) {&lt;/pre&gt;

  &lt;pre&gt;                    alert(&lt;span class="str"&gt;&amp;quot;Error occurred &amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                });&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Movies - dataJS + Netflix&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Movies&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;h2&gt;&amp;#160;&lt;/h2&gt;

&lt;h2&gt;Invoking WCF Data Service&lt;/h2&gt;

&lt;p&gt;WCF Data Service is a part of Windows Communication Foundation that exposes REST style data. You can use Entity Framework to build WCF Data Service in literally few seconds. &lt;/p&gt;

&lt;p&gt;WCF Data Service code:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WCF_Data_Service : DataService&amp;lt;DatabaseContext&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; InitializeService(DataServiceConfiguration config)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            config.SetEntitySetAccessRule(&lt;span class="str"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;, EntitySetRights.All);&lt;/pre&gt;

  &lt;pre&gt;            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;and the UI code:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;datajs-0.0.3.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;../App_Service/WCF-Data-Service.svc/Employees&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        OData.read(&lt;/pre&gt;

  &lt;pre&gt;                url,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (data, request) {&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;var&lt;/span&gt; html = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; data.results.length; i++) {&lt;/pre&gt;

  &lt;pre&gt;                        html += &lt;span class="str"&gt;&amp;quot;&amp;lt;div&amp;gt;&amp;quot;&lt;/span&gt; + data.results[i].FirstName + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + data.results[i].LastName + &lt;span class="str"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    }&lt;/pre&gt;

  &lt;pre&gt;                    document.getElementById(&lt;span class="str"&gt;&amp;quot;dvEmployees&amp;quot;&lt;/span&gt;).innerHTML = html;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                },&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (err) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    alert(&lt;span class="str"&gt;&amp;quot;Error occurred &amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;                });&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Employees - dataJS + WCF Data Service + oData&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;dvEmployees&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;h2&gt;&amp;#160;&lt;/h2&gt;

&lt;h2&gt;Invoking WCF Service&lt;/h2&gt;

&lt;p&gt;While WCF Data Service enables you to build REST style services pretty quickly, one problem with this approach is, it’s very hard to implement business logic during CRUD operation. One solution in this regard, is to create Ajax Enabled WCF Service, where you will invoke a web method, that contains your business logic. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[ServiceContract(Namespace = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre&gt;    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WCF_Business_Service&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        [OperationContract]&lt;/pre&gt;

  &lt;pre&gt;        [WebInvoke(Method = &lt;span class="str"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;, ResponseFormat = WebMessageFormat.Json)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Customer&amp;gt; GetAllCustomers()&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            List&amp;lt;Customer&amp;gt; lst = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Customer&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="rem"&gt;//business logic goes here&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; lst;&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;For the WCF Service contract, as shown above, you will use datajs, as shown below:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;datajs-0.0.3.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;../App_Service/WCF-Business-Service.svc/GetAllCustomers&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        OData.read(&lt;/pre&gt;

  &lt;pre&gt;                url,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (data, request) {&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;var&lt;/span&gt; html = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; data.results.length; i++) {&lt;/pre&gt;

  &lt;pre&gt;                        html += &lt;span class="str"&gt;&amp;quot;&amp;lt;div&amp;gt;&amp;quot;&lt;/span&gt; + data.results[i].FirstName + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + data.results[i].LastName + &lt;span class="str"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    }&lt;/pre&gt;

  &lt;pre&gt;                    document.getElementById(&lt;span class="str"&gt;&amp;quot;dvCustomers&amp;quot;&lt;/span&gt;).innerHTML = html;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                },&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (err) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    alert(&lt;span class="str"&gt;&amp;quot;Error occurred&amp;quot;&lt;/span&gt; + err.message);&lt;/pre&gt;

  &lt;pre&gt;                });&lt;/pre&gt;

  &lt;pre class="alt"&gt;       &lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Employees - dataJS + WCF Service (Ajax Enabled) + oData&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;dvCustomers&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;h2&gt;&amp;#160;&lt;/h2&gt;

&lt;h2&gt;Lets Make it Look Better!&lt;/h2&gt;

&lt;p&gt;So far the samples we have seen, contains very plain markup in HTML. The sample below shows how we can use in ASP.NET, along with jQuery Template plug-in to make it look better!&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/App_Resources/default.master&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceHolderID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;HeadContentPlaceHolder&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;='text/javascript'&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# ResolveUrl (&amp;quot;~/App_Resources/client-scripts/framework/jquery-tmpl.js&amp;quot;) %&amp;gt;'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &amp;lt;script type=&lt;span class="str"&gt;'text/javascript'&lt;/span&gt; src=&lt;span class="str"&gt;'&amp;lt;%# ResolveUrl (&amp;quot;~/datajs-oData/datajs-0.0.3.min.js&amp;quot;) %&amp;gt;'&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;../App_Service/WCF-Data-Service.svc/Employees&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;        OData.read(&lt;/pre&gt;

  &lt;pre class="alt"&gt;                url,&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (data, request) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    $(&lt;span class="str"&gt;&amp;quot;#employeeListingTemplateContainer&amp;quot;&lt;/span&gt;).empty();&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;var&lt;/span&gt; returnedEmployeeCollection = data.results;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    $(&lt;span class="str"&gt;&amp;quot;#employeeListingTemplate&amp;quot;&lt;/span&gt;).tmpl({ employeeCollection: returnedEmployeeCollection }).appendTo(&lt;span class="str"&gt;&amp;quot;#employeeListingTemplateContainer&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                },&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;function&lt;/span&gt; (err) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    alert(&lt;span class="str"&gt;&amp;quot;Error occurred &amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;                });&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &amp;lt;!-- Employee Listing Template --&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &amp;lt;script id=&lt;span class="str"&gt;&amp;quot;employeeListingTemplate&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text/html&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;        &amp;lt;tbody&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;HeaderStyle&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                &amp;lt;td&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;a&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                        First Name&amp;lt;/a&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                &amp;lt;td&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;a&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                        Last Name&amp;lt;/a&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                &amp;lt;td&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;a&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                        Country&amp;lt;/a&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;               &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            {{each employeeCollection}}&lt;/pre&gt;

  &lt;pre&gt;                &amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;RowStyle&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                        ${FirstName}&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                    &amp;lt;td&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                        ${LastName}&lt;/pre&gt;

  &lt;pre&gt;                    &amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                        ${Country}&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            {{/each}}&lt;/pre&gt;

  &lt;pre&gt;        &amp;lt;/tbody&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceHolderID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BodyContentPlaceholder&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;title-regular&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Employees&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        In this page you will be able to view the list of all employess.&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;employeeListingTemplateContainer&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GridView&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;-- Employee listing table data will be placed here--&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Here goes the UI:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_4FEFCC0D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_7AE7BA12.png" width="644" height="380" /&gt;&lt;/a&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

&lt;p&gt;Download the entire quick start code sample from &lt;a href="http://code.msdn.microsoft.com/datajs-API-Quick-Start-9e28fe34" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;</description><pubDate>Mon, 18 Apr 2011 23:36:29 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/microsoft-datajs-api-a-5-minutes-quick-start</guid></item><item><title>Employee Info Starter Kit: Project Mission</title><link>https://weblogs.asp.net:443/ashraful/employee-info-starter-kit-project-mission</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSIXProject_small_56870B07.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VSIXProject_small" border="0" alt="VSIXProject_small" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSIXProject_small_thumb_1EF14A19.png" width="161" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://eisk.codeplex.com/" target="_blank"&gt;Employee Info Starter Kit&lt;/a&gt; is an open source ASP.NET project template that is intended to address different types of real world challenges faced by web application developers when performing common CRUD operations. Using a single database table ‘Employee’, it illustrates how to utilize Microsoft ASP.NET 4.0, Entity Framework 4.0 and Visual Studio 2010 effectively in that context.&lt;/p&gt;  &lt;p&gt;Employee Info Starter Kit is highly influenced by the concept ‘&lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt;’ or 80-20 rule. where it is targeted to enable a web developer to gain 80% productivity with 20% of effort with respect to learning curve and production.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSIXProject_large_7842BDCB.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VSIXProject_large" border="0" alt="VSIXProject_large" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSIXProject_large_thumb_2744F9A3.png" width="244" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;User Stories&lt;/h3&gt;  &lt;p&gt;The user end functionalities of this starter kit are pretty simple and straight forward that are focused in to perform CRUD operation on employee records as described below.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creating a new employee record &lt;/li&gt;    &lt;li&gt;Read existing employee record &lt;/li&gt;    &lt;li&gt;Update an existing employee record &lt;/li&gt;    &lt;li&gt;Delete existing employee records &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Key Technology Areas&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET 4.0 &lt;/li&gt;    &lt;li&gt;Entity Framework 4.0 &lt;/li&gt;    &lt;li&gt;T-4 Template &lt;/li&gt;    &lt;li&gt;Visual Studio 2010 &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architectural Objective&lt;/h3&gt;  &lt;p&gt;There is no universal architecture which can be considered as the best for all sorts of applications around the world. Based on requirements, constraints, environment, application architecture can differ from one to another. Trade-off factors are one of the important considerations while deciding a particular architectural solution.&lt;/p&gt;  &lt;p&gt;Employee Info Starter Kit is highly influenced by the concept ‘&lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt;’ or 80-20 rule, where it is targeted to enable a web developer to gain 80% productivity with 20% of effort with respect to learning curve and production.&lt;/p&gt;  &lt;p&gt;“Productivity” as the architectural objective typically also includes other trade-off factors as well as, such as testability, flexibility, performance etc. Fortunately Microsoft .NET Framework 4.0 and Visual Studio 2010 includes lots of great features that have been implemented cleverly in this project to reduce these trade-off factors in the minimum level.&lt;/p&gt;  &lt;h3&gt;Why Employee Info Starter Kit is Not a Framework?&lt;/h3&gt;  &lt;p&gt;Application frameworks are really great for productivity, some of which are really unavoidable in this modern age. However relying too many frameworks may overkill a project, as frameworks are typically designed to serve wide range of different usage and are less customizable or editable. On the other hand having implementation patterns can be useful for developers, as it enables them to adjust application on demand. Employee Info Starter Kit provides hundreds of “connected” snippets and implementation patterns to demonstrate problem solutions in actual production environment. It also includes Visual Studio T-4 templates that generate thousands lines of data access and business logic layer repetitive codes in literally few seconds on the fly, which are fully mock testable due to language support for partial methods and latest support for mock testing in Entity Framework.&lt;/p&gt;  &lt;h3&gt;Why Employee Info Starter Kit is Different than Other Open-source Web Applications?&lt;/h3&gt;  &lt;p&gt;Software development is one of the rapid growing industries around the globe, where the technology is being updated very frequently to adapt greater challenges over time. There are literally thousands of community web sites, blogs and forums that are dedicated to provide support to adapt new technologies. While some are really great to enable learning new technologies quickly, in most cases they are either too “simple and brief” to be used in real world scenarios or too “complex and detailed” which are typically focused to achieve a product goal (such as CMS, e-Commerce etc) from &amp;quot;end user&amp;quot; perspective and have a long duration learning curve with respect to the corresponding technology. Employee Info Starter Kit, as a web project, is basically &amp;quot;developer&amp;quot; oriented which actually considers a hybrid approach as “simple and detailed”, where a simple domain has been considered to intentionally illustrate most of the architectural and implementation challenges faced by web application developers so that anyone can dive into deep into the corresponding new technology or concept quickly.&lt;/p&gt;  &lt;h3&gt;Roadmap&lt;/h3&gt;  &lt;p&gt;Since its first release by 2008 in &lt;a href="http://archive.msdn.microsoft.com/eisk"&gt;MSDN Code Gallery&lt;/a&gt;, Employee Info Starter Kit gained a huge popularity in ASP.NET community and had 1, 50,000+ downloads afterwards. Being encouraged with this great response, we have a strong commitment for the community to provide support for it with respect to latest technologies continuously.&lt;/p&gt;  &lt;p&gt;Currently hosted in &lt;a href="http://eisk.codeplex.com/" target="_blank"&gt;Codeplex&lt;/a&gt;, this community driven project is planned to have a wide range of individual editions, each of which will be focused on a selected application architecture, framework or platform, such as ASP.NET Webform, ASP.NET Dynamic Data, ASP.NET MVC, jQuery Ajax (RIA), Silverlight (RIA), Azure Service Platform (Cloud), Visual Studio Automated Test etc. &lt;a href="http://eisk.codeplex.com/wikipage?title=Employee%20Info%20Starter%20Kit%20Editions"&gt;See here for full list of current and future editions&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 17 Mar 2011 21:32:44 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/employee-info-starter-kit-project-mission</guid></item><item><title>Announcement: Employee Info Starter Kit (v5.0) is Released</title><link>https://weblogs.asp.net:443/ashraful/announcement-employee-info-starter-kit-v5-0-is-released</link><description>&lt;blockquote&gt;   &lt;p&gt;Ever wanted to have a simple jQuery menu bound with ASP.NET web site map file? &lt;/p&gt;    &lt;p&gt;Ever wanted to have cool css design stuffs implemented on your ASP.NET data bound controls?&lt;/p&gt;    &lt;p&gt;Ever wanted to let Visual Studio generate logical layers for you, which can be easily tested, customized and bound with ASP.NET data controls?&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If your answers with respect to above questions are ‘yes’, then you will probably happy to try out &lt;a href="http://eisk.codeplex.com/releases/view/61932" target="_blank"&gt;latest release (v5.0)&lt;/a&gt; of Employee Starter Kit, which is intended to address different types of real world challenges faced by web application developers when performing common CRUD operations. Using a single database table ‘Employee’, the current release illustrates how to utilize Microsoft ASP.NET 4.0 Web Form Data Controls, Entity Framework 4.0 and Visual Studio 2010 effectively in that context.&lt;/p&gt;  &lt;p&gt;Employee Info Starter Kit is an open source ASP.NET project template that is highly influenced by the concept ‘&lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt;’ or 80-20 rule, where it is targeted to enable a web developer to gain 80% productivity with 20% of effort with respect to learning curve and production.&lt;/p&gt;  &lt;p&gt;This project template is titled as “Employee Info Starter Kit”, which was initially hosted on &lt;a href="http://archive.msdn.microsoft.com/eisk"&gt;Microsoft Code Gallery&lt;/a&gt; and been downloaded 1, 50,000+ of copies afterword.&amp;#160; The latest version of this starter kit is hosted in &lt;a href="http://eisk.codeplex.com/releases/view/61932"&gt;Codeplex&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSIXProject_large_6FA51F24.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VSIXProject_large" border="0" alt="VSIXProject_large" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSIXProject_large_thumb_72F690FF.png" width="642" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Release Highlights&lt;/h3&gt;  &lt;h4&gt;User End Functional Specification&lt;/h4&gt;  &lt;p&gt;The user end functionalities of this starter kit are pretty simple and straight forward that are focused in to perform CRUD operation on employee records as described below.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creating a new employee record &lt;/li&gt;    &lt;li&gt;Read existing employee records &lt;/li&gt;    &lt;li&gt;Update an existing employee record &lt;/li&gt;    &lt;li&gt;Delete existing employee records &lt;/li&gt; &lt;/ul&gt; &lt;b&gt;   &lt;h4&gt;Architectural Overview&lt;/h4&gt; &lt;/b&gt;  &lt;ul&gt;   &lt;li&gt;Simple 3 layer architecture (presentation, business logic and data access layer) &lt;/li&gt;    &lt;li&gt;ASP.NET web form based user interface &lt;/li&gt;    &lt;li&gt;Built-in code generators for logical layers, implemented in Visual Studio default template engine (T4) &lt;/li&gt;    &lt;li&gt;Built-in Entity Framework entities as business entities (aka: data containers) &lt;/li&gt;    &lt;li&gt;Data Mapper design pattern based Data Access Layer, implemented in C# and Entity Framework &lt;/li&gt;    &lt;li&gt;Domain Model design pattern based Business Logic Layer, implemented in C# &lt;/li&gt;    &lt;li&gt;Object Model for Cross Cutting Concerns (such as validation, logging, exception management) &lt;/li&gt; &lt;/ul&gt; &lt;b&gt;   &lt;h4&gt;Minimum System Requirements&lt;/h4&gt; &lt;/b&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2010 (Web Developer Express Edition) or higher &lt;/li&gt;    &lt;li&gt;Sql Server 2005 (Express Edition) or higher &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Technology Utilized&lt;/h4&gt;  &lt;p&gt;&lt;u&gt;Programming Languages/Scripts&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Browser side: JavaScript &lt;/li&gt;    &lt;li&gt;Web server side: C# &lt;/li&gt;    &lt;li&gt;Code Generation Template: T-4 Template &lt;/li&gt; &lt;/ul&gt; &lt;u&gt;Frameworks&lt;/u&gt;   &lt;ul&gt;   &lt;li&gt;.NET Framework 4.0 &lt;/li&gt;    &lt;li&gt;JavaScript Framework: jQuery 1.5.1 &lt;/li&gt;    &lt;li&gt;CSS Framework: 960 grid system &lt;/li&gt; &lt;/ul&gt; &lt;u&gt;.NET Framework Components&lt;/u&gt;   &lt;ul&gt;   &lt;li&gt;.NET Entity Framework &lt;/li&gt;    &lt;li&gt;.NET Optional/Named Parameters &lt;i&gt;(new in .net 4.0)&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;.NET Tuple &lt;i&gt;(new in .net 4.0)&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;.NET Extension Method &lt;/li&gt;    &lt;li&gt;.NET Lambda Expressions &lt;/li&gt;    &lt;li&gt;.NET Anonymous Type &lt;/li&gt;    &lt;li&gt;.NET Query Expressions &lt;/li&gt;    &lt;li&gt;.NET Automatically Implemented Properties &lt;/li&gt;    &lt;li&gt;.NET LINQ &lt;/li&gt;    &lt;li&gt;.NET Partial Classes and Methods &lt;/li&gt;    &lt;li&gt;.NET Generic Type &lt;/li&gt;    &lt;li&gt;.NET Nullable Type &lt;/li&gt;    &lt;li&gt;ASP.NET Meta Description and Keyword Support &lt;i&gt;(new in .net 4.0)&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;ASP.NET Routing &lt;i&gt;(new in .net 4.0)&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;ASP.NET Grid View (CSS support for sorting - &lt;i&gt;(new in .net 4.0)&lt;/i&gt;) &lt;/li&gt;    &lt;li&gt;ASP.NET Repeater &lt;/li&gt;    &lt;li&gt;ASP.NET Form View &lt;/li&gt;    &lt;li&gt;ASP.NET Login View &lt;/li&gt;    &lt;li&gt;ASP.NET Site Map Path &lt;/li&gt;    &lt;li&gt;ASP.NET Skin &lt;/li&gt;    &lt;li&gt;ASP.NET Theme &lt;/li&gt;    &lt;li&gt;ASP.NET Master Page &lt;/li&gt;    &lt;li&gt;ASP.NET Object Data Source &lt;/li&gt;    &lt;li&gt;ASP.NET Role Based Security &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Getting Started Guide&lt;/h3&gt;  &lt;p&gt;To see Employee Info Starter Kit in action is pretty easy! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/ashraful/image_28DA2EC0.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_3FB9003C.png" width="383" height="122" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://eisk.codeplex.com/releases/61932/download/213263" target="_blank"&gt;Download&lt;/a&gt; the latest version. &lt;/li&gt;    &lt;li&gt;Extract the file. From the extracted folder click the C# project file (Eisk.Web.csproj) to open it in Visual Studio 2010 &lt;/li&gt;    &lt;li&gt;Hit Ctrl+F5! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The current release (v5.0) of Employee Info Starter Kit is properly packaged, fully documented and well tested. If you want to learn more about it in details, just check the following links: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://eisk.codeplex.com/releases/view/61932"&gt;Release Home Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://eisk.codeplex.com/wikipage?title=v5.0%20-%20ASP.NET%20Web%20Form%20Edition:%20Installation%20Walk%20Through"&gt;Installation Walkthrough&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://eisk.codeplex.com/wikipage?title=v5.0%20-%20ASP.NET%20Web%20Form%20Edition:%20Hand%20on%20Coding%20Walkthrough"&gt;Hand on Coding Walkthrough&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://eisk.codeplex.com/wikipage?title=v5.0%20-%20ASP.NET%20Web%20Form%20Edition:%20Technical%20Reference"&gt;Technical Reference&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblog.ashraful.net%2farchive%2f2011%2f03%2f13%2fannouncement-employee-info-starter-kit-v5.0-is-released.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http%3A%2F%2Fwww.dotnetkicks.com%2FServices%2FImages%2FKickItImageGenerator.ashx%3Furl%3Dhttp%253a%252f%252fblog.ashraful.net%252farchive%252f2011%252f03%252f13%252fannouncement-employee-info-starter-kit-v5.0-is-released.aspx%26bgcolor%3D666666" /&gt;&lt;/a&gt;</description><pubDate>Sat, 12 Mar 2011 21:01:05 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/announcement-employee-info-starter-kit-v5-0-is-released</guid></item><item><title>Creating Multi-Project Templates with Wizard Using Visual Studio 2010</title><link>https://weblogs.asp.net:443/ashraful/creating-multi-project-templates-with-wizard-using-visual-studio-2010</link><description>&lt;p&gt;A VSIX file enables us to install Visual Studio extensions (tools, controls, template etc) with few clicks. I&amp;#160; have created a simple example of creating multi-project templates with wizard using Visual Studio 2010, which generates VSIX file. Checkout the sample in codeplex &lt;a href="http://vsix.codeplex.com/releases/view/59376" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture_339CF6EE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture_thumb_0828B027.png" width="240" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 18 Jan 2011 22:09:24 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/creating-multi-project-templates-with-wizard-using-visual-studio-2010</guid></item><item><title>T-4 Templates for ASP.NET Web Form Databound Control Friendly Logical Layers</title><link>https://weblogs.asp.net:443/ashraful/t-4-templates-for-asp-net-web-form-databound-control-friendly-logical-layers</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture_00E47CCF.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture_thumb_3EED71B3.png" width="644" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I just released an open source project at &lt;a href="http://t4ef.codeplex.com/releases/view/59044" target="_blank"&gt;codeplex&lt;/a&gt;, which includes a set of T-4 templates to enable you to build logical layers (i.e. DAL/BLL) with just few clicks! The logical layers implemented here are&amp;#160; based on Entity Framework 4.0, ASP.NET Web Form Data Bound control friendly and fully unit testable.&lt;/p&gt;  &lt;p&gt;In this open source project you will get Entity Framework 4.0 based T-4 templates for following types of logical layers: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Data Access Layer:&lt;/b&gt; Entity Framework 4.0 provides excellent ORM data access layer. It also includes support for T-4 templates, as built-in code generation strategy in Visual Studio 2010, where we can customize default structure of data access layer based on Entity Framework. default structure of data access layer has been enhanced to get support for mock testing in Entity Framework 4.0 object model. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Business Logic Layer:&lt;/b&gt; ASP.NET web form based data bound control friendly business logic layer, which will enable you few clicks to build data bound web applications on top of ASP.NET Web Form and Entity Framework 4.0 quickly with great support of mock testing. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture2_1F0A1285.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Capture2" border="0" alt="Capture2" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/Capture2_thumb_3A0295F9.png" width="376" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://t4ef.codeplex.com/releases/59044/download/197087"&gt;Download&lt;/a&gt; it to make your web development productive. Enjoy!&lt;/p&gt;</description><pubDate>Wed, 12 Jan 2011 20:20:20 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/t-4-templates-for-asp-net-web-form-databound-control-friendly-logical-layers</guid><category>architecture</category><category>best pratices</category><category>c#</category><category>coding</category><category>community</category><category>database</category><category>Developer</category><category>entity framework 4.0</category><category>implementation</category><category>Microsoft</category><category>product</category><category>share</category><category>software development</category><category>Test</category><category>testing</category><category>tools</category><category>visual studio</category><category>Visual studio 2010</category></item><item><title>.NETTER Code Starter Pack v1.0.beta Released</title><link>https://weblogs.asp.net:443/ashraful/netter-code-starter-pack-v1-0-beta-released</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/team-acc-logo_37C98318.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="team-acc-logo" border="0" alt="team-acc-logo" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/team-acc-logo_thumb_0F4AA104.jpg" width="126" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://codebox.codeplex.com/releases/view/57382" target="_blank"&gt;.NETTER Code Starter Pack&lt;/a&gt; contains a gallery of &lt;b&gt;Visual Studio 2010&lt;/b&gt; solutions leveraging latest and new technologies released by Microsoft. Each Visual Studio solution included here is focused to provide a very simple starting point for cutting edge development technologies and framework, using well known Northwind database. The current release of this project includes starter samples for the following technologies:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET Dynamic Data QuickStart (TBD) &lt;/li&gt;    &lt;li&gt;Azure Service Platform      &lt;ul&gt;       &lt;li&gt;Windows Azure Hello World &lt;/li&gt;        &lt;li&gt;Windows Azure Storage Simple CRUD &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Database Scripts &lt;/li&gt;    &lt;li&gt;Entity Framework 4.0 (TBD) &lt;/li&gt;    &lt;li&gt;SharePoint 2010      &lt;ul&gt;       &lt;li&gt;Visual Web Part Linq QuickStart &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Silverlight      &lt;ul&gt;       &lt;li&gt;Business App Hello World &lt;/li&gt;        &lt;li&gt;WCF RIA Services QuickStart &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Utility Framework      &lt;ul&gt;       &lt;li&gt;MEF &lt;/li&gt;        &lt;li&gt;Moq QuickStart &lt;/li&gt;        &lt;li&gt;T-4 QuickStart &lt;/li&gt;        &lt;li&gt;Unity QuickStart &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;WCF      &lt;ul&gt;       &lt;li&gt;WCF Data Services QuickStart &lt;/li&gt;        &lt;li&gt;WCF Hello World &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;WorkFlow Foundation &lt;/li&gt;    &lt;li&gt;Web API      &lt;ul&gt;       &lt;li&gt;Facebook Toolkit QuickStart &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Download link: &lt;a title="http://codebox.codeplex.com/releases/view/57382" href="http://codebox.codeplex.com/releases/view/57382"&gt;http://codebox.codeplex.com/releases/view/57382&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1f6a6c88-25fb-406f-948a-f22451aecf9f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/release" rel="tag"&gt;release&lt;/a&gt;,&lt;a href="http://technorati.com/tags/new+release" rel="tag"&gt;new release&lt;/a&gt;,&lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mef" rel="tag"&gt;mef&lt;/a&gt;,&lt;a href="http://technorati.com/tags/unity" rel="tag"&gt;unity&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sharepoint" rel="tag"&gt;sharepoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wcf" rel="tag"&gt;wcf&lt;/a&gt;&lt;/div&gt;</description><pubDate>Sun, 12 Dec 2010 13:46:19 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/netter-code-starter-pack-v1-0-beta-released</guid></item><item><title>Getting Started with Employee Info Starter Kit (v4.0.0)</title><link>https://weblogs.asp.net:443/ashraful/getting-started-with-employee-info-starter-kit-v4-0-0</link><description>&lt;p&gt;&lt;script type="text/javascript"&gt;
tweetmeme_url = 'http://weblogs.asp.net/ashraful/archive/2010/03/19/getting-started-with-employee-info-starter-kit-v4-0-0.aspx';
&lt;/script&gt;&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The new release of Employee Info Starter Kit contains lots of exciting features available in Visual Studio 2010 and .NET 4.0. To get started with the new version, you will need less than 5 minutes.&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Minimum System Requirements&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;Before getting started, please make sure you have installed Visual Studio 2010 RC (or higher) and Sql Server 2005 Express edition (or higher installed on your machine.&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Running the Starter Kit for First Time&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;1. Download the starter kit 4.0.0 version form &lt;/font&gt;&lt;a href="http://eisk.codeplex.com/releases/view/42206#DownloadId=111599"&gt;&lt;font size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; and extract it.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;2. Go to &amp;lt;extraction folder&amp;gt;\Source\Eisk.Solution and click the solution file&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;3. From the solution explorer, right click the “Eisk.Web” web site project node and select “Set as Startup Project” and hit Ctrl + F5&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_05Mar.1916.39_5768B891.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ScreenHunter_05 Mar. 19 16.39" border="0" alt="ScreenHunter_05 Mar. 19 16.39" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_05Mar.1916.39_thumb_34C47A16.gif" width="450" height="484" /&gt;&lt;/a&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;4. You will be prompted to install database, just follow the instruction. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;That’s it! You are ready to use this starter kit.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_193F7813.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_5613F9E5.png" width="244" height="142" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;Running the Tests&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;Employee Info Starter Kit contains a infrastructure for Integration and Unit Testing, by utilizing cool test tools in Visual Studio 2010. Once you complete the steps, mentioned above, take a minute to run the test cases on the fly.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;1. From the solution explorer, to go “Solution Items\e-i-s-k-2010.vsmdi” and click it. You will see the available Tests in the Visual Studio Test Lists. Select all, except the “Load Tests” node (since Load Tests takes a bit time)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;2. Click “Run Checked Tests” control from the upper left corner.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_07Mar.1916.41_5EB45271.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ScreenHunter_07 Mar. 19 16.41" border="0" alt="ScreenHunter_07 Mar. 19 16.41" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_07Mar.1916.41_thumb_29C74D34.gif" width="644" height="271" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;You will see the tests running and finally the status of the tests, which indicates the current health of you application from different scenarios.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_08Mar.1916.44_07230EB9.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ScreenHunter_08 Mar. 19 16.44" border="0" alt="ScreenHunter_08 Mar. 19 16.44" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_08Mar.1916.44_thumb_6B9E0CB5.gif" width="251" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:edad2e1e-f1bc-4eaa-8682-53c7c6e9e71b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/starter+kit" rel="tag"&gt;starter kit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/employee+info+starter+kit" rel="tag"&gt;employee info starter kit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/visual+studio+2010" rel="tag"&gt;visual studio 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.net+4.0" rel="tag"&gt;.net 4.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/entity+framework" rel="tag"&gt;entity framework&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;script type="text/javascript"&gt;
tweetmeme_url = 'http://weblogs.asp.net/ashraful/archive/2010/03/19/getting-started-with-employee-info-starter-kit-v4-0-0.aspx';
&lt;/script&gt;&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/p&gt;</description><pubDate>Fri, 19 Mar 2010 10:48:39 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/getting-started-with-employee-info-starter-kit-v4-0-0</guid></item><item><title>Employee Info Starter Kit (v4.0.0) - Visual Studio 2010 and .NET 4.0 Version is Available Now</title><link>https://weblogs.asp.net:443/ashraful/employee-info-starter-kit-visual-studio-2010-and-net-4-0-version-4-0-0-available</link><description>&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;Employee Info Starter Kit is a ASP.NET based web application, which includes very simple user requirements, where we can create, read, update and delete (crud) the employee info of a company. Based on just a database table, it explores and solves most of the major problems in web development architectural space.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;This open source starter kit extensively uses major features available in latest Visual Studio, ASP.NET and Sql Server to make robust, scalable, secured and maintainable web applications quickly and easily. &lt;/span&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;Since it's first release, this starter kit achieved a huge popularity in web developer community and includes 1,50,000+ downloads from &lt;/span&gt;&lt;a href="http://code.msdn.microsoft.com/eisk" mce_href="http://code.msdn.microsoft.com/eisk"&gt;&lt;span style="font-size: small;" size="2"&gt;project web site&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="2"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2010 and .NET 4.0 came up with lots of exciting features to make software developers life easier.&amp;nbsp; A new version (v4.0.0) of Employee Info Starter Kit is now available in both &lt;/span&gt;&lt;a href="http://code.msdn.microsoft.com/eisk/Release/ProjectReleases.aspx" mce_href="http://code.msdn.microsoft.com/eisk/Release/ProjectReleases.aspx"&gt;&lt;span style="font-size: small;" size="2"&gt;MSDN Code Gallery&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="2"&gt; and &lt;/span&gt;&lt;a href="http://eisk.codeplex.com/releases/view/42206" mce_href="http://eisk.codeplex.com/releases/view/42206"&gt;&lt;span style="font-size: small;" size="2"&gt;CodePlex&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="2"&gt;. Checkout the latest version of this starter kit to enjoy cool features available in Visual Studio 2010 and .NET 4.0.&lt;/span&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_0148E301.png"&gt;&lt;img width="279" height="484" title="image" style="display: inline; border-width: 0px;" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_4946EF1D.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;span style="font-size: small;" size="2"&gt;[ Release Notes ]&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;span style="font-size: small;" size="2"&gt;Architectural Overview &lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Simple 2 layer architecture (user interface and data access layer) with 1 optional cache layer &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET Web Form based user interface &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Custom Entity Data Container implemented (with primitive C# types for data fields) &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Active Record Design Pattern based Data Access Layer, implemented in C# and Entity Framework 4.0 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Sql Server Stored Procedure to perform actual CRUD operation &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Standard infrastructure (architecture, helper utility) for automated integration (bottom up manner) and unit testing &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;b&gt;Technology Utilized&lt;/b&gt; &lt;br /&gt; &lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Programming Languages/Scripts&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Browser side: JavaScript &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Web server side: C# 4.0 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Database server side: T-SQL &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;span style="text-decoration: underline;"&gt;.NET Framework Components&lt;/span&gt; &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 4.0 Entity Framework &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 4.0 Optional/Named Parameters &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 4.0 Tuple &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 3.0+ Extension Method &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 3.0+ Lambda Expressions &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 3.0+ Anonymous Type &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 3.0+ Query Expressions &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 3.0+ Automatically Implemented Properties &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 3.0+ LINQ &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 2.0 + Partial Classes &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 2.0+ Generic Type &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;.NET 2.0+ Nullable Type &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 3.5+ List View (TBD) &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 3.5+ Data Pager (TBD) &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 2.0+ Grid View &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 2.0+ Form View &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 2.0+ Skin &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 2.0+ Theme &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 2.0+ Master Page &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 2.0+ Object Data Source &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;ASP.NET 1.0+ Role Based Security &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;span style="text-decoration: underline;"&gt;Visual Studio Features&lt;/span&gt; &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2010 CodedUI Test &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2010 Layer Diagram &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2010 Sequence Diagram &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2010 Directed Graph &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2005+ Database Unit Test &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2005+ Unit Test &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2005+ Web Test &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Visual Studio 2005+ Load Test &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p mce_keep="true"&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;span style="text-decoration: underline;"&gt;Sql Server Features&lt;/span&gt; &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Sql Server 2005 Stored Procedure &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Sql Server 2005 Xml type &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;Sql Server 2005 Paging support &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:45f61a79-c7a9-49c0-a39e-9f1c61e07a76" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/starter+kit" rel="tag"&gt;starter kit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sql+server" rel="tag"&gt;sql server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/new+release" rel="tag"&gt;new release&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url="&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 18 Mar 2010 19:48:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/employee-info-starter-kit-visual-studio-2010-and-net-4-0-version-4-0-0-available</guid></item><item><title>My MVP Award is Renewed!</title><link>https://weblogs.asp.net:443/ashraful/my-mvp-award-is-renewed</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/mvp_logo_4A3FB0EA.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mvp_logo" border="0" alt="mvp_logo" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/mvp_logo_thumb_1699D53D.png" width="135" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Yesterday I’ve been informed that I’ve gained the Most Valuable Professional award again for next year, in ASP.NET category. This is the third time I have received this award, which is pretty exciting. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Here is my MVP profile: &lt;/font&gt;&lt;a title="https://mvp.support.microsoft.com/profile/Ashraful" href="https://mvp.support.microsoft.com/profile/Ashraful"&gt;&lt;font size="2"&gt;https://mvp.support.microsoft.com/profile/Ashraful&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Special thanks to few Microsoft employees including Technical Fellow &lt;/font&gt;&lt;a href="http://blogs.msdn.com/bharry/archive/2009/03/10/lots-of-news.aspx" target="_blank"&gt;&lt;font size="2"&gt;Brain Harry&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, Sr. Program Manager &lt;/font&gt;&lt;a href="http://www.misfitgeek.com" target="_blank"&gt;&lt;font size="2"&gt;Joe Stagner&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, Lead Product Manager &lt;/font&gt;&lt;a href="http://channel9.msdn.com/shows/This%20Week%20On%20Channel%209/This-Week-on-C9-Jeff-Sandquist-and-Bill-Gates-stories/" target="_blank"&gt;&lt;font size="2"&gt;Dan Fernandez&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; and South Asia MVP Lead &lt;/font&gt;&lt;a href="http://twitter.com/abhishekkant" target="_blank"&gt;&lt;font size="2"&gt;Abhishek Kant&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; who encouraged and supported me in several ways last year. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Thanks Microsoft for this recognition, which will encourage me to keep my passion on MS products continued with more optimization and greater efforts.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:718b61d0-41bd-43f2-bad0-e654652b66df" class="wlWriterSmartContent"&gt;&lt;font size="2"&gt;Technorati Tags: &lt;/font&gt;&lt;a href="http://technorati.com/tags/community" rel="tag"&gt;&lt;font size="2"&gt;community&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;a href="http://technorati.com/tags/mvp" rel="tag"&gt;&lt;font size="2"&gt;mvp&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;a href="http://technorati.com/tags/developer" rel="tag"&gt;&lt;font size="2"&gt;developer&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;</description><pubDate>Thu, 02 Jul 2009 07:44:58 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/my-mvp-award-is-renewed</guid></item><item><title>Microsoft Day @ Dhaka: Community Feedback, Pictures and Resources</title><link>https://weblogs.asp.net:443/ashraful/microsoft-day-dhaka-community-feedback-pictures-and-resources</link><description>&lt;p&gt;Thanks everybody who Participated in the event &lt;a href="http://msdnbangladesh.net/content/msday.aspx" target="_blank"&gt;Microsoft Day @ Dhaka&lt;/a&gt;, held on 20 June 2009 at IDB Auditorium, Dhaka. It was an excellent gathering of 250+ professionals, specially developers in Bangladesh. &lt;/p&gt;  &lt;p&gt;Besides the knowledge sharing stuffs, the event was very successful to create a social gathering of technical professionals. I was really found it pretty nice that, I have meet at least 20+ guys there, whom I knew and meet virtually before.&lt;/p&gt;  &lt;p&gt;The good news for the community is, we will be organizing the similar events in futures and organize it in a better way based on community feedback we received.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Presentation Slides: Overview of Visual Studio Team System 2010&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here goes my presentation slides used in the event.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="text-align: left; width: 425px" id="__ss_1608906"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Overview of Visual Studio Team System 2010" href="http://www.slideshare.net/joycsc/overview-of-visual-studio-team-system-2010?type=powerpoint"&gt;Overview of Visual Studio Team System 2010&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ashrafulvsts2010v3-090619092818-phpapp02&amp;amp;stripped_title=overview-of-visual-studio-team-system-2010" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ashrafulvsts2010v3-090619092818-phpapp02&amp;amp;stripped_title=overview-of-visual-studio-team-system-2010" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;OpenOffice presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/joycsc"&gt;joycsc&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Pictures:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image02_1B368736.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image-02" border="0" alt="image-02" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image02_thumb_50D163FF.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image06_23DE91D5.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image-06" border="0" alt="image-06" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image06_thumb_407D9E59.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image04_28E88197.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image-04" border="0" alt="image-04" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image04_thumb_055174A1.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/DSC00139_00051EA1.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00139" border="0" alt="DSC00139" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/DSC00139_thumb_1B6222F7.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/DSC00117_6AD135EF.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00117" border="0" alt="DSC00117" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/DSC00117_thumb_2ABFC7CA.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/DSC00130_3345B7C5.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00130" border="0" alt="DSC00130" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/DSC00130_thumb_3CC6284E.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Community Feedback and Resources:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Check the &lt;a href="http://www.facebook.com/group.php?gid=196082925042" target="_blank"&gt;facebook user group&lt;/a&gt; for related resources, other images etc. You can put your suggestions and feedback &lt;a href="http://msdnbangladesh.net/forums/p/973/1309.aspx" target="_blank"&gt;here in the msdnbangladesh site&lt;/a&gt; to make the future events better.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7351e6b8-ddc6-4b97-be43-de33432077d7" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/community" rel="tag"&gt;community&lt;/a&gt;,&lt;a href="http://technorati.com/tags/microsoft" rel="tag"&gt;microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vsts" rel="tag"&gt;vsts&lt;/a&gt;,&lt;a href="http://technorati.com/tags/team+system" rel="tag"&gt;team system&lt;/a&gt;,&lt;a href="http://technorati.com/tags/developer" rel="tag"&gt;developer&lt;/a&gt;&lt;/div&gt;</description><pubDate>Mon, 22 Jun 2009 13:25:26 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/microsoft-day-dhaka-community-feedback-pictures-and-resources</guid></item><item><title>See You on Microsoft Day @ Dhaka!</title><link>https://weblogs.asp.net:443/ashraful/see-you-on-microsoft-day-dhaka</link><description>&lt;p&gt;&lt;font face="ver"&gt;&lt;a href="http://msdnbangladesh.net/content/msday.aspx"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ScreenHunter_02 Jun. 04 16.46" border="0" alt="ScreenHunter_02 Jun. 04 16.46" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/ScreenHunter_02Jun.0416.46_26DEEFC2.gif" width="644" height="265" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver"&gt;Microsoft Community in Bangladesh proudly presents Microsoft Day @ Dhaka. This is a special day dedicated to all Microsoft technology professionals and students in Bangladesh. We will be having the best Microsoft community technologists from Bangladesh - Microsoft Most Valuable Professionals (MVPs) delivering sessions at the event. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver"&gt;This technology marathon is a great opportunity to learn from the best and network with each other.      &lt;br /&gt;Both Microsoft developers and networking professionals would find the event worth attending.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver"&gt;I am really very excited to be a part of this event, both as an organizer as well as as a speaker. I’ll be delivering speech there on Visual Studio Team System 2010. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver"&gt;If you not already registered, but don’t want to miss this cool event, register now at the &lt;a href="http://msdnbangladesh.net/content/msday.aspx" target="_blank"&gt;msdn bangladesh site&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;See you there!&lt;/p&gt;  &lt;p&gt;Check below the agenda of this event.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;AUDITORIUM – Dev Track&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;9:00 - 9:30: Opening Speech - Feroz Mahmood &lt;/p&gt;  &lt;p&gt;9:30 - 10:30: Development in ASP.NET [LINQ, Web Forms, Dynamic Data] - Tanzim Saqib &lt;/p&gt;  &lt;p&gt;10:30 - 11:15: My First ASP.NET MVC App - Mehfuz Hossain &lt;/p&gt;  &lt;p&gt;11:15 - 11:45 : Unit Testing in MVC and Demo of dotnetshoutouts.com - Kazi Manzur Rashid &lt;/p&gt;  &lt;p&gt;11:45- 12:30: Developing in Silverlight - Faisal Hossain Khan &lt;/p&gt;  &lt;p&gt;12:30 - 1:30: Lunch &lt;/p&gt;  &lt;p&gt;1:30 - 2:00 : Introduction to Sharepoint/ MOSS - Jannatul Ferdous &lt;/p&gt;  &lt;p&gt;2:00 - 2:45: Production Challenges of ASP.NET Websites - Omar Al Zabir &lt;/p&gt;  &lt;p&gt;2:45 - 3:15: Windows Azure - Ashic &lt;/p&gt;  &lt;p&gt;3:15 - 3:45: Tea Break &lt;/p&gt;  &lt;p&gt;3:45 - 4:30:&amp;#160; Overview of Visual Studio Team System 2010 - Mohammad Ashraful Alam &lt;/p&gt;  &lt;p&gt;4:30 - 5:30:&amp;#160;&amp;#160; Features of Windows 7 - IE8 and Windows Live Features - Omi Azad &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BREAK OUT – IT Pro Track&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;9:00 - 9:30: Opening Speech - Feroz Mahmood [IN AUDITORIUM] &lt;/p&gt;  &lt;p&gt;9:30 – 10:30: Exchange Server 2010 &lt;/p&gt;  &lt;p&gt;10:30 - 11:30: Windows Server 2008 - Virtualisation &amp;amp; HyperV &lt;/p&gt;  &lt;p&gt;11:30 - 12:30: Talking Windows Server 2008 and R2 [Windows Client &amp;amp; Windows Server 2008 NAP – Better Together] - Anwar Hossain (Technical Specialist, MS Bangladesh) &lt;/p&gt;  &lt;p&gt;12:30 - 1:30: Lunch &lt;/p&gt;  &lt;p&gt;1:30 - 2:15:&amp;#160; Session on MS Project &amp;amp; EPM : M. Manzurur Rahman (CEO, ICT Alliance) &lt;/p&gt;  &lt;p&gt;2:15 - 3:00: Office 2007 &lt;/p&gt;  &lt;p&gt;3:00 - 3:30: Tea Break &lt;/p&gt;  &lt;p&gt;3:30 - 4:30:&amp;#160; Introduction to SQL Server 2008 &lt;/p&gt;  &lt;p&gt;4:30 - 5:30:&amp;#160;&amp;#160; Features of Windows 7 - IE8 and Windows Live Features - Omi Azad [IN AUDITORIUM] &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:05cbc1be-9e65-4901-b067-217e2c04a5db" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/community" rel="tag"&gt;community&lt;/a&gt;,&lt;a href="http://technorati.com/tags/event" rel="tag"&gt;event&lt;/a&gt;,&lt;a href="http://technorati.com/tags/microsoft" rel="tag"&gt;microsoft&lt;/a&gt;&lt;/div&gt;</description><pubDate>Wed, 17 Jun 2009 09:34:50 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/see-you-on-microsoft-day-dhaka</guid></item><item><title>5 Quick Steps to Get Introduced with Visual Studio Team System and Team Foundation Server 2010 (Beta 1)</title><link>https://weblogs.asp.net:443/ashraful/5-quick-steps-to-get-introduced-with-visual-studio-team-system-and-team-foundation-server-2010-beta-1</link><description>&lt;p&gt;&lt;font face="ve"&gt;Last month (May 2009) Microsoft has released its first beta for Visual Studio Team System 2010 and Team Foundation Server 2010 release, two of the most waited and wanted&amp;#160; tools in developer community. From my point of view these two releases are going to be one of the most historical releases, as lots of really cool stuffs has been added with respect to the last version.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/164__320x240_microsoftannouncesvisualstudio2010andneframework4_l_5A7862EB.jpg"&gt;&lt;font face="ve"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="164__320x240_microsoft-announces-visual-studio-2010-and-ne-framework-4_l" border="0" alt="164__320x240_microsoft-announces-visual-studio-2010-and-ne-framework-4_l" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/164__320x240_microsoftannouncesvisualstudio2010andneframework4_l_thumb_6B7F217F.jpg" width="244" height="177" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;However, as the Beta 1 releases are pretty infant, there are very limited resources available in the web and community, so I just wanted to gather all of the useful resources with respect to these two tools in one place, so that anyone can move forward from installation to first “Hello VSTS/TFS” excitement smoothly!&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="ve"&gt;Step 1. What’s New on VSTS 2010 and TFS 2010&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSTSStadium_3_1D0D1FC6.jpg"&gt;&lt;font face="ve"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VSTSStadium_3" border="0" alt="VSTSStadium_3" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/VSTSStadium_3_thumb_0101823D.jpg" width="522" height="319" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;Well, you are really liking what the tools you are using, however you are pretty interested what are the cool stuffs that MS bring with VSTS 2010 and TFS 2010. Here we go:&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="ve"&gt;Jason Zander, General Manager, Visual Studio, Developer Division provides lots of images in his &lt;/font&gt;&lt;a href="http://blogs.msdn.com/jasonz/archive/2009/05/18/announcing-vs2010-net-framework-4-0-beta-1.aspx" target="_blank"&gt;&lt;font face="ve"&gt;Visual Studio 2010 Beta 1 release announcement&lt;/font&gt;&lt;/a&gt; to have an overall idea about its core features&lt;font face="ve"&gt;.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="ve"&gt;MSDN provides an excellent, yet simple &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/bb725993.aspx" target="_blank"&gt;&lt;font face="ve"&gt;overview of VSTS 2010&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; with some brief intro of top features available in VSTS 2010.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="ve"&gt;Microsoft Fellow Biran Harry provides a quick overview of &lt;a href="http://blogs.msdn.com/bharry/archive/2009/04/08/team-system-2010-overview.aspx" target="_blank"&gt;VSTS 2010 features&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/bharry/archive/2009/04/19/team-foundation-server-2010-key-concepts.aspx" target="_blank"&gt;&lt;font face="ve"&gt;TFS 2010 key concepts&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="ve"&gt;Biran Harry also explaining cool new features of TFS 2010 in this &lt;/font&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL52/" target="_blank"&gt;&lt;font face="ve"&gt;Channel 9 video&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;.&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&lt;font face="ve"&gt;Step 2: Installation Planning&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://cid-ec3c8f2028d842d5.skydrive.live.com/self.aspx/Blog%20Content/Planning%20for%20TFS%202010.pdf" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="https://xlfdag.bay.livefilestore.com/y1mopB-Q1XtMQI_8UgQRQeq3Kc_3RxvSp12rCNJvAhuVAWWqfLn-TwgV4EBQKsRW2GdMUFpXHOAPcWsiXkPu93TweMRsoTKZtumTIREAmHmg779wEh2QyUTKQ8EDUzANdxvFJxsSzapjtWPWJgqlTtdbA/ScreenShot015[19].png" width="562" height="370" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;Well, you are convinced VSTS 2010 and TFS 2010 new features are really cool. Now you need to plan, if your existing infrastructure is supported. &lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="ve"&gt;While VSTS 2010 installation is pretty simple, TFS 2010 installation stuffs are pretty large deal. Team System MVP &lt;a href="http://freetodev.spaces.live.com/blog/" target="_blank"&gt;Mike&lt;/a&gt; has provided an &lt;/font&gt;&lt;a href="http://cid-ec3c8f2028d842d5.skydrive.live.com/self.aspx/Blog%20Content/Planning%20for%20TFS%202010.pdf" target="_blank"&gt;excellent diagram&lt;/a&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;font face="ve"&gt; with respect to Microsoft Fellow Brian Harry’s &lt;/font&gt;&lt;a href="http://blogs.msdn.com/bharry/archive/2008/09/23/charting-a-course-for-tfs-rosario.aspx" target="_blank"&gt;&lt;font face="ve"&gt;post&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;, which really shows on the fly which software installation are required/recommended/not supported while installing TFS 2010.&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&lt;font face="ve"&gt;Step 3: Installer Download&lt;/font&gt;&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="ve"&gt;Visual Studio Team System 2010 (Beta 1) &lt;/font&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=255fc5f1-15af-4fe7-be4d-263a2621144b&amp;amp;displaylang=en" target="_blank"&gt;&lt;font face="ve"&gt;download link&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="ve"&gt;Team Foundation Server 2010 (Beta 1) &lt;/font&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58665c27-7023-4a50-b31d-c39cd86a415f&amp;amp;displaylang=en" target="_blank"&gt;&lt;font face="ve"&gt;download link&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;.&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&lt;font face="ve"&gt;Step 4: Installation Walkthrough&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/TFS_3E04F228.jpg"&gt;&lt;font face="ve"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TFS" border="0" alt="TFS" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/TFS_thumb_740C01E6.jpg" width="244" height="172" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;As soon as the required files are downloaded, you are ready to go start the installation.&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="ve"&gt;Brian Keller provides an excellent walkthrough explaining the installation process of TFS 2010 Beta 1 &lt;/font&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-20-Downloading-and-Installing-Visual-Studio-2010-Beta-1/" target="_blank"&gt;&lt;font face="ve"&gt;in this Channel 9 video&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;. It also includes installation process (along with all relevant download links/instruction) of other pre-requisites of TFS 2010, including Sql Server 2008 Beta 1 and supporting software as VSTS 2010.&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&lt;font face="ve"&gt;Step 5: First Walkthrough with VSTS 2010 and TFS 2010&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/hero_2010_v3_46B21E29.png"&gt;&lt;font face="ve"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="hero_2010_v3" border="0" alt="hero_2010_v3" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/hero_2010_v3_thumb_29F2C60B.png" width="244" height="141" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;And finally you are done with the installation! Great and congratulations! What what to do? Take some breath and move forward to the exciting world of VSTS 2010 and TFS stuffs, to see on hand and own eye, what really been implemented by MS guys.&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="ve"&gt;Jason Zander, General Manager, Visual Studio, Developer Division provides a quick walkthrough from creating a simple WPF application to testing it using the latest cool features available in Visual Studio 2010 in this two part (&lt;/font&gt;&lt;a href="http://blogs.msdn.com/jasonz/archive/2009/05/22/vs2010-tutorial-build-a-wpf-app-with-beta-1.aspx" target="_blank"&gt;&lt;font face="ve"&gt;part 1&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; and &lt;/font&gt;&lt;a href="http://blogs.msdn.com/jasonz/archive/2009/05/26/vs2010-tutorial-testing-tutorial-step-2.aspx" target="_blank"&gt;&lt;font face="ve"&gt;part 2&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;) blog post.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-20-Downloading-and-Installing-Visual-Studio-2010-Beta-1/" target="_blank"&gt;&lt;font face="ve"&gt;Brian Keller’s video&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;, as mentioned in the earlier section also have a quick walkthrough with TFS 2010 Beta 1. Really cool for beginners.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="ve"&gt;Although the earlier version of TFS (2008) is considered, but I really liked this walkthrough written by Mitch Denny, in this two part (&lt;/font&gt;&lt;a href="http://www.builderau.com.au/strategy/developmentprocess/soa/The-what-why-and-how-of-Team-Foundation-Server-Part-1/0,339028278,339273402,00.htm" target="_blank"&gt;&lt;font face="ve"&gt;part 1&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; and &lt;/font&gt;&lt;a href="http://www.builderau.com.au/strategy/developmentprocess/soa/The-what-why-and-how-of-Team-Foundation-Server-Part-2/0,339028278,339273404,00.htm" target="_blank"&gt;&lt;font face="ve"&gt;part 2&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt;) article. Extremely helpful and quick&amp;#160; resource to begin working with such a big developer platform like Team Foundation Server.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="ve"&gt;If you wish to know more about TFS but need a single resource to explore most of the powerful features, you can have a look on this book, hosted at &lt;/font&gt;&lt;a href="http://www.codeplex.com/TFSGuide" target="_blank"&gt;&lt;font face="ve"&gt;CodePlex&lt;/font&gt;&lt;/a&gt;&lt;font face="ve"&gt; and published by the team. The TFS version is 2008, however hopefully they will publish the updated version of this book with respect to the latest version of TFS.&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0be3075a-071e-420c-8fcc-a149fd558acb" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/visual+studio" rel="tag"&gt;visual studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/2010" rel="tag"&gt;2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/tfs" rel="tag"&gt;tfs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/team+system" rel="tag"&gt;team system&lt;/a&gt;,&lt;a href="http://technorati.com/tags/team+foundation+server" rel="tag"&gt;team foundation server&lt;/a&gt;&lt;/div&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font face="ve"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fgeekswithblogs.net%2fjoycsharp%2farchive%2f2009%2f06%2f03%2f5-quick-steps-to-get-introduced-with-visual-studio-team.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fgeekswithblogs.net%2fjoycsharp%2farchive%2f2009%2f06%2f03%2f5-quick-steps-to-get-introduced-with-visual-studio-team.aspx" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ve"&gt;&lt;/font&gt;&lt;/p&gt;</description><pubDate>Wed, 03 Jun 2009 14:13:39 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/5-quick-steps-to-get-introduced-with-visual-studio-team-system-and-team-foundation-server-2010-beta-1</guid></item><item><title>Aggregator Provider Pattern: An Extension of Provider Pattern</title><link>https://weblogs.asp.net:443/ashraful/aggregator-provider-pattern-an-extension-of-provider-pattern</link><description>&lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;strong&gt;Definition&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Aggregator Provider Pattern is an extension of Provider Pattern, which enables us to create and utilize multiple instance of the class having the same provider interface. In this pattern, there is an Aggregator class which implements the provider interface and contains a collection of instances of classes having the same provider interface.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;The underlying caller class of this aggregator is simply unaware of how many provider instances do the caller Provider Aggregator contains, but all of the provider instances will be utilized with a single invocation from the caller class.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_60231B20.png"&gt;&lt;font face="ver" size="2"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="269" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_589A3C64.png" width="467" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;strong&gt;Comparison with Provider Pattern&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Provider Aggregator Pattern is fully compatible with the existing Provider Pattern and the power of provider pattern can be easily extended to use multiple providers concurrently without any modification on the caller classes that were using a provider.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;In short Provider Pattern is concerned with the utilization of one of the available providers; whereas Aggregator Provider Pattern is concerned with the utilization of all of the available providers at the same time.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;strong&gt;Example Demonstration&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Aggregator Provider Pattern is useful when we need a configurable framework to add/remove multiple services used by one caller/user. For instance we can have Logger Provider framework, where we need log info to be saved at text files, save to database and sent to email addresses and so on. Having an easy configurable framework along with Aggregator Provider Pattern will enable us to add or remove more services without requiring the code modification in the code that uses this provider.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_45E7D35E.png"&gt;&lt;font face="ver" size="2"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="519" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_16DFB47E.png" width="600" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Regarding the example case that just been described can utilize the Aggregator Provider Pattern, by creating the classes as illustrated above. The code snippet below shows a basic usage of this pattern, where the last line will perform the log operation based in list of log providers loaded in the aggregator class dynamically.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_2AB66AC9.png"&gt;&lt;font face="ver" size="2"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="image" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/image_thumb_434898CA.png" width="613" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Download the latest white paper and samples from &lt;/font&gt;&lt;a href="http://code.msdn.microsoft.com/agpp" target="_blank"&gt;&lt;font face="ver" size="2"&gt;MSDN Code Gallery&lt;/font&gt;&lt;/a&gt;&lt;font face="ver" size="2"&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:753a649a-647d-4627-bd83-dfe6c8e3c4ac" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/pattern" rel="tag"&gt;pattern&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/coding" rel="tag"&gt;coding&lt;/a&gt;,&lt;a href="http://technorati.com/tags/best+practices" rel="tag"&gt;best practices&lt;/a&gt;,&lt;a href="http://technorati.com/tags/development" rel="tag"&gt;development&lt;/a&gt;,&lt;a href="http://technorati.com/tags/engineering" rel="tag"&gt;engineering&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/p&gt;</description><pubDate>Fri, 10 Apr 2009 15:29:51 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/aggregator-provider-pattern-an-extension-of-provider-pattern</guid></item><item><title>Check This Out: KOBE – Web 2.0 Service Development Resource Kit</title><link>https://weblogs.asp.net:443/ashraful/check-this-out-kobe-web-2-0-service-development-resource-kit</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/ashraful/Media/KOBE_44482136.jpg"&gt;&lt;img title="KOBE" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="398" alt="KOBE" src="https://aspblogs.blob.core.windows.net/media/ashraful/Media/KOBE_thumb_3D74CC19.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Kobe is a “getting started” resource kit on planning, architecting, and implementing Web 2.0 applications and services using the Microsoft Platform.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;I am sure all of you who are interested in this area would be really benefitted with it.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Check this out: &lt;/font&gt;&lt;a title="http://msdn.microsoft.com/en-us/architecture/bb194897.aspx" href="http://msdn.microsoft.com/en-us/architecture/bb194897.aspx"&gt;&lt;font face="ver" size="2"&gt;http://msdn.microsoft.com/en-us/architecture/bb194897.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:111de4d3-a073-4940-8212-9e0d5b80ec4f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/starter+kit" rel="tag"&gt;starter kit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/visual+studio" rel="tag"&gt;visual studio&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/p&gt;</description><pubDate>Wed, 11 Mar 2009 09:20:33 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/ashraful/check-this-out-kobe-web-2-0-service-development-resource-kit</guid></item></channel></rss>