<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Radical Development &#187; Development</title>
	<atom:link href="http://radicaldevelopment.net/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://radicaldevelopment.net</link>
	<description>Technical without the Technicalities</description>
	<lastBuildDate>Sun, 05 Feb 2012 02:36:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Microsoft Enterprise Library: Caching Application Block</title>
		<link>http://radicaldevelopment.net/microsoft-enterprise-library-caching-application-block/</link>
		<comments>http://radicaldevelopment.net/microsoft-enterprise-library-caching-application-block/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 04:29:21 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Library]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Visual Studio IDE]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=11813</guid>
		<description><![CDATA[This is a a second article on the topic of the Microsoft Enterprise Library. If you have not read the previous article titled Microsoft Enterprise Library: Data Access Application Block, I recommend you do so. Introduction to the Caching Application Block The Enterprise Library Caching Application Block lets developers incorporate a local cache in their &#8230; <a href="http://radicaldevelopment.net/microsoft-enterprise-library-caching-application-block/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is a a second article on the topic of the Microsoft Enterprise Library. If you have not read the previous article titled Microsoft Enterprise Library: Data Access Application Block, I recommend you do so.</p>
<h2>Introduction to the Caching Application Block</h2>
<p><a class="easyazon-link"  target="_blank" href="http://radicaldevelopment.net/product/us/073564523X/stevenswaffosasp/"><img src="http://ecx.images-amazon.com/images/I/51ueNyTgnFL._SL160_.jpg" class="alignleft" alt="Amazon Image" height="160" width="131"  /></a>The Enterprise Library Caching Application Block lets developers incorporate a local cache in their applications. It supports both an in-memory cache and, optionally, a backing store that can either be the database store or isolated storage. The Caching Application Block can be used without modification; it provides all the functionality needed to retrieve, add, and remove cached data. Configurable expiration and scavenging policies are also part of the block.</p>
<p>If you have been working with caching outside the Enterprise Library, I believe you will find this application block extremely powerful and easy to use. If you have not taken on the subject of caching before, I believe you also will find this easy to pick up and ultimately boost the performance of your applications. The Enterprise Library Caching Application Block includes the following features:</p>
<ul>
<li>You can use the graphical Enterprise Library configuration tools to manage configuration settings.</li>
<li>You can configure a persistent storage location, using either isolated storage or the Enterprise Library Data Access Application Block, whose state is synchronized with the in-memory cache.</li>
<li>Administrators can manage the configuration using Group Policy tools.</li>
<li>You can extend the block by creating custom expiration policies and storage locations.</li>
<li>You are assured that the block performs in a thread-safe manner.</li>
</ul>
<h2>Cache Manager</h2>
<p>The cache manager serves the role of managing the cache store exactly as it sounds. It is entirely possible to have multiple cache managers to suit you business requirements. When configuring the cache manager you also have choices when it comes to the backing stores. For example, if you wish to use a database to persist the cache you can do so, but for the purpose of this article I will demonstrate the out of the box configuration which is the server&#8217;s memory.</p>
<div class="information">
<p>Much like the potential vulnerabilities surrounding the Data Access Block in terms of SQL Injection, the Caching Application Block also has risk that you must understand. For example, do not store sensitive data in the cache and if you must do so, then use encryption.</p>
</div>
<p>Once you have the defined your cache manager settings,  you will see similar code withing your web.config:</p>
<pre class="brush: csharp">&lt;configSections&gt;
	&lt;section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.
		Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching,
		Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
		requirePermission="true" /&gt;
&lt;/configSections&gt;
&lt;cachingConfiguration defaultCacheManager="RadDev Cache Manager"&gt;</pre>
<h2>Design and Implementation</h2>
<p>Turning our attention to the web project, the first step is to add the appropriate references. Add a reference to the Caching Application Block assembly. In Microsoft Visual Studio, right-click your project node in Solution Explorer, and then click Add Reference. Click the Browse tab and find the location of the Microsoft.Practices.EnterpriseLibrary.Caching.dll assembly. Select the assembly, and then click OK to add the reference.</p>
<p>Now that the references are in place, we need the using statements.</p>
<pre class="brush: csharp">//Enterprise Library
using Microsoft.Practices.EnterpriseLibrary.Caching;
using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;</pre>
<p>Now the fun begins. We will query the database and after this first round trip we will cache the data. By caching the data the next call to the database essentially does not occur. Back in your webform add a GridView.</p>
<pre class="brush: csharp">&lt;asp:GridView ID="GridViewContactsNoCache" runat="server"&gt;
&lt;/asp:GridView&gt;</pre>
<p>Now that we have the GridView established it is time to wire up the necessary code to communicate with the database and then display this data to the end user.</p>
<p>First step here is to create your reference to the cache manager.</p>
<pre class="brush: csharp">ICacheManager cache = EnterpriseLibraryContainer.Current.GetInstance&lt;ICacheManager&gt;();</pre>
<p>Depending upon your application&#8217;s design you can add a object to cache in the scenario that works best for you. Here I am using a Generic List to create an object type of Contact. I will not go into the details of the List nor the Contact Class, but I will share the code so you can follow the thought process.</p>
<h3>SQL Statement</h3>
<pre class="brush: csharp">private const string sqlOne = "SELECT FirstName," +
	" MiddleName, LastName FROM Person.Contact WHERE  (LastName =" +
	" N'adams') AND (FirstName LIKE N'r%') ORDER BY LastName";</pre>
<h3>Page Load Event</h3>
<p>Inside the page load you will notice an if/else statement. Here is where we check if the Contacts object is in cache and if so, we bypass the database round trip and bind the GridView to this cache object.</p>
<pre class="brush: csharp">protected void Page_Load(object sender, EventArgs e)
{
	if (cache.Contains("ContactsCachKey"))
	{
		GridViewContactsNoCache.DataSource = cache.GetData("ContactsCachKey");
	}
	else
	{
		GridViewContactsNoCache.DataSource = GetContacts();
	}
	GridViewContactsNoCache.DataBind();

	// How many object are in cache?
	LabelCacheObjects.Text = string.Format("The Cache Manager contains {0} objects.",
	cache.Count.ToString());
}</pre>
<h3>Get the Contacts</h3>
<p>In this method you will see the use of the Generic List and immediately before exiting the method I am making another method call to populate the Contacts to cache.</p>
<pre class="brush: csharp">private List&lt;Contact&gt; GetContacts()
{
	using (IDataReader rdr = db.ExecuteReader(CommandType.Text, sqlOne))
	{
		lstContact = new List&lt;Contact&gt;();

		while (rdr.Read())
		{
			contact = new Contact();
			contact.FirstName = rdr.GetString(0);
			contact.MiddleName = rdr.GetString(1);
			contact.LastName = rdr.GetString(2);
			lstContact.Add(contact);
		}
	}

	PopulateCacheManager(lstContact);

	return lstContact;
}

private void PopulateCacheManager(List&lt;Contact&gt; lstContact)
{
	cache.Add("ContactsCachKey", lstContact);
}</pre>
<h2>The Result</h2>
<p><img class="alignnone size-full wp-image-11821" title="Contacts GridView" src="http://radicaldevelopment.net/wp-content/uploads/2012/02/cab_one.png" alt="Contacts GridView" width="265" height="173" /></p>
<h2>What If The Data Changes</h2>
<p>Of course when one displays data, typically the counterpart is to also update the data. You will be pleased to know that in one line of code you can destroy the Contacts cached object and upon the next execution of displaying the data, the process starts all over. Assume for a moment that that Update button click has processed a database transaction.</p>
<pre class="brush: csharp">protected void ButtonUpdate_Click(object sender, EventArgs e)
{
	cache.Remove("ContactsCachKey"); //here we remove the Contacts cache object
}</pre>
<h2>Conclusion</h2>
<p>As you can see, using the Caching Application Block component of the Enterprise Library is not complex. Of course, this article has just begun to scratch the surface in the hopes that your interest is perked.</p>
<h2>Examples Via MSDN</h2>
<p>The following examples are from the Enterprise Library 5.0, <a href="http://msdn.microsoft.com/en-us/library/ff953179(v=pandp.50).aspx">Chapter 5 – A Cache Advance for Your Applications</a>.</p>
<p><strong>Proactive Cache Loading</strong></p>
<p>The example, Load the cache proactively on application startup, provides a simple demonstration of proactive cache loading. In the startup code of your application you add code to load the cache with the items your application will require. The example creates a list of Product items, and then iterates through the list calling the Add method of the cache manager for each one. You would, of course, fetch the items to cache from the location (such as a database) appropriate for your own application. It may be that the items are available as a list, or—for example—by iterating through the rows in a DataSet or a DataReader.</p>
<pre class="brush: csharp">// Create a list of products - may come from a database or other repository
List&lt;Product&gt; products = new List&lt;Product&gt;();
products.Add(new Product(42, "Exciting Thing",
                         "Something that will change your view of life."));
products.Add(new Product(79, "Useful Thing",
                         "Something that is useful for everything."));
products.Add(new Product(412, "Fun Thing",
                         "Something that will keep the grandchildren quiet."));

// Iterate the list loading each one into the cache
for (int i = 0; i &lt; products.Count; i++)
{
  theCache.Add(DemoCacheKeys[i], products[i]);
}</pre>
<p><strong>Reactive Cache Loading</strong></p>
<p>Reactive cache loading simply means that you check if an item is in the cache when you actually need it, and—if not—fetch it and then cache it for future use. You may decide at this point to fetch several items if the one you want is not in the cache. For example, you may decide to load the complete product list the first time that a price lookup determines that the products are not in the cache.</p>
<p>The example, Load the cache reactively on demand, demonstrates the general pattern for reactive cache loading. After displaying the contents of the cache (to show that it is, in fact, empty) the code attempts to retrieve a cached instance of the Product class. Notice that this is a two-step process in that you must check that the returned value is not null. As we explained in the section &#8220;What&#8217;s In My Cache?&#8221; earlier in this chapter, the Contains method may return true if the item has recently expired or been removed.</p>
<p>If the item is in the cache, the code displays the values of its properties. If it is not in the cache, the code executes a routine to load the cache with all of the products. This routine is the same as you saw in the previous example of loading the cache proactively.</p>
<pre class="brush: csharp">Console.WriteLine("Getting an item from the cache...");
Product theItem = (Product)defaultCache.GetData(DemoCacheKeys[1]);

// You could test for the item in the cache using CacheManager.Contains(key)
// method, but you still must check if the retrieved item is null even
// if the Contains method indicates that the item is in the cache:
if (null != theItem)
{
  Console.WriteLine("Cached item values are: ID = {0}, Name = '{1}', "
                    + "Description = {2}", theItem.ID, theItem.Name,
                    theItem.Description);
}
else
{
  Console.WriteLine("The item could not be obtained from the cache.");

  // Item not found, so reactively load the cache
  LoadCacheWithProductList(defaultCache);
  Console.WriteLine("Loaded the cache with the list of products.");
  ShowCacheContents(defaultCache);
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/microsoft-enterprise-library-caching-application-block/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Enterprise Library: Data Access Application Block</title>
		<link>http://radicaldevelopment.net/microsoft-enterprise-library-data-access-application-block/</link>
		<comments>http://radicaldevelopment.net/microsoft-enterprise-library-data-access-application-block/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 06:40:21 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Library]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Visual Studio IDE]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=11730</guid>
		<description><![CDATA[For those of you who have been using the Enterprise Library from Microsoft then I tip my hat to you. I admit that I have not used this library for a number of years and in most cases the reason is because I have honestly not been in a position to do so. It is &#8230; <a href="http://radicaldevelopment.net/microsoft-enterprise-library-data-access-application-block/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For those of you who have been using the Enterprise Library from Microsoft then I tip my hat to you. I admit that I have not used this library for a number of years and in most cases the reason is because I have honestly not been in a position to do so. It is a long story so don’t ask. There are a number of reason why you should seriously consider the use of the Enterprise Library and I cannot think of any better reason than those provided directly from Microsoft.</p>
<p>The goals of Enterprise Library are the following:</p>
<ul>
<li><strong>Consistency</strong>. All Enterprise Library application blocks feature consistent design patterns and implementation approaches.</li>
<li><strong>Extensibility</strong>. All application blocks include defined extensibility points that allow developers to customize the behavior of the application blocks by adding their own code.</li>
<li><strong>Ease of use</strong>. Enterprise Library offers numerous usability improvements, including a graphical configuration tool, a simpler installation procedure, and clearer and more complete documentation and samples.</li>
<li><strong>Integration</strong>. Enterprise Library application blocks are designed to work well together or individually.</li>
</ul>
<p>Now that the groundwork has been laid let us get started.</p>
<h2>Introduction to the Data Access Library</h2>
<p><a class="easyazon-link"  target="_blank" href="http://radicaldevelopment.net/product/us/073564523X/stevenswaffosasp/"><img src="http://ecx.images-amazon.com/images/I/51ueNyTgnFL._SL160_.jpg" class="alignleft" alt="Amazon Image" height="160" width="131"  /></a>The Data Access Application Block includes a small number of methods that simplify the most common techniques for accessing a database. Each method encapsulates the logic required to retrieve the data and manage the connection to the database. The methods exposed by the block allow you to execute queries, return data in a range of different formats, populate a DataSet, update the database from a DataSet, perform data access asynchronously (against SQL Server databases), and return data as objects in a suitable format for use with client-side query technologies such as LINQ.</p>
<p>As with anything good there is always its counterpart. For example, if you are going to work with data in a a mechanism that is unique to your application or if your are going to work with a particular database that provides unique features then you may not want to use the Data Access Library. It is also important to understand the level of support. For example, if you are targeting an Oracle database you should not use this library since Microsoft has depreciated the Oracle Client. In this case you should turn to Oracle’s ODP.NET which is native to an Oracle Database.</p>
<h2>The Database Connection</h2>
<p>The beauty of the Data Access Library is the simplicity of its use. For example, to establish a connection to a database, SQL Server in this case all it takes is a single line of code. First things first is to add the appropriate references to the Enterprise Library Assemblies.</p>
<pre class="brush: csharp">//Enterprise Library
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;</pre>
<p>Then comes the database object creation.</p>
<pre class="brush: csharp">Database db = EnterpriseLibraryContainer.Current.GetInstance&lt;Database&gt;(“MyDatabase”);</pre>
<p>The string value MyDatabase represents the connection to a SQL Server. Yes, it actually is that simple. In fact the instance of database could in fact be defined in a single class so your development team would never have to waste any time in defining a database object again. It is also worth saying that this database object is not yet in an open state. This is good news because so many developers often forget to close out their database connections. Another important benefit is the Data Access Library also will log events to the application event log, but this is a subject that I will go into in a future article.</p>
<h2>Inline SQL Statement Example</h2>
<p>I want to first say that you should exercise extreme caution when using inline SQL because this type of database interaction is vulnerable to SQL Injection. For the purpose of this example, I will utilize inline SQL.</p>
<p>In this example we will employ two SQL statements. One will retrieve the contact details to include first, middle, and last names. The second statement will return the total number of contacts.</p>
<pre class="brush: sql">private const string sqlOne = "SELECT FirstName," +
" MiddleName, LastName FROM Person.Contact WHERE  (LastName = N'adams') AND" +
" (FirstName LIKE N'r%') ORDER BY LastName";

private const string sqlTwo = "SELECT COUNT(*) AS TotalContacts FROM Person.Contact WHERE (LastName = N'adams') AND" +
" (FirstName LIKE N'r%')";</pre>
<h2>Build the WebForm</h2>
<p>Now turning our attention to the web form we will need to server controls. First is a Gridview and second is a Label.</p>
<pre class="brush: xml">&lt;asp:GridView ID="ContactsGridView" runat="server"&gt;&lt;/asp:GridView&gt;
&lt;asp:Label ID="TotalContactsLabel" runat="server" Text=""&gt;&lt;/asp:Label&gt;</pre>
<p>At this point if you have been working with ADO.NET you will find the code behind the webform very familiar. The only thing we are doing different in this example is working with the database object that was covered earlier in this article.</p>
<pre class="brush: csharp">/// &lt;summary&gt;
/// Gets the contacts.
/// &lt;/summary&gt;
/// &lt;returns&gt;DataSet of contacts&lt;/returns&gt;
private DataSet GetContacts()
{
	DataSet dsContacts = db.ExecuteDataSet(CommandType.Text, sqlOne);
	return dsContacts;
}

/// &lt;summary&gt;
/// Gets the total contacts.
/// &lt;/summary&gt;
/// &lt;returns&gt;Total number of contacts&lt;/returns&gt;
private int GetTotalContacts()
{
	//because ExecuteScalar returns an object we must cast to an int
	int totalContacts = (int)db.ExecuteScalar(CommandType.Text, sqlTwo);
	return totalContacts;
}</pre>
<div class="interesting">
<ol>
<li>Internal is for assembly scope (i.e. only accessible from code in the same .exe or .dll)</li>
<li>Private is for class scope (i.e. accessible only from code in the same class)</li>
</ol>
</div>
<p>Now that we have the necessary methods established the next step is to bind the data to the server controls back on the webform. We will do this in the page load event.</p>
<pre class="brush: csharp">/// &lt;summary&gt;
/// Handles the Load event of the Page control.
/// &lt;/summary&gt;
/// &lt;param name="sender"&gt;The source of the event.&lt;/param&gt;
/// &lt;param name="e"&gt;The &lt;see cref="System.EventArgs"/&gt; instance containing the event data.&lt;/param&gt;
protected void Page_Load(object sender, EventArgs e)
{
	ContactsGridView.DataSource = GetContacts();
	ContactsGridView.DataBind();

	TotalContactsLabel.Text = string.Format("There are a total of {0} contacts", GetTotalContacts().ToString());
}</pre>
<p>Now upon execution of the web application you will be presented the following:</p>
<p><img class="alignnone size-full wp-image-11775" title="Contacts Data Displayed" src="http://radicaldevelopment.net/wp-content/uploads/2012/01/dal_example_01302012.png" alt="Contacts Data Displayed" width="419" height="176" /></p>
<h2>Conclusion</h2>
<p>As you can see, using the Data Access Library component of the <a href="http://msdn.microsoft.com/en-us/library/ff632023.aspx">Enterprise Library</a> is not complex. Of course, this article has just begun to scratch the surface in the hopes that your interest is perked.</p>
<h3>Examples Via MSDN</h3>
<p>The following examples are from the Enterprise Library 5.0, <a href="http://msdn.microsoft.com/en-us/library/ff953187(v=pandp.50).aspx">Chapter 2 &#8211; Much ADO about Data Access</a>.</p>
<p><strong>Reading Rows Using a Query with No Parameters</strong></p>
<p>Simple queries consisting of an inline SQL statement or a stored procedure, which take no parameters, can be executed using the ExecuteReader method overload that accepts a CommandType value and a SQL statement or stored procedure name as a string.</p>
<pre class="brush: csharp">// Call the ExecuteReader method by specifying just the stored procedure name.
using (IDataReader reader = namedDB.ExecuteReader("MyStoredProcName"))
{
  // Use the values in the rows as required.
}</pre>
<p><strong>Reading Rows Using an Array of Parameter Values</strong></p>
<p>While you may use simple no-parameter stored procedures and SQL statements in some scenarios, it&#8217;s far more common to use queries that accept input parameters that select rows or specify how the query will execute within the database server. If you use only input parameters, you can wrap the values up as an Object array and pass them to the stored procedure or SQL statement. Note that this means you must add them to the array in the same order as they are expected by the query, because you are not using names for these parameters—you are only supplying the actual values. The following code shows how you can execute a stored procedure that takes a single string parameter.</p>
<pre class="brush: csharp">// Call the ExecuteReader method with the stored procedure
// name and an Object array containing the parameter values.
using (IDataReader reader = defaultDB.ExecuteReader("ListOrdersByState",
                                      new object[] { "Colorado" }))
{
  // Use the values in the rows as required - here we are just displaying them.
  DisplayRowValues(reader);
}</pre>
<p><strong>Retrieving XML Data</strong></p>
<p>The Data Access block provides the ExecuteXmlReader method for querying data as XML. It takes a SQL statement that contains the FOR XML statement and executes it against the database, returning the result as an XmlReader. You can iterate through the resulting XML elements or work with them in any of the ways supported by the XML classes in the .NET Framework. However, as SQLXML is limited to SQL Server (the implementations of this type of query differ in other database systems), it is only available when you specifically use the SqlDatabase class (rather than the Database class).</p>
<p>The following code shows how you can obtain a SqlDatabase instance, specify a suitable SQLXML query, and execute it using the ExecuteXmlReader method.</p>
<pre class="brush: csharp">// Resolve a SqlDatabase object from the container using the default database.
SqlDatabase sqlServerDB
    = EnterpriseLibraryContainer.Current.GetInstance&lt;Database&gt;() as SqlDatabase;

// Specify a SQL query that returns XML data.
string xmlQuery = "SELECT * FROM OrderList WHERE State = @state FOR XML AUTO";

// Create a suitable command type and add the required parameter
// NB: ExecuteXmlReader is only available for SQL Server databases
using (DbCommand xmlCmd = sqlServerDB.GetSqlStringCommand(xmlQuery))
{
  xmlCmd.Parameters.Add(new SqlParameter("state", "Colorado"));
  using (XmlReader reader = sqlServerDB.ExecuteXmlReader(xmlCmd))
  {
    // Iterate through the elements in the XmlReader
    while (!reader.EOF)
    {
      if (reader.IsStartElement())
      {
        Console.WriteLine(reader.ReadOuterXml());
      }
    }
  }
}</pre>
<p><strong>Retrieving Single Scalar Values</strong></p>
<p>A common requirement when working with a database is to extract a single scalar value based on a query that selects either a single row or a single value. This is typically the case when using lookup tables or checking for the presence of a specific entity in the database. The Data Access block provides the ExecuteScalar method to handle this requirement. It executes the query you specify, and then returns the value of the first column of the first row of the result set as an Object type. This means that it provides much better performance than the ExecuteReader method, because there is no need to create a DataReader and stream the results to the client as a row set. To maximize this efficiency, you should aim to use a query that returns a single value or a single row.</p>
<p>The ExecuteScalar method has a set of overloads similar to the ExecuteReader method we used earlier in this chapter. You can specify a CommandType (the default is StoredProcedure) and either a SQL statement or a stored procedure name. You can also pass in an array of Object instances that represent the parameters for the query. Alternatively, you can pass to the method a Command object that contains any parameters you require.</p>
<p>The following code demonstrates passing a Command object to the method to execute both an inline SQL statement and a stored procedure. It obtains a suitable Command instance from the current Database instance using the GetSqlStringCommand and GetStoredProcCommand methods. You can add parameters to the command before calling the ExecuteScalar method if required. However, to demonstrate the way the method works, the code here simply extracts the complete row set. The result is a single Object that you must cast to the appropriate type before displaying or consuming it in your code.</p>
<pre class="brush: csharp">// Create a suitable command type for a SQL statement.
// NB: For efficiency, aim to return only a single value or a single row.
using (DbCommand sqlCmd
       = defaultDB.GetSqlStringCommand("SELECT [Name] FROM States"))
{
    // Call the ExecuteScalar method of the command.
    Console.WriteLine("Result using a SQL statement: {0}",
                       defaultDB.ExecuteScalar(sqlCmd).ToString());
}

// Create a suitable command type for a stored procedure.
// NB: For efficiency, aim to return only a single value or a single row.
using (DbCommand sprocCmd = defaultDB.GetStoredProcCommand("GetStatesList"))
{
    // Call the ExecuteScalar method of the command.
    Console.WriteLine("Result using a stored procedure: {0}",
                       defaultDB.ExecuteScalar(sprocCmd).ToString());
}</pre>
<p><strong>Updating Data</strong></p>
<p>The following code from the example application for this chapter shows how you can use the ExecuteNonQuery method to update a row in a table in the database. It updates the Description column of a single row in the Products table, checks that the update succeeded, and then updates it again to return it to the original value (so that you can run the example again). The first step is to create the command and add the required parameters, as you&#8217;ve seen in earlier examples, and then call the ExecuteNonQuery method with the command as the single parameter. Next, the code changes the value of the command parameter named description to the original value in the database, and then executes the compensating update.</p>
<pre class="brush: csharp">string oldDescription
    = "Carries 4 bikes securely; steel construction, fits 2\" receiver hitch.";
string newDescription = "Bikes tend to fall off after a few miles.";

// Create command to execute the stored procedure and add the parameters.
DbCommand cmd = defaultDB.GetStoredProcCommand("UpdateProductsTable");
defaultDB.AddInParameter(cmd, "productID", DbType.Int32, 84);
defaultDB.AddInParameter(cmd, "description", DbType.String, newDescription);

// Execute the query and check if one row was updated.
if (defaultDB.ExecuteNonQuery(cmd) == 1)
{
  // Update succeeded.
}
else
{
    Console.WriteLine("ERROR: Could not update just one row.");
}

// Change the value of the second parameter
defaultDB.SetParameterValue(cmd, "description", oldDescription);

// Execute query and check if one row was updated
if (defaultDB.ExecuteNonQuery(cmd) == 1)
{
  // Update succeeded.
}
else
{
    Console.WriteLine("ERROR: Could not update just one row.");
}</pre>
<p>Be sure to check out <a href="http://msdn.microsoft.com/en-us/library/ff953187(v=pandp.50).aspx">Chapter 2 &#8211; Much ADO about Data Access</a> for much more details and examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/microsoft-enterprise-library-data-access-application-block/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free and Commercial Wireframe and Mockup Applications</title>
		<link>http://radicaldevelopment.net/free-and-commercial-wireframe-and-mockup-applications/</link>
		<comments>http://radicaldevelopment.net/free-and-commercial-wireframe-and-mockup-applications/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 03:09:39 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[General Tech]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=10559</guid>
		<description><![CDATA[If you work in a small team, you may find it useful to involve the whole team in this process. If you’re designing the app for a client, their inclusion may help to communicate and improve design decisions. A wireframe is a visual illustration of one Web page. It is meant to show all of &#8230; <a href="http://radicaldevelopment.net/free-and-commercial-wireframe-and-mockup-applications/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you work in a small team, you may find it useful to involve the whole team in this process. If you’re designing the app for a client, their inclusion may help to communicate and improve design decisions.</p>
<div class="information">
<p>A wireframe is a visual illustration of one Web page. It is meant to show all of the items that are included on a particular page, without defining the look and feel (or graphic design). It’s simply meant to illustrate the features, content and links that need to appear on a page so that your design team can mock up a visual interface and your programmers understand the page features and how they are supposed to work.</p>
</div>
<h2><a href="http://pencil.evolus.vn/en-US/Home.aspx">Pencil Project for Firefox</a></h2>
<p>The popular and fairly powerful Pencil Project is a free and opensource Firefox addon tool for making diagrams and GUI prototyping with a multitude of features. With its built-in stencils for diagramming and prototyping, the option for multi-page documents with background pages, its on-screen text editing with rich-text support and with its new cababiltity of exporting to HTML, PNG or Openoffice formats, makes this addon essential for any developer or designer.</p>
<img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fpencil.evolus.vn%2Fen-US%2FHome.aspx?w=600&h=300" alt="Pencil Project" class="snap"/>
<h2><a href="http://gomockingbird.com/mockingbird/">Mockingbird</a></h2>
<p>Mockingbird is an online tool that makes it very easy for you to create, link together, preview, and share mockups of your website or application. With its clean and clear interface, drag and drop functions, snap-to-grid, unlimited page linking and pretty much all the UI elements you could ever need, it all adss up to making Mockingbird our favorite wireframe app on this page.</p>
<img src="http://s.wordpress.com/mshots/v1/https%3A%2F%2Fgomockingbird.com%2Fmockingbird?w=600&h=300" alt="Mockingbird " class="snap"/>
<h2><a href="https://cacoo.com/">Cacoo</a></h2>
<p>Cacoo is a user friendly online drawing tool that allows you to create a variety of diagrams such as site maps, wire frames, UML and network charts. It allows for multiple users to edit the same diagram in a simultaneous collaboration with all the tools and features you would expect from an online wireframe app. Diagrams created with Cacoo can be shared and allows you to paste the code into Web applications such as Wikis and Blogs, and when the original diagram is edited the pasted graphic will be automatically updated, removing the need to upload the diagram each time it is updated.</p>
<img src="http://s.wordpress.com/mshots/v1/https%3A%2F%2Fcacoo.com%2F?w=600&h=300" alt="Cacoo " class="snap"/>
<h2><a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a></h2>
<p>Using Balsamiq Mockups feels like you are drawing, but it’s digital, so you can tweak and rearrange controls easily, and the end result is much cleaner. With 75 pre-built controls to choose from, you can design anything from a super-simple dialog box to a full-fledged application, from a simple website to a Rich Internet Application.</p>
<img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.balsamiq.com%2Fproducts%2Fmockups?w=600&h=300" alt="Balsamiq Mockups" class="snap"/>
<h2><a href="http://www.flairbuilder.com/">FlairBuilder</a></h2>
<p>FlairBuilder comes with over 60 different wireframe components. They help you quickly build wireframe designs out of commonly used website elements. It doesn’t matter whether you build simple, text based websites, or rich internet applications. FlairBuilder has all you need to get started and up to speed. FlairBuilder also has mobile applications elements, so you can design the entire experience for your customers. Currently iPhone is supported mostly, but more platforms are easy to build using existing components.</p>
<img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.flairbuilder.com%2F?w=600&h=300" alt="FlairBuilder " class="snap"/>
<h2><a href="http://www.protoshare.com/">ProtoShare</a></h2>
<p>ProtoShare is an online, collaborative, website wireframing/website prototyping tool that reduces interactive project rework while increasing profits. Combined with aggressive product pricing, ProtoShare has become the value leader and the fastest growing tool in the industry. Real-time feedback allows your team to share early and share often—a process that brings great ideas to life. ProtoShare&#8217;s easy online collaboration gives key stakeholders project visibility. When you get buy-in early, last-minute surprises, delays, and costly late stage rework are significantly reduced.</p>
<img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.protoshare.com%2F?w=600&h=300" alt="ProtoShare " class="snap"/>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/free-and-commercial-wireframe-and-mockup-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metasploit: Penetration Testing Tool Of Choice</title>
		<link>http://radicaldevelopment.net/metasploit-penetration-testing-tool-of-choice/</link>
		<comments>http://radicaldevelopment.net/metasploit-penetration-testing-tool-of-choice/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 03:55:40 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Computer security]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=9390</guid>
		<description><![CDATA[Penetration testing is key to security and Metasploit is an easy-to-use penetration testing solution that provides network penetration testing capabilities, backed by the world&#8217;s largest fully tested and integrated public database of exploits. Built on feedback from the Metasploit user community, key security experts, and Rapid7 customers, Metasploit Express enables organizations to take the next &#8230; <a href="http://radicaldevelopment.net/metasploit-penetration-testing-tool-of-choice/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Penetration testing is key to security and Metasploit is an easy-to-use penetration testing solution that provides network penetration testing capabilities, backed by the world&#8217;s largest fully tested and integrated public database of exploits. Built on feedback from the Metasploit user community, key security experts, and Rapid7 customers, Metasploit Express enables organizations to take the next step forward in security.</p>
<p>If you’re running or responsible for any type of IT system that hackers or cyber criminals may want to break into, deface, or bring down for business or pleasure, Metasploit Framework is for you. The tool enables you to carry out penetration tests (often called “pentests”) on your own systems. This means you’re attacking your own systems in the same way a hacker would to identify security holes. Of course, you do this without actually harming the network.</p>
<p>[myyoutubeplaylist cMQKBFcVPkg, Z0x_O75tRAU, RxyD0F38WYg, 8Zj9ypEVL20, Zlgv6WcFgc8, jIdB62rNBZA, 9odB5N-UedI, vC6wmmgp20M, IHNwQJoaAuk, O_UvJxFD2Es]</p>
<p>Jump on over to <a href="http://www.metasploit.com">Metasploit </a>and download a copy today!</p>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/metasploit-penetration-testing-tool-of-choice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OWASP Application Security Tutorials</title>
		<link>http://radicaldevelopment.net/owasp-application-security-tutorials/</link>
		<comments>http://radicaldevelopment.net/owasp-application-security-tutorials/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 02:23:52 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=9245</guid>
		<description><![CDATA[Application security encompasses measures taken throughout the application&#8217;s life-cycle to prevent exceptions in the security policy of an application or the underlying system through flaws in the design, development, deployment, upgrade, or maintenance of the application.  Applications only control the use of resources granted to them, and not which resources are granted to them. They, &#8230; <a href="http://radicaldevelopment.net/owasp-application-security-tutorials/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Application security encompasses measures taken throughout the application&#8217;s life-cycle to prevent exceptions in the security policy of an application or the underlying system through flaws in the design, development, deployment, upgrade, or maintenance of the application.  Applications only control the use of resources granted to them, and not which resources are granted to them. They, in turn, determine the use of these resources by users of the application through application security.<br />
<a href="https://www.owasp.org/index.php/Main_Page"><br />
Open Web Application Security Project (OWASP)</a> updates on the latest threats which impair web based applications. This aids developers, security testers and architects to focus on better design and mitigation strategy.</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/CDbWvEwBBxo?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/pypTYPaU7mM?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/owasp-application-security-tutorials/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Browser Fuzzing And What It Means</title>
		<link>http://radicaldevelopment.net/browser-fuzzing-and-what-it-means/</link>
		<comments>http://radicaldevelopment.net/browser-fuzzing-and-what-it-means/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 05:15:00 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Computer security]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Fuzz testing]]></category>
		<category><![CDATA[Regular expression]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Vulnerability]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=8288</guid>
		<description><![CDATA[In today&#8217;s day and age a great many individuals conduct daily business via web based applications and it is extremely important to understand the risk with web based applications. For example, banking, insurance, and various cloud services that we all hold near and dear to our heart. While vulnerabilities are exist both inside the browser &#8230; <a href="http://radicaldevelopment.net/browser-fuzzing-and-what-it-means/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In today&#8217;s day and age a great many individuals conduct daily business via web based applications and it is extremely important to understand the risk with web based applications. For example, banking, insurance, and various cloud services that we all hold near and dear to our heart. While vulnerabilities are exist both inside the browser and the application you&#8217;re using, it is important to understand that no single party should be held responsible over the other. In fact each party must work together to provide the most secure experience as possible. Mozilla, Chrome, Internet Explorer all work hard to identify exploits and release patches to address the exploit. While this is a step in the right direction you should understand you application could be at risk. This is especially true when software is not developed with security in mind and I have seen entirely too many applications that have what I term basic exploits that are easily corrected, but unfortunately are not.</p>
<p>Fuzzing is a software testing mechanism which involves serving malformed input to an interpreter or parser with the purpose of triggering crashes. Fuzzing often may be the simplest tool to uncover flaws because you don&#8217;t have to worry about understanding how a given application deals with the input. It just works!</p>
<h2>Tooling</h2>
<p><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b2307ca4-638f-4641-9946-dc0a5abe8513"><strong>MiniFuzz</strong></a></p>
<p>MiniFuzz File Fuzzer is a basic testing tool designed to help detect issues that may expose security vulnerabilities in file-handling code. This tool creates multiple random variations of file content and feeds it to the application to exercise the code in an attempt to expose unexpected application behaviors. Because fuzzing is effective at finding vulnerabilities, it is a required activity in the Verification Phase of the Microsoft SDL. With the release of MiniFuzz, we have made a simple file fuzzer available to assist developer efforts to find and address more vulnerabilities in code before it ships to customers. MiniFuzz is available as a standalone executable or as a Visual Studio add-on.</p>
<p><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8737519c-52d3-4291-9034-caa71855451f"><strong>SDL Regex Fuzzer</strong></a></p>
<p>SDL Regex Fuzzer is a verification tool to help test regular expressions for potential denial of service vulnerabilities. Regular expression patterns containing certain clauses that execute in exponential time (for example, grouping clauses containing repetition that are themselves repeated) can be exploited by attackers to cause a denial-of-service (DoS) condition. SDL Regex Fuzzer integrates with the SDL Process Template and the MSF-Agile+SDL Process Template to help users track and eliminate any detected regex vulnerabilities in their projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/browser-fuzzing-and-what-it-means/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Microsoft .NET Development Resources</title>
		<link>http://radicaldevelopment.net/free-microsoft-net-development-resources/</link>
		<comments>http://radicaldevelopment.net/free-microsoft-net-development-resources/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 05:15:52 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=8638</guid>
		<description><![CDATA[CSharp CSharp School First Edition: The Programmer&#8217;s Heaven C# School book covers the .NET framework and the C# language. Starting with the basics of the language, it goes on to cover object oriented programming techniques and a wide range of C# languages features including interfaces, exceptions and delegates. Later chapters cover practical topics including database &#8230; <a href="http://radicaldevelopment.net/free-microsoft-net-development-resources/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>CSharp</h3>
<ul>
<li><a href="http://www.programmersheaven.com/ebooks/csharp_ebook.pdf">CSharp School First Edition</a>: The Programmer&#8217;s Heaven C# School book covers the .NET framework and the C# language. Starting with the basics of the language, it goes on to cover object oriented programming techniques and a wide range of C# languages features including interfaces, exceptions and delegates. Later chapters cover practical topics including database access with ADO.NET, building Windows forms applications, multi-threading and asynchronous I/O. The final chapter covers new features in C# 2.0, including generics.</li>
<li><a href="http://www.albahari.info/threading/threading.pdf">Threading in C#</a>: C# supports parallel execution of code through multithreading. A thread is an independent execution path, able to run simultaneously with other threads.</li>
<li><a href="http://www.sharpdevelop.net/TechNotes/SharpDevelopCodingStyle03.pdf">Mike&#8217;s C# Coding Style Guide</a>: A 13 page C# Coding Style guide. Again, the focus is on Casing, Naming conventions, Declaration style etc. A short and simple Style Guide.</li>
<li><a href="http://archive.msdn.microsoft.com/encodocsharphandbook/Release/ProjectReleases.aspx?ReleaseId=3352">Encodo C# Handbook</a>: Encodo C# handbook is 72 pages of guidelines on Structure, Formatting, Naming. It also has a ‘Patterns and Best Practices’ section, which is a must read for any .NET/C# developer.</li>
<li><a href="http://csharpguidelines.codeplex.com/">C# Coding Standards</a>: A set of coding guidelines for C# 3.0 and C# 4.0, design principles, layout rules, FxCop rulesets and (upcoming) custom FxCop and StyleCop rules for improving the overall quality of your code development.</li>
</ul>
<h3>Patterns and Practices</h3>
<ul>
<li><a href="http://msdn.microsoft.com/library/gg406140.aspx">Developer&#8217;s Guide to Microsoft Prism</a>: Prism provides guidance designed to help you more easily design and build rich, flexible, and easy to maintain Windows Presentation Foundation (WPF) desktop applications and Silverlight Rich Internet Applications (RIAs) and Windows Phone 7 applications. Using design patterns that embody important architectural design principles, such as separation of concerns and loose coupling, Prism helps you to design and build applications using loosely coupled components that can evolve independently but which can be easily and seamlessly integrated into the overall application. Such applications are often referred to as composite applications.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/gg490765.aspx">Windows Phone 7 Developer Guide</a>: This guide describes a scenario around a fictitious company named Tailspin that has decided to encompass Windows Phone 7 as a client device for their existing cloud-based application. Their Windows Azure-based application named Surveys is described in detail in a previous book in this series, Developing Applications for the Cloud on the Microsoft Windows Azure Platform.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff770300.aspx?rssCatalog">Developing Application for SharePoint 2010</a>: SharePoint 2010 introduces rich new areas of functionality that create more choices and fresh opportunities for developers and solution architects. Sandboxed solutions, new options for data modeling and data access, and new client programming models with Silverlight and Ajax integration offer a step change in what you can accomplish with SharePoint applications. This guidance provides a deep technical insight into the key concepts and issues for SharePoint 2010 solution developers.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff699490.aspx">Web Service Software Factory 2010</a>: The Web Service Software Factory 2010 (also known as the Service Factory) is an integrated collection of resources designed to help you quickly and consistently build Web services that adhere to well-known architecture and design patterns. These resources consist of patterns and architecture topics in the form of written guidance and models with code generation in the form of tools integrated with Visual Studio 2010.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff699510.aspx">Web Client Software Factory 2010</a>: Architects and developers can use the Web Client Software Factory to quickly incorporate many of the proven practices and patterns of building Web client applications. These practices and patterns have been identified during the development of many Web client applications and their components. This version has been updated to work with Visual Studio 2010.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff632023.aspx?rssCatalog">Enterprise Library 5.0</a>: This major release is focused on architectural refactoring and full support of DI-style of development, improved usability, .NET Framework 4.0 and Visual Studio 2010 compatibility. Also, many compelling improvements were made to the existing application blocks to incorporate customer feedback and to dramatically improve testability, maintainability, and usability (including an all new configuration tool and Developer’s Guide). A migration guide is also provided.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff423674.aspx">A Guide to Claims–based Identity and Access Control</a>: This book gives you enough information to evaluate claims-based identity as a possible option when you&#8217;re planning a new application or making changes to an existing one. It is intended for any architect, developer, or information technology (IT) professional who designs, builds, or operates Web applications and services that require identity information about their users.</li>
</ul>
<h3>Performance</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=8A2E454D-F30E-4E72-B531-75384A0F1C47&amp;displaylang=en">Improving .NET Application Performance and Scalability</a>: This guide provides end-to-end guidance for managing performance and scalability throughout your application life cycle to reduce risk and lower total cost of ownership. It provides a framework that organizes performance into a handful of prioritized categories where your choices heavily impact performance and scalability success. The logical units of the framework help integrate performance throughout your application life cycle. Information is segmented by roles, including architects, developers, testers, and administrators, to make it more relevant and actionable. This guide provides processes and actionable steps for modeling performance, measuring, testing, and tuning your applications. Expert guidance is also provided for improving the performance of managed code, ASP.NET, Enterprise Services, Web services, remoting, ADO.NET, XML, and SQL Server.</li>
</ul>
<h3>Security</h3>
<ul>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d045a05a-c1fc-48c3-b4d5-b20353f97122&amp;displaylang=en">Microsoft Security Development Lifecycle (SDL) &#8211; Version 4.1a</a>: As part of its commitment to a more secure and trustworthy computing ecosystem, Microsoft makes its Security Development Lifecycle (SDL) process guidance available to the public. The Microsoft SDL process guidance illustrates the way Microsoft applies the SDL to its products and technologies. The version 4.1a of the SDL Process Guidance includes SDL for Agile Development. IT policy makers and software development organizations can leverage this content to enhance and inform their own software security and privacy assurance programs.</li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=055ff772-97fe-41b8-a58c-bf9c6593f25e&amp;DisplayLang=en">Building Secure ASP .NET Applications</a>: Guidelines for authentication, authorization and secure communication across the tiers. Topics include ASP.NET, Enterprise Services (COM+), Web Services, Remoting, and data access (including ADO.NET and SQL Server).</li>
</ul>
<h3>MSDN Magazine</h3>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/magazine/default.aspx">Current Issue</a></li>
<li><a href="http://msdn.microsoft.com/en-us/magazine/ee310108.aspx">Past Issues</a></li>
</ul>
<h3>Code Samples</h3>
<ul>
<li><a href="http://1code.codeplex.com/">Microsoft All-In-One Code Framework</a>: A free, centralized code sample library driven by developers&#8217; needs. Our goal is to provide typical code samples for all Microsoft development technologies, and reduce developers&#8217; efforts in solving typical programming tasks.</li>
<li><a href="http://hfpatternsincsharp.codeplex.com/">Head First Design Patterns</a>: This project consists of ported code examples from the book Head First Design Patterns by Eric and Elizabeth Freeman into C#. (<a href="http://hfdpinvb.codeplex.com/">VB version</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/free-microsoft-net-development-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Accessibility Educational Media</title>
		<link>http://radicaldevelopment.net/web-accessibility-educational-media/</link>
		<comments>http://radicaldevelopment.net/web-accessibility-educational-media/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 06:15:51 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[General Tech]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=8344</guid>
		<description><![CDATA[I have been working on educating myself and tackling the subject of web accessibility for since early 2010. As information  technology  continues  to  evolve  and  embeds  itself  more  and  more  in  our  daily  lives,  it  is  important  that  the  digital   age  account  for  every  individual  when  it  comes  to the  area  of  accessibility. There  are  &#8230; <a href="http://radicaldevelopment.net/web-accessibility-educational-media/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have been working on educating myself and tackling the subject of web accessibility for since early 2010. As information  technology  continues  to  evolve  and  embeds  itself  more  and  more  in  our  daily  lives,  it  is  important  that  the  digital   age  account  for  every  individual  when  it  comes  to the  area  of  accessibility.</p>
<p>There  are  a  wide  variety  of  disabilities  that  inflict  individuals.  When the needs of this  population  are not  taken  in  account  in software  and  website  design,  it  can be  a  negative  force that restricts access and participation.  Perhaps  those  involved  with  information  technology  planning  and  deployment  should  ask  themselves  the  following  question:  why  should  we  care  about  accessibility as it relates to software, hardware, and the virtual world?</p>
<p>As you may know you can find some great content on YouTube if you look hard enough and I thought I would share a number of videos that hopefully will raise awareness of what those individuals with disabilities face every day.</p>
<h2>WebAnywhere: A Screen Reader On-the-Go</h2>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/SpmB2DLrkTE?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h2>Web accessibility for people with vision impairments</h2>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/2j2x2miPPDQ?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h2>Bruce talks about refreshable Braille</h2>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/G8HnmItcNkE?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Accessibility  doesn’t  just  happen,  it  takes  a  great  deal  of  preparation  and  knowledge.</p>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/web-accessibility-educational-media/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pluralsight Teams Up With DreamSpark And Offers Free 90 Day On-Demand Training</title>
		<link>http://radicaldevelopment.net/pluralsight-teams-up-with-dreamspark-and-offers-free-90-day-on-demand-training/</link>
		<comments>http://radicaldevelopment.net/pluralsight-teams-up-with-dreamspark-and-offers-free-90-day-on-demand-training/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 01:14:26 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=8329</guid>
		<description><![CDATA[I must say that the fine folks over at Pluralsight continue to share their outstanding training content in a fashion that opens doors up to many either in the development community or those currently in school. It never ceases to amaze me just how much the Pluralsight community believes in what they are doing and &#8230; <a href="http://radicaldevelopment.net/pluralsight-teams-up-with-dreamspark-and-offers-free-90-day-on-demand-training/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I must say that the fine folks over at Pluralsight continue to share their outstanding training content in a fashion that opens doors up to many either in the development community or those currently in school.</p>
<p>It never ceases to amaze me just how much the Pluralsight community believes in what they are doing and if I may say so they do an outstanding job! Most recently Pluralsight has teamed up with DreamSpark where all worldwide verified DreamSpark members can obtain a 90-day Pluralsight On-Demand subscription. Not bad at all and you if have never attended one of their course you are in for a surprise. The technical staff is some of the best folks in the industry and they do an exceptional job at education. The following is just a handful of the extensive library that they have to offer.</p>
<ol>
<li>CLR Fundamentals</li>
<li>ASP.NET MVC Advanced Topics</li>
<li>LINQ Architecture</li>
<li>Introduction to OData</li>
<li>SharePoint 2010 Development</li>
</ol>
<p>So if you&#8217;re a student and have a DreamSpark account and if you don&#8217;t have an account create one today and don&#8217;t miss out on this wonderful opportunity provided by <a href="http://www.pluralsight-training.net/microsoft/">Pluralsight</a> and <a href="https://www.dreamspark.com/Default.aspx">DreamSpark</a>.</p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">computer training</div>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/pluralsight-teams-up-with-dreamspark-and-offers-free-90-day-on-demand-training/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Must Have Software Development Tools</title>
		<link>http://radicaldevelopment.net/must-have-software-development-tools/</link>
		<comments>http://radicaldevelopment.net/must-have-software-development-tools/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 06:15:02 +0000</pubDate>
		<dc:creator>Steven Swafford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://radicaldevelopment.net/?p=7724</guid>
		<description><![CDATA[Every developer has a set of tools that they employ to make them just a little bit better at their job and I thought that I would take the time to document a number of great products that I have used as well as tools that have caught my eye but not had the opportunity &#8230; <a href="http://radicaldevelopment.net/must-have-software-development-tools/" class="more-link" >read on <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Every developer has a set of tools that they employ to make them just a little bit better at their job and I thought that I would take the time to document a number of great products that I have used as well as tools that have caught my eye but not had the opportunity to leverage. This is not to be confused with <a href="http://www.hanselman.com/">Scott Hanselman&#8217;s</a> yearly post <a href="http://www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx">Ultimate Developer and Power Users Tool List</a>; however I have not seen that Scott posted an updated list for 2010 unless I missed it.</p>
<ul>
<li><a href="http://activedirectoryutils.codeplex.com/" target="_blank">Active Directory Utils</a>: This is a repository of sample code related to working with AD. These utilities are primarily going to be focused on administration and operations of AD. See the Releases page for the list of the specific utilities published. Everything is being done in C# and all outputs are in CSV so they can easily be parsed.</li>
<li><a href="http://acccheck.codeplex.com/" target="_blank">AccChecker</a>: UI Accessibility Checker (or AccChecker) enables testers to easily discover accessibility problems with Microsoft Active Accessibility (MSAA) and other User Interfaces (UI) implementations for Windows. AccChecker was born from the realization that existing Windows Automation API tools, such as Inspect, provided in-depth details on the implementation, but no information whether that implementation is correct or not. AccChecker comes in three modes – a Graphical User Interface (GUI) tool for the initial investigations of UIs, a set of simple APIs for easily creating automatic test cases, and a command-line tool for batch processing. Using the GUI tool, a tester can easily scan a UI and review the list of errors and warnings. Then, using the per-issue documentation, the tester can determine why each particular issue has occurred, what the implications may be on users with disabilities, and how to fix the issue. Once all issues have been fixed, the tester can use the APIs to create regression tests. Finally, if the APIs cannot be used for any reason, the tester can use the command-line mode of the tool to create tests in a batch file.</li>
<li><a href="http://wpl.codeplex.com/" target="_blank">AntiXSS</a>: Provides a myriad of encoding functions for user input, including HTML, HTML attributes, XML, CSS and JavaScript.</li>
<li><a href="http://dinnernow.codeplex.com/" target="_blank">DinnerNow</a>: A fictitious marketplace where customers can order food from local restaurants for delivery to their home or office. This sample application is designed to demonstrate how you can develop a connected application using several new Microsoft technologies.</li>
<li><a href="http://entlib.codeplex.com/" target="_blank">Microsoft Enterprise Library</a>: A collection of reusable software components (application blocks) designed to assist software developers with common enterprise development challenges. Application blocks are provided as source code plus documentation that can be used &#8220;as is,&#8221; extended, or modified by developers to use on complex, enterprise-level line-of-business development projects.</li>
<li><a href="http://sandcastle.codeplex.com/" target="_blank">Sandcastle</a>: Produces accurate, MSDN style, comprehensive documentation by reflecting over the source assemblies and optionally integrating XML Documentation Comments.</li>
<li><a href="http://www.jetbrains.com/resharper" target="_blank">ReSharper</a>: A productivity extension to Visual Studio that helps improve C#, VB.NET, ASP.NET, XML, or XAML code. It detects and removes errors and code smells; speeds up coding; provides rich navigation and search features, 40 solution-wide refactorings, and many more great features for .NET developers.</li>
<li><a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/" target="_blank">Refactor! Pro</a>: Never before has a developer tool been so easy to use. You don&#8217;t have to be an architect or designer to reap the benefits from using Refactor! Pro™. Tasks you do all the time are suddenly much easier with Refactor!. Simply highlight the code you want to change — smart tags show what&#8217;s available. Select the desired code change operation from the menu. Preview hinting marks up the code and shows the impact of the change before you commit.</li>
<li><a href="http://www.wholetomato.com/" target="_blank">Visual Assist X</a>: Provides productivity enhancements that help you read, write, navigate and refactor code with blazing speed in all Microsoft IDEs including Visual Studio 2010. Read code faster than ever with fewer errors with enhanced Syntax Coloring. Write code at blinding speeds with Suggestions, Acronyms and Snippets. Identify and correct errors before compiling.</li>
<li><a href="http://submain.com/products/ghostdoc.aspx" target="_blank">GhostDoc</a>: A Visual Studio extension that automatically generates XML documentation comments for methods and properties based on their type, parameters, name, and other contextual information. When generating documentation for class derived from a base class or for interface implementation (e.g. .NET Framework or your custom framework), GhostDoc will use the documentation that Microsoft or the framework vendor has already written for the base class or interface.</li>
<li><a href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a>: Source code editor and Notepad replacement that supports several languages. Running in the MS Windows environment, its use is governed by GPL License. Based on the powerful editing component Scintilla, Notepad++ is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendliness, Notepad++ is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment.</li>
<li><a href="http://www.nunit.org/" target="_blank">NUnit</a>: A unit-testing framework for all .Net languages. Initially ported from JUnit, the current production release, version 2.5, is the sixth major release of this xUnit based unit testing tool for Microsoft .NET. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features, for example custom attributes and other reflection related capabilities. NUnit brings xUnit to all .NET languages.</li>
<li><a href="http://www.codesmithtools.com/" target="_blank">CodeSmith</a>: Your code. Your way. Faster. CodeSmith Generator is a tool to help you get your job done faster. Technically speaking it is a template driven Source Code Generator that automates the creation of common application source code for any text based language.</li>
<li><a href="http://technet.microsoft.com/en-us/sysinternals/bb842062" target="_blank">Sysinternals Troubleshooting Utilities</a>: A single Suite of tools for troubleshooting.</li>
<li><a href="http://www.testdriven.net/" target="_blank">TestDriven.Net</a>: Easily run unit tests with a single click, anywhere in your Visual Studio solutions. It supports all versions of Microsoft Visual Studio and it integrates with the best .NET development tools.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://radicaldevelopment.net/must-have-software-development-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

