<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article IDE = Doing Enterprise Software Development ? Visual Studio : Microsoft Web Matrix in The Watering Can of Enterprise Software Development</title>
    <link>http://h30507.www3.hp.com/t5/The-Watering-Can-of-Enterprise/IDE-Doing-Enterprise-Software-Development-Visual-Studio/ba-p/81821</link>
    <description>&lt;p&gt;Microsoft recently announced their &lt;a title="Microsoft WebMatrix" href="http://www.asp.net/WebMatrix" target="_blank"&gt;WebMatrix&lt;/a&gt; product. The application is meant to enable hobbyist web site owners to easily create dynamic web pages that have the ability to interact with data. WebMatrix is not meant to compete with &lt;a title="Microsoft Visual Studio" href="http://www.microsoft.com/visualstudio/en-us/products" target="_blank"&gt;Microsoft Visual Studio&lt;/a&gt;, which is&amp;nbsp;targeted towards&amp;nbsp;enterprise application development, rather it is intended to provide a development environment for a&amp;nbsp;Windows alternative to the &lt;a title="LAMP" href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank"&gt;LAMP&lt;/a&gt; stack.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;An intro to one of the productivity enhancements was &lt;a title="Intro to Microsoft.Data.dll" href="http://weblogs.asp.net/davidfowler/archive/2010/08/02/introduction-to-microsoft-data-dll.aspx" target="_blank"&gt;covered on David Fowler's blog&lt;/a&gt;. The post dealt with&amp;nbsp;a new .Net data access wrapper library from Microsoft, aptly named Microsoft.Data.dll (note this is not part of the .Net framework). Unfortunately for the author, the intended hobbyist audience turned out to not be the group actually subscribing to the blog. Instead, a backlash of comments came in&amp;nbsp;from the professional development pundits&amp;nbsp;&lt;a title="Bad Examples" href="http://ayende.com/Blog/archive/2010/08/03/microsoft.data-because-the-90s-were-so-good-we-want-to.aspx" target="_blank"&gt;thrashing the example posted on the blog, like this one&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The example was intended to be simple to show the power of the library and the reduction in complexity for the hobbyist when dealing with data access. Now Microsoft is in the business of getting people onto their platform to generate revenue and they often do over simplify&amp;nbsp;code examples in order to illustrate a point.&amp;nbsp;Also, to be fair, without the right education a hobbyist can get into trouble when they aren't advised of potential security risks.As such, the new code probably should have looked a litte more like this:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;using (var db = Database.OpenFile("Northwind")) {
  foreach (var product in db.Query(
    "select * from products where UnitsInStock &amp;lt; @0", 20)) {
    Response.Write(string.Format({0} {1}&amp;lt;br /&amp;gt;), 
      Server.HtmlEncode(product.ProductName), product.UnitsInStock);
  }
}&lt;/pre&gt;
&lt;p&gt;Sure it's deceivingly simple, but if all a person (note I didn't say developer) needs to do is get out a quick and dirty, read-only report of items with low inventory then I would argue that this provides more short term value than over-engineering a complex solution, in the event the client *might* need to refactor the report into an N-tier solution someday. If you need to do that in WebMatrix then your page would probably look more like this:&lt;pre&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Collections.Generic"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Web"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Configuration"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Data.SqlClient"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Page&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"C#"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: green"&gt;// WebApp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &lt;span style="color: #2b91af"&gt;InventoryServiceClient&lt;/span&gt; client = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryServiceClient&lt;/span&gt;();&lt;br /&gt;&amp;nbsp; &lt;span style="color: green"&gt;// assume global error handling since this is all one layer&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt; productList = client.GetProductsForReorder();&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt; product &lt;span style="color: blue"&gt;in&lt;/span&gt; productList)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"{0} {1}&amp;lt;br /&amp;gt;"&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server.HtmlEncode(product.ProductName), product.UnitsInStock));&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// ServiceClient&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryServiceClient&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt; GetProductsForReorder() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt; productList = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IInventoryDataService&lt;/span&gt; inventorySvc = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryDataService&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; serviceProductList =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventorySvc.GetProductsForReorder();&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt; serverProduct &lt;span style="color: blue"&gt;in&lt;/span&gt; serviceProductList) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productList.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProductName = serverProduct.ProductName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnitsInStock = serverProduct.UnitsInStock&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productList;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; ProductName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; UnitsInStock { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// ServiceContracts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;IInventoryDataService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder();&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;IInventoryBusinessService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;int&lt;/span&gt; GetReorderPoint();&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;IProductRepository&lt;/span&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder(&lt;span style="color: blue"&gt;int&lt;/span&gt; reorderPoint);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; ProductName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; UnitsInStock { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// BusinessAccess&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryBusinessService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IInventoryBusinessService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; REORDER_POINT = &lt;span style="color: #a31515"&gt;"ReorderPoint"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; GetReorderPoint() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt;.Parse(&lt;span style="color: #2b91af"&gt;ConfigurationManager&lt;/span&gt;.AppSettings[REORDER_POINT]);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// DataAccess&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryDataService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IInventoryDataService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IInventoryBusinessService&lt;/span&gt; inventoryBusiness = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryBusinessService&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IProductRepository&lt;/span&gt; productRepository = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlProductRepository&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productRepository.GetProductsForReorder(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventoryBusiness.GetReorderPoint());&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlProductRepository&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IProductRepository&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; _connectionString = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: #a31515"&gt;"DataAccess"&lt;/span&gt;].ConnectionString;&lt;br /&gt; &lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder(&lt;span style="color: blue"&gt;int&lt;/span&gt; reorderPoint)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ProductDataAccess&lt;/span&gt; productData = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataAccess&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; productList = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt; connection = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt;(_connectionString)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productList = productData.GetProductsForReorder(connection, reorderPoint);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productList;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataAccess&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; LOW_INVENTORY_SQL =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515"&gt;"select ProductName, UnitsInStock from products where UnitsInStock &amp;lt; @reorderPoint"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; PRODUCT_NAME_POSITION = 0;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; UNITS_IN_STOCK_POSITION = 1;&lt;br /&gt; &lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt; connection, &lt;span style="color: blue"&gt;int&lt;/span&gt; reorderPoint)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; productList = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt;();&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;SqlCommand&lt;/span&gt; command = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlCommand&lt;/span&gt;(LOW_INVENTORY_SQL, connection)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command.Parameters.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlParameter&lt;/span&gt;() { ParameterName = &lt;span style="color: #a31515"&gt;"@reorderPoint"&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbType = System.Data.&lt;span style="color: #2b91af"&gt;DbType&lt;/span&gt;.String, Value = reorderPoint&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;SqlDataReader&lt;/span&gt; reader = command.ExecuteReader()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;while&lt;/span&gt; (reader.Read()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productList.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProductName = reader.IsDBNull(PRODUCT_NAME_POSITION) ? &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;null&lt;/span&gt; : reader.GetString(PRODUCT_NAME_POSITION).TrimEnd(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnitsInStock = reader.GetInt32(UNITS_IN_STOCK_POSITION)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });}}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productList;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: maroon"&gt;DOCTYPE&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;PUBLIC&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;"&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank" rel="nofollow"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&lt;/a&gt;"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"&lt;a href="http://www.w3.org/1999/xhtml" target="_blank" rel="nofollow"&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;head&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Low Inventory Report&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;form&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"form1"&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;</description>
    <pubDate>Tue, 03 Aug 2010 20:35:08 GMT</pubDate>
    <dc:creator>scott.rudy</dc:creator>
    <dc:date>2010-08-03T20:35:08Z</dc:date>
    <item>
      <title>IDE = Doing Enterprise Software Development ? Visual Studio : Microsoft Web Matrix</title>
      <link>http://h30507.www3.hp.com/t5/The-Watering-Can-of-Enterprise/IDE-Doing-Enterprise-Software-Development-Visual-Studio/ba-p/81821</link>
      <description>&lt;p&gt;Microsoft recently announced their &lt;a title="Microsoft WebMatrix" href="http://www.asp.net/WebMatrix" target="_blank"&gt;WebMatrix&lt;/a&gt; product. The application is meant to enable hobbyist web site owners to easily create dynamic web pages that have the ability to interact with data. WebMatrix is not meant to compete with &lt;a title="Microsoft Visual Studio" href="http://www.microsoft.com/visualstudio/en-us/products" target="_blank"&gt;Microsoft Visual Studio&lt;/a&gt;, which is&amp;nbsp;targeted towards&amp;nbsp;enterprise application development, rather it is intended to provide a development environment for a&amp;nbsp;Windows alternative to the &lt;a title="LAMP" href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank"&gt;LAMP&lt;/a&gt; stack.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;An intro to one of the productivity enhancements was &lt;a title="Intro to Microsoft.Data.dll" href="http://weblogs.asp.net/davidfowler/archive/2010/08/02/introduction-to-microsoft-data-dll.aspx" target="_blank"&gt;covered on David Fowler's blog&lt;/a&gt;. The post dealt with&amp;nbsp;a new .Net data access wrapper library from Microsoft, aptly named Microsoft.Data.dll (note this is not part of the .Net framework). Unfortunately for the author, the intended hobbyist audience turned out to not be the group actually subscribing to the blog. Instead, a backlash of comments came in&amp;nbsp;from the professional development pundits&amp;nbsp;&lt;a title="Bad Examples" href="http://ayende.com/Blog/archive/2010/08/03/microsoft.data-because-the-90s-were-so-good-we-want-to.aspx" target="_blank"&gt;thrashing the example posted on the blog, like this one&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The example was intended to be simple to show the power of the library and the reduction in complexity for the hobbyist when dealing with data access. Now Microsoft is in the business of getting people onto their platform to generate revenue and they often do over simplify&amp;nbsp;code examples in order to illustrate a point.&amp;nbsp;Also, to be fair, without the right education a hobbyist can get into trouble when they aren't advised of potential security risks.As such, the new code probably should have looked a litte more like this:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;using (var db = Database.OpenFile("Northwind")) {
  foreach (var product in db.Query(
    "select * from products where UnitsInStock &amp;lt; @0", 20)) {
    Response.Write(string.Format({0} {1}&amp;lt;br /&amp;gt;), 
      Server.HtmlEncode(product.ProductName), product.UnitsInStock);
  }
}&lt;/pre&gt;
&lt;p&gt;Sure it's deceivingly simple, but if all a person (note I didn't say developer) needs to do is get out a quick and dirty, read-only report of items with low inventory then I would argue that this provides more short term value than over-engineering a complex solution, in the event the client *might* need to refactor the report into an N-tier solution someday. If you need to do that in WebMatrix then your page would probably look more like this:&lt;pre&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Collections.Generic"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Web"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Configuration"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Import&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"System.Data.SqlClient"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style="color: maroon"&gt;Page&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"C#"&lt;/span&gt;&amp;nbsp;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: green"&gt;// WebApp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &lt;span style="color: #2b91af"&gt;InventoryServiceClient&lt;/span&gt; client = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryServiceClient&lt;/span&gt;();&lt;br /&gt;&amp;nbsp; &lt;span style="color: green"&gt;// assume global error handling since this is all one layer&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt; productList = client.GetProductsForReorder();&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt; product &lt;span style="color: blue"&gt;in&lt;/span&gt; productList)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"{0} {1}&amp;lt;br /&amp;gt;"&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server.HtmlEncode(product.ProductName), product.UnitsInStock));&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// ServiceClient&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryServiceClient&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt; GetProductsForReorder() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt; productList = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IInventoryDataService&lt;/span&gt; inventorySvc = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryDataService&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; serviceProductList =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventorySvc.GetProductsForReorder();&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt; serverProduct &lt;span style="color: blue"&gt;in&lt;/span&gt; serviceProductList) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productList.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt;() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProductName = serverProduct.ProductName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnitsInStock = serverProduct.UnitsInStock&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productList;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ClientProduct&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; ProductName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; UnitsInStock { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// ServiceContracts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;IInventoryDataService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder();&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;IInventoryBusinessService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;int&lt;/span&gt; GetReorderPoint();&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;IProductRepository&lt;/span&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder(&lt;span style="color: blue"&gt;int&lt;/span&gt; reorderPoint);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; ProductName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; UnitsInStock { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// BusinessAccess&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryBusinessService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IInventoryBusinessService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; REORDER_POINT = &lt;span style="color: #a31515"&gt;"ReorderPoint"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; GetReorderPoint() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt;.Parse(&lt;span style="color: #2b91af"&gt;ConfigurationManager&lt;/span&gt;.AppSettings[REORDER_POINT]);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: green"&gt;// DataAccess&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryDataService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IInventoryDataService&lt;/span&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IInventoryBusinessService&lt;/span&gt; inventoryBusiness = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;InventoryBusinessService&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;IProductRepository&lt;/span&gt; productRepository = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlProductRepository&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productRepository.GetProductsForReorder(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventoryBusiness.GetReorderPoint());&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlProductRepository&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IProductRepository&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; _connectionString = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: #a31515"&gt;"DataAccess"&lt;/span&gt;].ConnectionString;&lt;br /&gt; &lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder(&lt;span style="color: blue"&gt;int&lt;/span&gt; reorderPoint)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ProductDataAccess&lt;/span&gt; productData = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataAccess&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; productList = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt; connection = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt;(_connectionString)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productList = productData.GetProductsForReorder(connection, reorderPoint);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productList;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataAccess&lt;/span&gt; {&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;string&lt;/span&gt; LOW_INVENTORY_SQL =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515"&gt;"select ProductName, UnitsInStock from products where UnitsInStock &amp;lt; @reorderPoint"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; PRODUCT_NAME_POSITION = 0;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;int&lt;/span&gt; UNITS_IN_STOCK_POSITION = 1;&lt;br /&gt; &lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; GetProductsForReorder(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt; connection, &lt;span style="color: blue"&gt;int&lt;/span&gt; reorderPoint)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt; productList = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;&amp;gt;();&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;SqlCommand&lt;/span&gt; command = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlCommand&lt;/span&gt;(LOW_INVENTORY_SQL, connection)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command.Parameters.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;SqlParameter&lt;/span&gt;() { ParameterName = &lt;span style="color: #a31515"&gt;"@reorderPoint"&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbType = System.Data.&lt;span style="color: #2b91af"&gt;DbType&lt;/span&gt;.String, Value = reorderPoint&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;SqlDataReader&lt;/span&gt; reader = command.ExecuteReader()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;while&lt;/span&gt; (reader.Read()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productList.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProductDataContract&lt;/span&gt;() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProductName = reader.IsDBNull(PRODUCT_NAME_POSITION) ? &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;null&lt;/span&gt; : reader.GetString(PRODUCT_NAME_POSITION).TrimEnd(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnitsInStock = reader.GetInt32(UNITS_IN_STOCK_POSITION)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });}}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; productList;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: maroon"&gt;DOCTYPE&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;PUBLIC&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &lt;span style="color: blue"&gt;"&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank" rel="nofollow"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&lt;/a&gt;"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"&lt;a href="http://www.w3.org/1999/xhtml" target="_blank" rel="nofollow"&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;head&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Low Inventory Report&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;form&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"form1"&lt;/span&gt;&amp;nbsp;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 03 Aug 2010 20:35:08 GMT</pubDate>
      <guid>http://h30507.www3.hp.com/t5/The-Watering-Can-of-Enterprise/IDE-Doing-Enterprise-Software-Development-Visual-Studio/ba-p/81821</guid>
      <dc:creator>scott.rudy</dc:creator>
      <dc:date>2010-08-03T20:35:08Z</dc:date>
    </item>
  </channel>
</rss>

