<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Ed Dunhill's Blog : Studentzine Articles</title><link>http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx</link><description>Tags: Studentzine Articles</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Introduction to Web Development; Popfly Input Blocks</title><link>http://blogs.msdn.com/edunhill/archive/2008/06/13/introduction-to-web-development-popfly-input-blocks.aspx</link><pubDate>Fri, 13 Jun 2008 14:59:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8594387</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8594387.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8594387</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/popfly_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="74" alt="popfly" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/popfly_thumb.jpg" width="192" align="left" border="0" /&gt;&lt;/a&gt; In this the last in a series of five articles on Microsoft Web Development we look at creating an input block to allow your web service to be used in Popfly.&lt;/p&gt;  &lt;h4&gt;Building our block&lt;/h4&gt;  &lt;p&gt;For the purpose of this tutorial we will implement a block that will take XML data (in the form of an RSS feed), process and display that data. This will demonstrate the principles of building an input block in Popfly using JavaScript. In this tutorial we will build out put functionality into our block so we can display our data formatted with html, it is very easy to tweak the output so it can be transformed and displayed using further blocks.&lt;/p&gt;  &lt;p&gt;Firstly, head over to &lt;a href="http://www.popfly.com"&gt;http://www.popfly.com&lt;/a&gt; and login with your Windows Live ID. Then using the toolbar at the top, select Create Stuff &amp;gt; Block. Now we can start building our data input block...&lt;/p&gt;  &lt;p&gt;When you first view the &amp;#8216;create block&amp;#8217; screen, you&amp;#8217;ll see a bunch of XML &amp;#8211; this is the definition of the block so that you can provide customisation through Popfly&amp;#8217;s user interface. Seeing as we&amp;#8217;re creating an RSS-reader block, we&amp;#8217;ll call ours &amp;#8220;RSSFeed&amp;#8221;.&lt;/p&gt;  &lt;p&gt;1. Where it says class=&amp;#8220;HelloWorldClass&amp;#8221;, change it to read class=&amp;#8220;RSSFeed&amp;#8221;.&lt;/p&gt;  &lt;p&gt;2. You&amp;#8217;ll notice below there is a group tagged &amp;#8216;operations&amp;#8217;. This is where you can build different behaviours for your block to have. For this block, we&amp;#8217;ll implement one operation: getItems. This will simply return all the titles from our RSS feed.&lt;/p&gt;  &lt;p&gt;3. Rename the default operation from &amp;#8220;hello&amp;#8221; to &amp;#8220;getItems&amp;#8221;.&lt;/p&gt;  &lt;p&gt;4. Inside the description tags, change the description, to something such as &amp;#8220;Gets the titles from the RSS feed.&amp;#8221;&lt;/p&gt;  &lt;p&gt;5. Above the &amp;lt;outputs&amp;gt; group of tags, create another group called inputs.&lt;/p&gt;  &lt;p&gt;6. Create an input tag with the name=&amp;#8220;url&amp;#8221;, required=&amp;#8220;true&amp;#8221; and type=&amp;#8220;feedURL&amp;#8221;.&lt;/p&gt;  &lt;p&gt;7. Give this new input tag a new description, such as &amp;#8220;The URL of the RSS feed.&amp;#8221;&lt;/p&gt;  &lt;p&gt;8. If you like, you can give this a &amp;lt;defaultValue&amp;gt; property, I&amp;#8217;ve set mine to my blog: &lt;a href="http://blogs.msdn.com/edunhill/rss.xml"&gt;http://blogs.msdn.com/edunhill/rss.xml&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;9. Under the &amp;lt;outputs&amp;gt; group, change the isArray property to &amp;#8220;true&amp;#8221;, change the type to &amp;#8220;custom&amp;#8221; and add object=&amp;#8220;RSSItem&amp;#8221; &amp;#8211; this will show we&amp;#8217;re outputting a list of RSSItems.&lt;/p&gt;  &lt;p&gt;10. After the &amp;lt;operations&amp;gt; group, add a new group called &amp;lt;objects&amp;gt;, so we can quickly define what an RSSItem is.&lt;/p&gt;  &lt;p&gt;11. Create a new &amp;lt;object&amp;gt; tag, with name=&amp;#8220;RSSItem&amp;#8221;, then give it another tag called &amp;lt;field&amp;gt; with the properties name=&amp;#8220;title&amp;#8221;, type=&amp;#8220;title&amp;#8221; and isArray=&amp;#8220;false&amp;#8221;.&lt;/p&gt;  &lt;p&gt;12. That&amp;#8217;s it! The block is now defined so Popfly can understand it. Hopefully you should have something that looks like the below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, we have to head on over to the &amp;#8220;Block Code&amp;#8221; tab, to write the code that will actually make the block do it&amp;#8217;s thing.&lt;/p&gt;  &lt;p&gt;1. Change the HelloWorldClass text to read RSSFeed.&lt;/p&gt;  &lt;p&gt;2. Rename the first &amp;#8220;hello&amp;#8221; function to &amp;#8220;getItems&amp;#8221;, and add url in the brackets after the word &amp;#8220;function&amp;#8221;.&lt;/p&gt;  &lt;p&gt;3. Then inside the function, type the following:&lt;/p&gt;  &lt;p&gt;var returnResponse = environment.getXml(url);&lt;/p&gt;  &lt;p&gt;return this.__formatResponseDataRSSItem(returnResponse);&lt;/p&gt;  &lt;p&gt;These lines download the RSS feed into a readable format for use with our block.&lt;/p&gt;  &lt;p&gt;4. Create another RSSFeed.prototype. called &amp;#8220;__formatResponseDataRSSItem&amp;#8221; &amp;#8211; this will return the article titles as an array of strings (lines of text) for use with our block.&lt;/p&gt;  &lt;p&gt;5. Inside the new function, add the following code:&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var resultArray  = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Array();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;var itemNodeList = resultXML.getElementsByTagName(&lt;span style="color: #006080"&gt;'item'&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var resultNodeCount = itemNodeList.length;            &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;var resultArray  = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Array(resultNodeCount);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;       &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;(var i = 0; i &amp;lt; resultNodeCount; i++)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{   &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    var itemNode = itemNodeList[i];&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(itemNode)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    {                &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        var title =         itemNode.getElementsByTagName(&lt;span style="color: #006080"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;).length &amp;gt;= 1 ?        itemNode.getElementsByTagName(&lt;span style="color: #006080"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;)[0].text : &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;            resultArray[i] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RSSItem(title);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; resultArray;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code iterates through each of the titles in the RSS XML document and adds them to our resultArray, which is in turn, returned to the block for output.&lt;/p&gt;

&lt;p&gt;6. The two final things to do are define (in code) an RSSItem, and then define how our block will pass it&amp;#8217;s data to another block (or optionally, how it will output the data).&lt;/p&gt;

&lt;p&gt;7. Define another function called &amp;#8220;RSSItem&amp;#8221; with &amp;#8220;title&amp;#8221; as a parameter, then insert the code: this.title = title;&lt;/p&gt;

&lt;p&gt;This code defines RSSItem as &amp;#8216;having a title&amp;#8217;.&lt;/p&gt;

&lt;p&gt;8. Finally, we need to output some sort of data. Create another RSSItem.prototype. called &amp;#8220;toString&amp;#8221; and insert the following code:&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var html = &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;html += &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;strong&amp;gt;&amp;quot;&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.title + &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; html;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code simply outputs all the titles in bold as html to be read either by the user, or another block.&lt;/p&gt;

&lt;p&gt;And that&amp;#8217;s it! Now our block is totally built and configured, hopefully you&amp;#8217;ll be looking at something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now we can quickly test the block, by clicking the &amp;#8220;Save and Run&amp;#8221; option to the top-right of your screen. Give the block a name, like RSSFeed, and Popfly will create a new Mashup with your block. If you want to see what it looks like, you can hit preview and should be able to see a list of article titles.&lt;/p&gt;

&lt;p&gt;You can change the code in step 8 above to output variables instead of html so you can hook this block up with a display or transform block.&lt;/p&gt;

&lt;p&gt;I hope you've enjoyed the series, if you have any questions about any aspect of Microsoft Web Dev don't hesitate to &lt;a href="http://blogs.msdn.com/edunhill/contact.aspx"&gt;drop me a line&lt;/a&gt;.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2c37a8df-a036-4fcc-a5eb-680b1d44eda9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Popfly" rel="tag"&gt;Popfly&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Studentzine" rel="tag"&gt;Studentzine&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8594387" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Introduction to Web Development; Silverlight and SQL</title><link>http://blogs.msdn.com/edunhill/archive/2008/05/15/introduction-to-web-development-silverlight-and-sql.aspx</link><pubDate>Thu, 15 May 2008 09:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8506005</guid><dc:creator>edunhill</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8506005.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8506005</wfw:commentRss><description>&lt;P&gt;In the fourth in a series of five articles exploring Microsoft Web technologies we'll look at implementing a Silverlight front end for our SQL database/WCF Web Service.&lt;/P&gt;
&lt;H4&gt;Prerequisites&lt;/H4&gt;
&lt;P&gt;For this tutorial you will need &lt;A href="http://downloads.channel8.msdn.com/" target=_blank mce_href="http://downloads.channel8.msdn.com"&gt;Visual Studio 2008&lt;/A&gt; Standard or above and the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en"&gt;Silverlight 2 Beta 1 Tools for Visual Studio 2008&lt;/A&gt;. Both items are available for free for students (see links).&lt;/P&gt;
&lt;H4&gt;Getting started&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 10px 15px 10px 20px; BORDER-RIGHT-WIDTH: 0px" height=154 alt=image src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_thumb.png" width=139 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_thumb.png"&gt;&lt;/A&gt; Last month we looked at building a simple ASP.NET Web App that connected to a SQL database to add and retrieve data. This month we will build on that example and create a Silverlight frontend for the database. Because Silverlight is a client side technology and we want to retrieve data from the server side we need to implement a Web Service that will retrieve the data on the server side and then provide that data to our Silverlight application.&lt;/P&gt;
&lt;H4&gt;The Web Service&lt;/H4&gt;
&lt;P&gt;We will start by building a WCF web service that will retrieve data from our database (using the principles demonstrated last month) and allow us to access this data in our Silverlight application.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Visual Studio and select 'File'&amp;gt;'New'&amp;gt;'Project...'&amp;gt;'Web'&amp;gt;'WCF Service Application' &lt;/LI&gt;
&lt;LI&gt;Firstly we need to reset the default binding in the Web.config file to Basic HttpBinging: 
&lt;UL&gt;
&lt;LI&gt;Open the Web.config file &lt;/LI&gt;
&lt;LI&gt;Find &amp;lt;System.serviceModel&amp;gt; &amp;lt;service&amp;gt; &amp;lt;endpoint&amp;gt; &lt;/LI&gt;
&lt;LI&gt;Set the 'binding' property to 'basicHttpBinding' &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Now lets implement our database and dataset - follow the instructions in &lt;A href="http://blogs.msdn.com/edunhill/archive/2008/04/19/introduction-to-web-development-building-an-asp-net-sql-web-application.aspx" target=_blank mce_href="http://blogs.msdn.com/edunhill/archive/2008/04/19/introduction-to-web-development-building-an-asp-net-sql-web-application.aspx"&gt;last months article&lt;/A&gt;. 
&lt;UL&gt;
&lt;LI&gt;If you get stuck take a look at the below code which implements retrieval of data using our dataset and returns an int specifying the number of rows in our table: 
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; CountUsers()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            DataSet1TableAdapters.addressesTableAdapter addressAdapter = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; CustomerService.DataSet1TableAdapters.addressesTableAdapter();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            DataSet1.addressesDataTable addresses = addressAdapter.GetData();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            ArrayList addressList = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ArrayList();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            &lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt; (DataSet1.addressesRow addressRow &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; addresses)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;                addressList.Add(addressRow.Name + &lt;SPAN style="COLOR: #006080"&gt;" - "&lt;/SPAN&gt; + addressRow.Phone);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; rows = addressList.Count;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; rows;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;That's our service implemented! &lt;/P&gt;
&lt;H4&gt;The Silverlight Frontend&lt;/H4&gt;
&lt;P&gt;Once you have your WCF Web Service up and running you can move onto implementing your Silverlight frontend. I will now show you how to consume data from your service using Silverlight. &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;First we need to add a Silverlight Project to our solution: 
&lt;UL&gt;
&lt;LI&gt;Right click the solution in the Solution Explorer and select 'Add'&amp;gt;'New Project...'&amp;gt;'Silverlight'&amp;gt;'Silverlight Application' &lt;/LI&gt;
&lt;LI&gt;In the following dialog box leave the default settings intact and click OK. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Now you should see your page.xaml file in design/code view &lt;/LI&gt;
&lt;LI&gt;Add '&amp;lt;TextBox Height="50" Width="200" x:Name="userCountResult"/&amp;gt;' within the '&amp;lt;Grid&amp;gt;' tags to create a TextBox we can manipulate in code. &lt;/LI&gt;
&lt;LI&gt;Now we need to create a reference to the service we created in the previous section: 
&lt;UL&gt;
&lt;LI&gt;In the Solution Explorer right click the references folder under the Silverlight project and select 'Add service reference...'&amp;gt;'Discover' &lt;/LI&gt;
&lt;LI&gt;You should now see the Web service you created so just click OK to create the reference. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Next we're going to write the code to connect to the Web service, download the data and when the data is fully downloaded fire an event that will update out TextBox: 
&lt;UL&gt;
&lt;LI&gt;You need to insert the below code into your Page() class (&lt;EM&gt;NB: you may have to change some of the reference names depending on the naming conventions you have used&lt;/EM&gt;) &lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; Page()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            InitializeComponent();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            Binding binding = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; BasicHttpBinding();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            EndpointAddress address = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; EndpointAddress(&lt;SPAN style="COLOR: #006080"&gt;"http://localhost:54580/service1.svc"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            ServiceReference.Service1Client proxy = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ServiceReference.Service1Client(binding, address);  &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            proxy.CountUsersCompleted += &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; EventHandler&amp;lt;CustomerClient.ServiceReference.CountUsersCompletedEventArgs&amp;gt;(proxy_CountUsersCompleted);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            proxy.CountUsersAsync();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;This code will connect with the service running on the same domain, set up a proxy, initiate data retrieval and create an event that will be fired when data retrieval is complete. &lt;/LI&gt;
&lt;LI&gt;So now we need to handle the event: &lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; proxy_CountUsersCompleted(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, CustomerClient.ServiceReference.CountUsersCompletedEventArgs e)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            userCountResult.Text = &lt;SPAN style="COLOR: #006080"&gt;"Number of users: "&lt;/SPAN&gt; + e.Result;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Hit F5 and it should all work. If you find it throws an unhandled exception related to http error codes the chances are that the dev server provided by VS2008 is not using port 54580 as in the above example. The port used is dynamic and you just need to check in your IE address bar and update the code accordingly. If you come up against any other problems take a look at the zip file below - it contains my working sln file which you can download and play with.&lt;/P&gt;
&lt;P&gt;Also why not check out these excellent tutorials on &lt;A href="http://msdn.com/" target=_blank mce_href="http://msdn.com"&gt;MSDN&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc197940(VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc197940(VS.95).aspx"&gt;How to: Build a Service for Silverlight Clients&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc197937(VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc197937(VS.95).aspx"&gt;How to: Access a Service from Silverlight using Visual Studio&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Next Month&lt;/H4&gt;
&lt;P&gt;Next month will be the final article in this series and will investigate implementing our Web Service as a Block in &lt;A href="http://www.popfly.com/" target=_blank mce_href="http://www.popfly.com"&gt;Popfly&lt;/A&gt; to allow us to rapidly build Web Apps and share our data in new ways.&lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:47c5027d-1d08-4745-92cf-6771b5ea5690 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Silverlight" rel=tag mce_href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SQL" rel=tag mce_href="http://technorati.com/tags/SQL"&gt;SQL&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Visual%20Studio%202008" rel=tag mce_href="http://technorati.com/tags/Visual%20Studio%202008"&gt;Visual Studio 2008&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Popfly" rel=tag mce_href="http://technorati.com/tags/Popfly"&gt;Popfly&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Web%20Service" rel=tag mce_href="http://technorati.com/tags/Web%20Service"&gt;Web Service&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Web%20Application" rel=tag mce_href="http://technorati.com/tags/Web%20Application"&gt;Web Application&lt;/A&gt;,&lt;A href="http://technorati.com/tags/ASP.NET" rel=tag mce_href="http://technorati.com/tags/ASP.NET"&gt;ASP.NET&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8506005" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/edunhill/attachment/8506005.ashx" length="879159" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Microsoft UK Studentzine now on Facebook!</title><link>http://blogs.msdn.com/edunhill/archive/2008/05/09/microsoft-uk-studentzine-now-on-facebook.aspx</link><pubDate>Fri, 09 May 2008 14:41:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8479508</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8479508.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8479508</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.facebook.com/pages/Microsoft-UK-StudentZine/8797923587?ref=mf" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="279" alt="Facebook" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/fbstudentzine_1478C/image_3.png" width="233" align="left" border="0" /&gt;&lt;/a&gt; Some of you probably already subscribe to our &lt;a href="http://www.microsoft.com/uk/academia/students/student-newsletter/default.mspx" target="_blank"&gt;monthly student newsletter&lt;/a&gt; focused on technology and how to use it, well now we're making it even easier to access all our great content and share it with your friends on &lt;a href="http://www.facebook.com" target="_blank"&gt;Facebook&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We have a new &lt;a href="http://www.facebook.com/pages/Microsoft-UK-StudentZine/8797923587?ref=mf" target="_blank"&gt;Facebook Page&lt;/a&gt; with all the content from the Studentzine plus discussion boards and the obligatory Wall. So why not become a Fan today and enter our competition for tickets to see the Foo fighters live at Wembley on the 6th June! All you have to do is upload a photo to the page that represents student life for you - the best seven photos get a pair of tickets.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b54b0a9b-a69e-448a-b109-4e9d20a927ca" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Facebook" rel="tag"&gt;Facebook&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Studentzine" rel="tag"&gt;Studentzine&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft%20UK" rel="tag"&gt;Microsoft UK&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8479508" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Random+Stuff/default.aspx">Random Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category></item><item><title>Introduction to Web Development; Building an ASP.NET/SQL Web Application</title><link>http://blogs.msdn.com/edunhill/archive/2008/04/19/introduction-to-web-development-building-an-asp-net-sql-web-application.aspx</link><pubDate>Sat, 19 Apr 2008 12:32:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8409348</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8409348.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8409348</wfw:commentRss><description>&lt;p&gt;In the third of a series of five articles exploring Microsoft Web technologies I'll walk you through building a simple Web application which retrieves and stores data in a SQL database.&lt;/p&gt;  &lt;h4&gt;Getting Started&lt;/h4&gt;  &lt;p&gt;First off you need to set up your development environment, to find out how see my &lt;a href="http://blogs.msdn.com/edunhill/archive/2008/03/12/introduction-to-web-development-getting-started-with-asp-net.aspx" target="_blank"&gt;previous article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I'm going to show you how to build a simple address book application which will allow you to search for a contact by name and add new contacts. The data will be stored in a SQL database and the frontend will be built using ASP.NET.&lt;/p&gt;  &lt;p&gt;To kick off you need to open Visual Studio and create a new Web Site:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click the File menu &amp;gt; New &amp;gt; Web Site... &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="71" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb.png" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the resulting dialogue box select 'ASP.NET Web Site' and give your project a name in the Location dialogue. &lt;/li&gt;    &lt;li&gt;A new Web Site project will then be shown in Visual Studio. Locate the Solution Explorer: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="226" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_2.png" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;(If the Solution Explorer is not displayed press Ctrl + S + W)&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;The Database...&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Now we will create a new SQL database to store out data. Right click the App_Data folder (&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="14" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_3.png" width="69" border="0" /&gt;&lt;/a&gt; ) folder and select 'Add New Item...' &lt;/li&gt;    &lt;li&gt;Select 'SQL Database' and give your database a name. &lt;/li&gt;    &lt;li&gt;Locate the 'Server Explorer' pane, select your database and right click Tables and select 'Add New Table' &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="226" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_4.png" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;(If the Server Explorer is not displayed press Ctrl + S + L)&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the centre pane create two columns called Name and Phone, set their Data Types to 'varchar(50)' and uncheck the 'Allow Nulls' box in the Name column. &lt;/li&gt;    &lt;li&gt;Hit Ctrl + S and give the table a name. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We now have our database ready to use so its time to link it to our web app and build a simple frontend.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Go back to the Solution Explorer and right click your project and select 'Add New Item...' &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="178" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_5.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Now select Dataset and give it a name. (&lt;em&gt;If you get a warning simply click OK and the appropriate folder structure will be created&lt;/em&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You will now get a wizard pop up which will walk you through the creation of your Dataset.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the first window select your database and click next, give the 'Connection String' a name and select Use SQL statements &lt;/li&gt;    &lt;li&gt;At the next step select the 'Query Builder...' button, select your table and click close. &lt;/li&gt;    &lt;li&gt;Click *(All Columns) and OK. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="85" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_6.png" width="157" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the wizard click Finish &lt;/li&gt;    &lt;li&gt;Click on the query section and click Add &amp;gt; Query... &lt;/li&gt;    &lt;li&gt;In the wizard select Use SQL statements, Next, Insert, Finish. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;The frontend...&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;In the Solution Explorer double click Default.aspx and when it loads click on the 'Design' tab &lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="21" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_7.png" width="67" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;At the bottom of the Server Explorer click 'Toolbox and then drag and drop three textboxes and two buttons onto the page: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="74" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_8.png" width="292" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Change the name of each control in the Properties pane. &lt;/li&gt;    &lt;li&gt;Now double click the top button to create the click event and access the code. &lt;/li&gt;    &lt;li&gt;Copy and paste the below code into your click even for the search button (please note this code may need tweaking depending on the naming conventions you've used) &lt;/li&gt; &lt;/ul&gt;  &lt;div&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter addressAdapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;         DataSet1.addressBookDataTable addresses = addressAdapter.GetData();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DataSet1.addressBookRow addressRow &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; addresses)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;             Response.Write(addressRow.Name + &lt;span style="color: #006080"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + addressRow.Phone);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once you've got your code working and everything compiles we have a way to retrieve all the data from the database and display it. The code can be modified slightly to display only results matching what was entered in the search box with the addition of an if statement:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter addressAdapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;         DataSet1.addressBookDataTable addresses = addressAdapter.GetData();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DataSet1.addressBookRow addressRow &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; addresses)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (searchBox.Text == addressRow.Name)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;             Response.Write(addressRow.Name + &lt;span style="color: #006080"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + addressRow.Phone);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This is the quickest way to implement search functionality for this example but it would be much more elegant to construct a SQL query based on the search term to avoid iterating over all data in the table.&lt;/p&gt;

&lt;p&gt;Now we have our database and means of getting data out implemented it just leaves the small task of implementing the ability to put some data in!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;First go back to the Solution Explorer and open the Dataset then right click the Table Adapter and select Add &amp;gt; Query... &lt;/li&gt;

  &lt;li&gt;Select 'Use SQL statements' &amp;gt; Next &amp;gt; Insert &amp;gt; Next&amp;gt; Finish &lt;/li&gt;

  &lt;li&gt;Go back to Default.aspx and double click the second button. &lt;/li&gt;

  &lt;li&gt;Copy in the below code - again it may need tweaking. &lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter addressAdapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; addressAdapter.InsertQuery(nameBox.Text,phoneBox.Text);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; Response.Write(nameBox.Text + &lt;span style="color: #006080"&gt;&amp;quot; and &amp;quot;&lt;/span&gt; + phoneBox.Text + &lt;span style="color: #006080"&gt;&amp;quot; written to database!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you hit F5 it will compile and run and you should be able insert data and then search it.&lt;/p&gt;

&lt;p&gt;If you get stuck check out the below video of me building the application from start to finish.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:62fc8d62-8dd8-4911-9789-49268d7f2aa5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 325px; padding-top: 0px"&gt;&lt;div id="a8458fb8-a624-4f9a-9c05-779f856764c8" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=fe09a70b-0a49-44b4-982c-c35ec74e0db6&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/videoff23c2568145_1.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('a8458fb8-a624-4f9a-9c05-779f856764c8'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;325\&amp;quot; height=\&amp;quot;273\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=fe09a70b-0a49-44b4-982c-c35ec74e0db6&amp;amp;from=writer\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4&gt;Next Month...&lt;/h4&gt;

&lt;p&gt;We will be looking at building a &lt;a href="http://www.silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt; front end for our address book database.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:231cb870-717e-47ac-a8c3-f6e8a289bf2e" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL" rel="tag"&gt;SQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Studentzine" rel="tag"&gt;Studentzine&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8409348" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Introduction to Web Development; Getting started with ASP.NET</title><link>http://blogs.msdn.com/edunhill/archive/2008/03/12/introduction-to-web-development-getting-started-with-asp-net.aspx</link><pubDate>Wed, 12 Mar 2008 04:51:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8164938</guid><dc:creator>edunhill</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8164938.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8164938</wfw:commentRss><description>&lt;p&gt;In the second of a series of five articles exploring Microsoft Web technologies we take a look at setting up a development environment and hosting for your web applications.&lt;/p&gt;  &lt;h4&gt;The Development Environment&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/DreamSparkFreeSoftwareforallUKStudents_1405F/image_2.png"&gt;&lt;img style="margin: 0px 5px 0px 0px" height="203" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/DreamSparkFreeSoftwareforallUKStudents_1405F/image_thumb.png" width="244" align="left" border="0" /&gt;&lt;/a&gt;To get you ready to rock with &lt;a href="http://asp.net" target="_blank"&gt;ASP.NET&lt;/a&gt; and &lt;a href="http://silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt; we first have to set up a development environment and local test server. For ASP.NET and the Silverlight business logic we use &lt;a href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx" target="_blank"&gt;Visual Studio 2008&lt;/a&gt; and for the graphical elements for Silverlight we will use &lt;a href="http://www.microsoft.com/expression/" target="_blank"&gt;Expression&lt;/a&gt; Blend. Both of these products are available for free to students from &lt;a href="http://downloads.channel8.msdn.com" target="_blank"&gt;DreamSpark&lt;/a&gt;. All you need to do is visit the DreamSpark Web site, verify your student status and download Visual Studio 2008 and the Expression Suite. &lt;/p&gt;  &lt;p&gt;To make life easy Visual Studio and Expression Blend both incorporate a web server for testing applications locally so it&amp;#8217;s as easy as hitting F5 (Start debugging) and checking everything is working OK. The Web server included with both of these applications is known as &lt;a href="http://www.asp.net/downloads/archived/cassini/" target="_blank"&gt;Cassini&lt;/a&gt; and can be downloaded and installed independently.&lt;/p&gt;  &lt;h4&gt;Web Application Hosting&lt;/h4&gt;  &lt;p&gt;When it comes to web hosting, you have two options: either set up your own server, or use managed hosting provided by a third party. &lt;/p&gt;  &lt;h4&gt;Setting up IIS&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_2.png"&gt;&lt;img style="margin: 5px 0px 5px 5px" height="175" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_thumb.png" width="244" align="right" border="0" /&gt;&lt;/a&gt;For a production server, you&amp;#8217;re going to need &lt;a href="http://www.microsoft.com/servers/default.mspx" target="_blank"&gt;Windows Server&lt;/a&gt; &amp;#8211; this is available through Dreamspark.&amp;#160; Dreamspark provides Windows Server in an ISO format, which you&amp;#8217;ll need to burn to disc.&amp;#160; MSP &lt;a href="http://www.klog.co.uk/" target="_blank"&gt;Kris Athi&lt;/a&gt; has written a great guide on how to do this on &lt;a href="http://channel8.msdn.com/" target="_blank"&gt;Channel8&lt;/a&gt; which you can view &lt;a href="http://channel8.msdn.com/Posts/2260/" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Once Windows Server is installed, you&amp;#8217;ll need to install &lt;a href="http://www.iis.net/" target="_blank"&gt;IIS&lt;/a&gt; (Internet Information Services) &amp;#8211; there&amp;#8217;s a &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bdca6653-499a-40db-9606-6e6074615038.mspx?mfr=true" target="_blank"&gt;guide on TechNet&lt;/a&gt; that details how to do this. &lt;/p&gt;  &lt;p&gt;Finally, you&amp;#8217;ll need to configure your home directory in IIS, which is where you&amp;#8217;ll host your Web site.&amp;#160; To do this, launch IIS ('Administrative Tools' &amp;gt; 'Internet Information Services') and expand the 'Web Sites' node.&amp;#160; You should see 'Default Web Site' &amp;#8211; view the properties for this web site.&amp;#160; Configuration varies from machine to machine, but on this configuration page should be a directory telling you where the 'Default Web Site' is storing its files.&amp;#160; Simply change this setting to a folder of your choice &amp;#8211; and that&amp;#8217;s it!&amp;#160; IIS is now configured and ready to rock. &lt;/p&gt;  &lt;p&gt;To make sure computers outside your local network can see your Web site, you&amp;#8217;ll need to open your Internet port on your router, if you have one.&amp;#160; To find out how to do this, refer to your router&amp;#8217;s documentation.&amp;#160; Usually, it&amp;#8217;s a simple matter of adding your server&amp;#8217;s IP address to an address table and mapping port 80 to this IP.&lt;/p&gt;  &lt;h4&gt;WebFusion Hosting&lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 5px 5px 5px 0px" height="194" alt="Free web hosting and software from WebFusion and Microsoft." src="http://studenthosting.webfusion.co.uk/library/images/ac_banner.gif" width="154" align="left" /&gt;&lt;/p&gt;  &lt;p&gt;If you want to make things easy for yourself, then the managed server options probably for you.&amp;#160; And guess what?&amp;#160; Microsoft and WebFusion are offering free web hosting for all UK students, so it&amp;#8217;s a no-brainer.&amp;#160; To learn more about our hosting offer, take a look at &lt;a href="http://blogs.msdn.com/edunhill/archive/2008/01/20/free-asp-net-hosting-for-uk-students.aspx" target="_blank"&gt;this blog post&lt;/a&gt;, or to get your code, &lt;a href="http://blogs.msdn.com/edunhill/contact.aspx" target="_blank"&gt;click here to email me&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Once you&amp;#8217;ve got your account set up, you&amp;#8217;ll get an email with FTP details &amp;#8211; these details will allow you to edit your web site in Visual Studio.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Editing a Web Site via FTP in Visual Studio&lt;/h4&gt;  &lt;p&gt;There are a few easy steps to start editing your site in Visual Studio: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Launch Visual Studio. &lt;/li&gt;    &lt;li&gt;Select 'File' &amp;gt; 'Open' &amp;gt; 'Web Site'. &lt;/li&gt;    &lt;li&gt;Select 'FTP Site' from the list. &lt;/li&gt;    &lt;li&gt;Specify the FTP settings from the previous email. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now you can start editing your web site remotely, all within Visual Studio!&lt;/p&gt;  &lt;h4&gt;Writing an ASP.NET &amp;#8220;Hello World!&amp;#8221; App&lt;/h4&gt;  &lt;p&gt;So now we&amp;#8217;ve got our development environment and our hosting set up, let&amp;#8217;s build a simple app to test everything&amp;#8217;s working.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Launch Visual Studio and create a new project:&amp;#160; &lt;ol&gt;       &lt;li&gt;Select 'File' &amp;gt; 'New' &amp;gt; 'Project' using the menu. &lt;/li&gt;        &lt;li&gt;Under the branches, select 'Visual C#' &amp;gt; 'Web'. &lt;/li&gt;        &lt;li&gt;Finally, select 'ASP.NET Web Application' and click 'OK'. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Once Visual Studio has built your project, open the C# source file:      &lt;ol&gt;       &lt;li&gt;In the Solution Explorer, expand the Default.aspx branch. &lt;/li&gt;        &lt;li&gt;Double click on the Default.aspx.cs file to edit the C# code. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Type some code to test that ASP.NET is configured correctly:      &lt;ol&gt;       &lt;li&gt;Under the Page_Load void, type: 'Response.Write(&amp;quot;Hello World!&amp;quot;);' &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt; &lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentGettings.NET_11DD/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="168" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentGettings.NET_11DD/image_thumb.png" width="223" border="0" /&gt;&lt;/a&gt;   &lt;p&gt;That&amp;#8217;s it! Now, simply hit the F5 key to start debugging your application &amp;#8211; you should see a page in Internet Explorer that reads &amp;#8220;Hello World!&amp;#8221; &amp;#8211; that means you&amp;#8217;ve configured ASP.NET correctly.&lt;/p&gt;  &lt;p&gt;Now we have everything installed and configured and hosting in place we&amp;#8217;re ready to start writing some serious code. Next month we will create an ASP.NET Web application with a SQL server database to store and retrieve data. Then in following months I&amp;#8217;ll show you how to build a Silverlight front end for our application.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:88dc7d17-ed07-45b9-ac71-81e18dd3ece3" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Hosting" rel="tag"&gt;Hosting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IIS" rel="tag"&gt;IIS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Expression%20Blend" rel="tag"&gt;Expression Blend&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Webfusion" rel="tag"&gt;Webfusion&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8164938" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category></item><item><title>Introduction to Web Development; Microsoft Web Technologies</title><link>http://blogs.msdn.com/edunhill/archive/2008/02/14/introduction-to-web-development-microsoft-web-technologies.aspx</link><pubDate>Thu, 14 Feb 2008 13:27:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7689514</guid><dc:creator>edunhill</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/7689514.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=7689514</wfw:commentRss><description>&lt;p&gt;So you want to develop a Web site? Well you&amp;#8217;re in luck; Microsoft offers end to end Web technology solutions giving you everything you need from hosting through to client side rich Internet applications. In this article I will provide an overview of Microsoft&amp;#8217;s Web technologies and give you plenty of links that will help you to get started. &lt;/p&gt;  &lt;h4&gt;1. Hosting&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="175" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_thumb.png" width="244" align="left" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.iis.net/default.aspx" target="_blank"&gt;IIS&lt;/a&gt; (Internet Information Services) is Microsoft&amp;#8217;s Web server technology and comes with both the consumer and server OSs (operating systems). With Windows XP and Vista IIS is an optional add-on which can easily be added once the OS is installed. You can find out how to add IIS7 to Vista &lt;a href="http://www.iis.net/articles/view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Install-IIS7-on-Vista" target="_blank"&gt;here&lt;/a&gt;. There is however a limitation with the consumer operating systems which means you are only allowed ten concurrent connections to the server at any one time. This is perfect for test server or a low traffic Web server. Another alternative Web Server is &lt;a href="http://www.asp.net/downloads/archived/cassini/" target="_blank"&gt;Cassini&lt;/a&gt;, this is very lightweight and designed for testing ASP.NET pages. If you have a server OS (for example &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/overview.aspx" target="_blank"&gt;Server 2008&lt;/a&gt;) you get the fully fledged version of IIS suitable for production Web sites included out of the box.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-gb/express/aa718391.aspx" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 10px; border-right-width: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image4.png" width="244" align="right" border="0" /&gt;&lt;/a&gt; The second key technology that must be considered when thinking about Web hosting is a database server. Microsoft's database technology is know as &lt;a href="http://www.microsoft.com/sql/default.mspx" target="_blank"&gt;SQL&lt;/a&gt;. Microsoft offers a free version of SQL called the &lt;a href="http://www.microsoft.com/sql/editions/express/default.mspx" target="_blank"&gt;Express Edition&lt;/a&gt; which is perfect for testing and low traffic sites. There are a whole bunch of video tutorials to help you get started with SQL &lt;a href="http://msdn2.microsoft.com/en-gb/express/aa718391.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you don't want to host your site on your own server then you can take advantage of Microsoft and &lt;a href="http://www.webfusion.co.uk/" target="_blank"&gt;Webfusion's&lt;/a&gt; offer of free Web hosting for UK students. You can find out more &lt;a href="http://blogs.msdn.com/edunhill/archive/2008/01/20/free-asp-net-hosting-for-uk-students.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;2. Tools&lt;/h4&gt;  &lt;p&gt;Once you have your Web hosting set up the next thing you need to think about is the tools you will use to build your site. Microsoft offers a complete range of tools for Web Development:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx" target="_blank"&gt;Visual Studio&lt;/a&gt; - For developing .NET based solutions with full support for HTML and CSS. There are free &lt;a href="http://www.microsoft.com/express/" target="_blank"&gt;Express&lt;/a&gt; editions of Visual Studio but the full versions are also available to students for free through &lt;a href="http://msdn2.microsoft.com/en-gb/academic/default.aspx" target="_blank"&gt;MSDNAA&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/expression/products/overview.aspx?key=web" target="_blank"&gt;Expression Web&lt;/a&gt; - For developing predominantly HTML/CSS pages with some support for ASP.NET. A 60 day trial is available for free from the Expression Web site but full versions are available free for students through MSDNAA. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/expression/products/overview.aspx?key=blend" target="_blank"&gt;Expression Blend&lt;/a&gt; - For developing Silverlight based Web applications. A 60 day trial is available for free from the Expression Web site but full versions are available free for students through MSDNAA. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_6.png"&gt;&lt;/a&gt;&lt;a href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="70" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image17.png" width="204" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.microsoft.com/expression/" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="70" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image8.png" width="257" border="0" /&gt;&lt;/a&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;h4&gt;3. ASP.NET &amp;amp; AJAX&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="123" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_thumb_7.png" width="228" align="left" border="0" /&gt;&lt;/a&gt;Now you've got your hosting sorted out and your tools installed it's time to start building some code. Microsoft's primary Web development platform is &lt;a href="http://www.asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt;. ASP.NET is a server side object orientated technology which can be used to build interactive Web pages and services. Many major commercial Web sites such as &lt;a href="http://www.myspace.com" target="_blank"&gt;Myspace&lt;/a&gt; and &lt;a href="http://www.dell.com" target="_blank"&gt;Dell&lt;/a&gt; are built on this technology but it's very easy to get started so is ideal for building your personal pages and projects. Below are some resources to help you find out more about ASP.NET and get started building some code:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 10px 10px; border-right-width: 0px" height="106" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image22_thumb.png" width="244" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.asp.net/get-started/" target="_blank"&gt;Video tutorials from the official ASP.NET Web site.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/learn/" target="_blank"&gt;Huge archive of tutorials and guides covering every aspect of ASP.NET including integration of SQL databases.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/community/projects/" target="_blank"&gt;ASP.NET starter kits and community projects&lt;/a&gt; - you can use these as an easy way to get started and get your site online at top speed. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/" target="_blank"&gt;Scott Guthrie's Blog&lt;/a&gt; - Frequently updated Microsoft blog with lots of ASP.NET resources. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/MSPress/books/11239.aspx" target="_blank"&gt;ASP.NET 3.5 Step by Step&lt;/a&gt; - This a great book when starting with ASP.NET or a great reference for more experienced developers. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Traditionally server side Web technologies used page refreshes to update content and facilitate user interaction. For example a user submits some form data, in response a database is queried and retrieved data is integrated into a new HTML page. Through the use of several existing technologies it is now possible to create this type of reaction without the page refreshing creating a far more dynamic user experience. The technique used to do this is AJAX (Asynchronous JavaScript and XML). AJAX works by sending and receiving data as XML and dynamically updating the page by using JavaScript to manipulate the DOM (Document Object Model). Because AJAX is essentially a technique rather than a specific technology it can be implemented with a variety of server side platforms. ASP.NET 3.5 supports AJAX out of the box but the AJAX framework can also be added on to ASP.NET 2.0 installs. A great example of the use of &lt;a href="http://www.asp.net/ajax/" target="_blank"&gt;ASP.NET AJAX&lt;/a&gt; is the &lt;a href="http://www.asp.net/ajax/showcase/" target="_blank"&gt;Showcase&lt;/a&gt; section on the official Web site; when you mouse over each example you see more information provided using CSS (Custom Style Sheet) overlays with the content being pulled from the database on the fly.&lt;/p&gt;  &lt;h4&gt;4. Silverlight&lt;/h4&gt;  &lt;p&gt;If you want to take user experience to the next level then &lt;a href="http://silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt; is the technology for you. Silverlight allows you to build client side RIAs (Rich Internet Applications) which are scalable because they are based on vector graphics defined in an XML format known as XAML. Media streaming is also supported as are full screen applications. Expression Blend is the primary tool for creating the graphical side of applications with Visual Studio used to develop the interactive functionality in code. Below are some examples of current Web sites built using Silverlight technology and tutorials to help you get started. I have also built a very simple Silverlight animation (which you can see below), you can see the XAML behind this application by right clicking and selecting 'Save as' &lt;a href="http://ed83.members.winisp.net/Page.xaml"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_23.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="230" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentMicrosoftWeb_140FE/image_thumb_10.png" width="244" align="right" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.t5m.com/" target="_blank"&gt;T5m.com&lt;/a&gt; - A great example of a commercial site built in Silverlight which features live video streaming in full screen. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/tims/" target="_blank"&gt;Tim Sneath's blog&lt;/a&gt; - Great blog with regular information about Silverlight. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/fox/" target="_blank"&gt;Fox Movies Demo&lt;/a&gt; - Example of a custom media player which uses adaptive streaming to cater for users with different speed connections. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/GetStarted/" target="_blank"&gt;Official getting started guide&lt;/a&gt; - Good video tutorial. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel8.msdn.com/Posts/Microsoft-Inspiration-Tour-Part-2--Silverlight/" target="_blank"&gt;Inspiration Tour Silverlight session&lt;/a&gt; - This is an introduction to Silverlight specifically for students that we put together for the &lt;a href="http://blogs.msdn.com/edunhill/archive/2007/10/04/inspiration-tour-resources.aspx" target="_blank"&gt;Inspiration Tour&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.live.com/" target="_blank"&gt;Free Silverlight Hosting&lt;/a&gt; from Windows Live. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;iframe src="http://ed83.members.winisp.net/default.html" frameborder="0" width="240" scrolling="no" height="110"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;So there you have it, a quick and dirty look at Microsoft Web tech. Over the next couple of months I'll look at the technologies introduced here in more detail so check back soon.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:02a9effb-e2e8-4e1a-b992-51a4fbb604bd" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/IIS" rel="tag"&gt;IIS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL" rel="tag"&gt;SQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Expression" rel="tag"&gt;Expression&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAX" rel="tag"&gt;AJAX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Students" rel="tag"&gt;Students&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Studentzine" rel="tag"&gt;Studentzine&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7689514" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category></item><item><title>Introduction to Web Dev – Internet History</title><link>http://blogs.msdn.com/edunhill/archive/2008/02/11/introduction-to-web-dev-1-5-history.aspx</link><pubDate>Tue, 12 Feb 2008 01:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7623310</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/7623310.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=7623310</wfw:commentRss><description>&lt;P&gt;This is the first article in a series&amp;nbsp;about Web Development exploring the origins of the Internet, the birth of the Web and improvements in user experience from HTML to Silverlight.&lt;/P&gt;
&lt;H4&gt;Origins of the Internet and the birth of the Web&lt;/H4&gt;
&lt;P&gt;The origins of the Internet can be traced back to the creation of the first packet switching network by the United States Department of &lt;A href="http://www.darpa.mil/" target=_blank mce_href="http://www.darpa.mil/"&gt;Defence Advanced Research Projects Agency&lt;/A&gt; in 1969. The ARPANET initially used the 1822 protocol which supported basic data transmission and receipt acknowledgement but proved inadequate at handling multiple connections to different applications on the same host. The first message to be sent using ARPANET was “Lo”, the intention was to send the word “Login” but the system crashed after the first two letters. &lt;BR&gt;&lt;BR&gt;The 1822 protocol was replaced by the NCP (Network Control Program) protocol which supported several technologies still used today such as FTP (File Transfer Protocol) and Email. In fact the first network email is thought to have been sent by &lt;A href="http://openmap.bbn.com/~tomlinso/ray/firstemailframe.html" target=_blank mce_href="http://openmap.bbn.com/~tomlinso/ray/firstemailframe.html"&gt;Ray Tomlinson&lt;/A&gt; between two machines sitting side by side but connected only by ARPANET. It was Ray Tomlinson who introduced the use of the @ sign to separate account and domain names in email addresses. &lt;BR&gt;&lt;BR&gt;In 1983 TCP/IP replaced the NCP protocol on ARPANET allowing communication with other similar networks. In 1985 the &lt;A href="http://www.nsf.gov/" target=_blank mce_href="http://www.nsf.gov/"&gt;NSF&lt;/A&gt; (National Science Foundation) funded the creation of several supercomputer centres at key US universities and in 1986 created a network between them using the TCP/IP protocol called the NSFNET. Network traffic across the NSFNET grew exponentially and the backbone was upgraded to 1.5M/bits in 1988. At the same time the network was opened up to commercial interests with the NSFNET connected to the commercial MCI Mail system in 1989. The Internet was born. &lt;BR&gt;&lt;BR&gt;Meanwhile at &lt;A href="http://public.web.cern.ch/Public/Welcome.html" target=_blank mce_href="http://public.web.cern.ch/Public/Welcome.html"&gt;CERN&lt;/A&gt; (Conseil Européen pour la Recherche Nucléaire) &lt;A href="http://www.w3.org/People/Berners-Lee/" target=_blank mce_href="http://www.w3.org/People/Berners-Lee/"&gt;Tim Berners-Lee&lt;/A&gt; was working on a project based on the concept of hypertext to facilitate the sharing of research amongst his colleagues. In 1989 CERN was the biggest Internet node in Europe and Lee saw the potential that hypertext had if linked with the TCP/IP and DNS protocols. In 1989 he put forward a proposal for the creation of the ‘World Wide Web’ for which he built the first Web browser, editor and server. The first Web site was published on the 6th August 1991; it featured information about the Web and a list of other sites which was maintained by Lee. In 1993 CERN announced that the World Wide Web would be free to use and in the same year the graphical Web browser &lt;A href="ftp://ftp.ncsa.uiuc.edu/Mosaic" target=_blank mce_href="ftp://ftp.ncsa.uiuc.edu/Mosaic"&gt;Mosaic&lt;/A&gt; was released. Both of these things caused exponential growth of the Web and led to it becoming the most popular Internet protocol.&lt;/P&gt;
&lt;H4&gt;1993 to now; Developments in Web technology&lt;/H4&gt;
&lt;P&gt;When the Web was first created browsers did not support inline images, instead users would click a link to the image file which would then open in a new window. However in 1993 the Mosaic Web browser was released implementing inline image support and a much friendlier user interface. The release of Mosaic made the Web more consumer-friendly giving it mass appeal. As such Mosaic is often credited with the early growth of the Web. In fact the basic design of the browser has changed little in the last 15 years. &lt;BR&gt;&lt;BR&gt;In 1994 a new browser called &lt;A href="http://www.netscape.co.uk/netscape/" target=_blank mce_href="http://www.netscape.co.uk/netscape/"&gt;Netscape Navigator&lt;/A&gt; was released, this added some new features that the Mosaic browser didn’t have. The key thing that Netscape offered over Mozilla was its ability to display Web sites before all the content had downloaded. Where Mozilla would wait until all html and images had been downloaded (which could take some time over dial up connections) Netscape began rendering the content as soon as the connection was made. This gave Netscape the edge and led to it having over 70% share of the browser market by 1996. &lt;BR&gt;&lt;BR&gt;Through the 90’s many new features were developed including support for frames and JavaScript. &lt;A href="http://www.microsoft.com/" target=_blank mce_href="http://www.microsoft.com"&gt;Microsoft&lt;/A&gt; licensed the original Mosaic code and launched a rival browser; &lt;A href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx" target=_blank mce_href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx"&gt;Internet Explorer&lt;/A&gt;. Initially the two browsers battled it out for market share but as Web sites became more complex (utilising more JavaScript and graphics) and Internet Explorer matured Netscape’s share reduced dramatically. Today the two most popular browsers are Internet Explorer and Mozilla Firefox both supporting a similar set of features and enabling rich user experiences. &lt;BR&gt;&lt;BR&gt;As browsers have developed so have the platforms for Web development allowing authors to create content a world apart from the text only pages seen back in the early days of the Web. &lt;BR&gt;&lt;BR&gt;Initially JavaScript enabled some basic interaction with the user on the client-side by allowing manipulation of the DOM (Document Object Model) on the fly. This functionality was complemented with server-side scripting which allowed data to be retrieved and stored on the server allowing the customisation of web pages for individual users and reliable session persistence. Server side technology offered the huge benefit of browser independence as all code was executed on the server and simple html outputted to the client. The key server side technologies were &lt;A href="http://www.php.net/" target=_blank mce_href="http://www.php.net/"&gt;PHP&lt;/A&gt; (Personal Home Page) and ASP (Active Server Pages) both technologies can be implemented by writing the code in line with the HTML. ASP is now depreciated and has been replaced by &lt;A href="http://www.asp.net/" target=_blank mce_href="http://www.asp.net/"&gt;ASP.NET&lt;/A&gt; an object orientated server side technology based on &lt;A href="http://msdn2.microsoft.com/en-gb/netframework/default.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-gb/netframework/default.aspx"&gt;.NET&lt;/A&gt;. &lt;BR&gt;&lt;BR&gt;A common way to define the user experience provided by Web sites is to classify them as either Web 1.0 or Web 2.0. The above technologies alone tend to be used to create Web 1.0 experiences where users navigate largely static pages where data is submitted and updated with a page refresh. Web 2.0 refers to pages that implement the same technologies (along with XML) in a new way allowing pages to be updated dynamically without refreshes. The combined use of these technologies is knows as AJAX (Asynchronous JavaScript and XML). A technology called CSS (Custom Style Sheets) also allows the formatting and data of web pages to be separated allowing greater flexibility in design and manipulation. &lt;BR&gt;&lt;BR&gt;Two other technologies which allow greater levels of interaction as well as much improved graphical capability are &lt;A href="http://www.adobe.com/products/flashplayer/" target=_blank mce_href="http://www.adobe.com/products/flashplayer/"&gt;Adobe Flash&lt;/A&gt; and &lt;A href="http://www.silverlight.net/" target=_blank mce_href="http://www.silverlight.net"&gt;Microsoft Silverlight&lt;/A&gt;. Both technologies allow the creation of complex animation including video streaming whilst still allowing server side communication. &lt;BR&gt;&lt;BR&gt;Over the coming months I will help you begin Web development from setting up hosting and implementing server-side code right through to cutting edge user experiences using AJAX and ultimately Silverlight. &lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c28dc05b-2223-4fe6-bf51-9513018fa6b5 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Internet" rel=tag mce_href="http://technorati.com/tags/Internet"&gt;Internet&lt;/A&gt;,&lt;A href="http://technorati.com/tags/ASP.NET" rel=tag mce_href="http://technorati.com/tags/ASP.NET"&gt;ASP.NET&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Browsers" rel=tag mce_href="http://technorati.com/tags/Browsers"&gt;Browsers&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Web%20Development" rel=tag mce_href="http://technorati.com/tags/Web%20Development"&gt;Web Development&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Internet%20History" rel=tag mce_href="http://technorati.com/tags/Internet%20History"&gt;Internet History&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7623310" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category></item><item><title>UKStudentZine Article - Tech on Tour</title><link>http://blogs.msdn.com/edunhill/archive/2007/12/18/ukstudentzine-article-tech-on-tour.aspx</link><pubDate>Tue, 18 Dec 2007 14:10:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6795758</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/6795758.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=6795758</wfw:commentRss><description>&lt;p&gt;I recently wrote an article about the developments in technology since we have been running the Inspiration Tour with information about expected advancements in 2008. The UKStudentZine is a monthly newsletter for students published by Microsoft which includes articles about technology and our student programmes.&lt;/p&gt;  &lt;p&gt;You can view my article &lt;a href="http://blogs.msdn.com/ukstudentzine/archive/2007/12/17/inspiration-tour.aspx" target="_blank"&gt;here&lt;/a&gt; and sign up for the UKStudentZine &lt;a href="http://www.microsoft.com/uk/academia/students/student-newsletter/default.mspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c4bdd3e6-1b45-49c4-abd7-e6e8a48a0507" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Student%20Newsletter" rel="tag"&gt;Student Newsletter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Inspiration%20Tour" rel="tag"&gt;Inspiration Tour&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6795758" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Inspiration+Tour/default.aspx">Inspiration Tour</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category></item></channel></rss>