MSDN Magazine - November 2008 - (Page 25) Figure 4 LINQ to XML Querying Digg Data XDocument xml = XDocument.Parse(rawXml); var storiesQuery = from story in xml.Descendants("story") select new DiggStory { Id = (int)story.Attribute("id"), Title = ((string)story.Element("title")).Trim(), Description = ((string)story.Element("description")).Trim(), ThumbNail = (story.Element("thumbnail") == null ? string.Empty : story.Element("thumbnail").Attribute("src").Value), Link = new Uri((string)story.Attribute("link")), DiggCount = (int)story.Attribute("diggs") }; Figure 5 Digg XML Response Microsoft has released SQL Server 2005 recently as an upgrade to the popular SQL Server database. Microsoft releases SQL Server 2005 Microsoft's virtual receptionist Microsoft's virtual receptionist Client class or the HttpWebRequest. Making calls through WebClient is simpler, but HttpWebRequest offers more control over how the requests are made. Also, WebClient returns on the UI thread while HttWebRequest returns on the background thread. HttpWebRequest’s callback must use the Dispatcher to interact with the UI. The following code shows the System.Net.WebClient retrieving recent stories from the Digg service: string baseUri = "http://services.digg.com/stories/topic"; string topic = txtTopic.Text; string appKey = "http%3A%2F%2Fwww.microsoft.com"; int count = int.Parse(txtTopicCount.Text); string url = String.Format("{0}/{1}?appkey={2}&count={3}", baseUri, topic, appKey, count); WebClient svc = new WebClient(); svc.DownloadStringAsync(new Uri(url)); Here the data is returned from the WebClient call as raw XML which can then be parsed or queried. If the REST service has parameters, they can be passed as part of the querystring. When a REST-based or POX service is invoked, it can return data as XML (REST services can also return data as JSON). The XML can then be parsed using a number of XML parsing libraries. However, the XML can also be queried using LINQ to XML, which offers a rich query interface to extract data from XML structures without having to resort to iterating through complex XML hierarchies. The REST service in the example you just saw returns raw XML from the Digg service that shows the most recent stories. This XML can then be parsed using an XML library or it can be queried using LINQ to XML, as shown in Figure 4. The XDocument class’s Parse method can consume the XML from the REST service shown earlier. The XML can then be queried using LINQ to XML. The code shown in Figure 4 demonstrates the LINQ to XML syntax for querying the XML shown in Figure 5. The query starts in the stories/story hierarchy and queries all of the story elements. There is no namespace specified for this XML; however, I left the namespace variable (ns) in place to show how to prefix all XML paths in case the results do refer to a namespace. Driving story elements is accomplished using the XDocument instance’s Descendants method. The story element’s properties can then be retrieved using the story variable and its Element method. For example, the following line of code grabs the value of the title element from the story element and sets it into a property named Title: Title = ((string)story.Element("title")).Trim() How do I query XML? The LINQ to XML query can return the results through a projection or into a class structure. The code shown in Figure 4 creates a DiggStory class to store the results of each status element retrieved from the XML data. The DiggStory class that the developer has defined, where all of the properties (for simplicity) have been defined as string. LINQ to XML could include other aspects such as ordering or filtering criteria, too, if needed. Using LINQ to XML to query and parse XML data from REST or POX services allows developers to leverage their existing knowledge of other LINQ forms since the syntax is very similar across them all. Perhaps the biggest benefit of using LINQ to XML to parse the data is the power and simplicity of querying the data without having to resort to iterating through elements in nested foreach loops. Do I need to worry about cross-domain policies when I’m accessing third-party Web services? When a Silverlight 2 application makes a Web service call, the call is precluded by a check on the Web service’s server for a cross-domain policy file. This check is done when the Silverlight application Silverlight 2 Application Hosted on microsoft.com Silverlight 2 Application Hosted on johnpapa.net Request Allowed D e n ie d Request microsoft.com johnpapa.net Request Allowed Figure 6 Cross-Domain Checking November 2008 25 msdnmagazine.com http://www.msdnmagazine.com
Table of Contents Feed for the Digital Edition of MSDN Magazine - November 2008 Contents MSDN Magazine - November 2008 Toolbox CLR Inside Out Data Points Cutting Edge Security Briefs Test Your Security IQ Agile SDL Access Control Utility Spotlight RIA Test Run Wicked Code Foundations Team System End Bracket MSDN Magazine - November 2008 MSDN Magazine - November 2008 - (Page Intro) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page Cover1) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page Cover2) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 1) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 2) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 3) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 4) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 5) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 6) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 7) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 8) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 9) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 10) MSDN Magazine - November 2008 - Toolbox (Page 11) MSDN Magazine - November 2008 - Toolbox (Page 12) MSDN Magazine - November 2008 - Toolbox (Page 13) MSDN Magazine - November 2008 - Toolbox (Page 14) MSDN Magazine - November 2008 - Toolbox (Page 15) MSDN Magazine - November 2008 - Toolbox (Page 16) MSDN Magazine - November 2008 - CLR Inside Out (Page 17) MSDN Magazine - November 2008 - CLR Inside Out (Page 18) MSDN Magazine - November 2008 - CLR Inside Out (Page 19) MSDN Magazine - November 2008 - CLR Inside Out (Page 20) MSDN Magazine - November 2008 - CLR Inside Out (Page 21) MSDN Magazine - November 2008 - CLR Inside Out (Page 22) MSDN Magazine - November 2008 - Data Points (Page 23) MSDN Magazine - November 2008 - Data Points (Page 24) MSDN Magazine - November 2008 - Data Points (Page 25) MSDN Magazine - November 2008 - Data Points (Page 26) MSDN Magazine - November 2008 - Data Points (Page 27) MSDN Magazine - November 2008 - Data Points (Page 28) MSDN Magazine - November 2008 - Data Points (Page 29) MSDN Magazine - November 2008 - Data Points (Page 30) MSDN Magazine - November 2008 - Cutting Edge (Page 31) MSDN Magazine - November 2008 - Cutting Edge (Page 32) MSDN Magazine - November 2008 - Cutting Edge (Page 33) MSDN Magazine - November 2008 - Cutting Edge (Page 34) MSDN Magazine - November 2008 - Cutting Edge (Page 35) MSDN Magazine - November 2008 - Cutting Edge (Page 36) MSDN Magazine - November 2008 - Cutting Edge (Page 37) MSDN Magazine - November 2008 - Cutting Edge (Page 38) MSDN Magazine - November 2008 - Cutting Edge (Page 39) MSDN Magazine - November 2008 - Cutting Edge (Page 40) MSDN Magazine - November 2008 - Security Briefs (Page 41) MSDN Magazine - November 2008 - Security Briefs (Page 42) MSDN Magazine - November 2008 - Security Briefs (Page 43) MSDN Magazine - November 2008 - Security Briefs (Page 44) MSDN Magazine - November 2008 - Security Briefs (Page 45) MSDN Magazine - November 2008 - Test Your Security IQ (Page 46) MSDN Magazine - November 2008 - Test Your Security IQ (Page 47) MSDN Magazine - November 2008 - Test Your Security IQ (Page 48) MSDN Magazine - November 2008 - Test Your Security IQ (Page 49) MSDN Magazine - November 2008 - Test Your Security IQ (Page 50) MSDN Magazine - November 2008 - Test Your Security IQ (Page 51) MSDN Magazine - November 2008 - Agile SDL (Page 52) MSDN Magazine - November 2008 - Agile SDL (Page 53) MSDN Magazine - November 2008 - Agile SDL (Page 54) MSDN Magazine - November 2008 - Agile SDL (Page 55) MSDN Magazine - November 2008 - Agile SDL (Page 56) MSDN Magazine - November 2008 - Agile SDL (Page 57) MSDN Magazine - November 2008 - Agile SDL (Page 58) MSDN Magazine - November 2008 - Access Control (Page 59) MSDN Magazine - November 2008 - Access Control (Page 60) MSDN Magazine - November 2008 - Access Control (Page 61) MSDN Magazine - November 2008 - Access Control (Page 62) MSDN Magazine - November 2008 - Access Control (Page 63) MSDN Magazine - November 2008 - Access Control (Page 64) MSDN Magazine - November 2008 - Access Control (Page 65) MSDN Magazine - November 2008 - Access Control (Page 66) MSDN Magazine - November 2008 - Access Control (Page 67) MSDN Magazine - November 2008 - Access Control (Page 68) MSDN Magazine - November 2008 - Access Control (Page 69) MSDN Magazine - November 2008 - Access Control (Page 70) MSDN Magazine - November 2008 - Access Control (Page 71) MSDN Magazine - November 2008 - Utility Spotlight (Page 72) MSDN Magazine - November 2008 - Utility Spotlight (Page 73) MSDN Magazine - November 2008 - Utility Spotlight (Page 74) MSDN Magazine - November 2008 - Utility Spotlight (Page 75) MSDN Magazine - November 2008 - Utility Spotlight (Page 76) MSDN Magazine - November 2008 - Utility Spotlight (Page 77) MSDN Magazine - November 2008 - Utility Spotlight (Page 78) MSDN Magazine - November 2008 - Utility Spotlight (Page 79) MSDN Magazine - November 2008 - Utility Spotlight (Page 80) MSDN Magazine - November 2008 - RIA (Page 81) MSDN Magazine - November 2008 - RIA (Page 82) MSDN Magazine - November 2008 - RIA (Page 83) MSDN Magazine - November 2008 - RIA (Page 84) MSDN Magazine - November 2008 - RIA (Page 85) MSDN Magazine - November 2008 - RIA (Page 86) MSDN Magazine - November 2008 - RIA (Page 87) MSDN Magazine - November 2008 - RIA (Page 88) MSDN Magazine - November 2008 - RIA (Page 89) MSDN Magazine - November 2008 - RIA (Page 90) MSDN Magazine - November 2008 - Test Run (Page 91) MSDN Magazine - November 2008 - Test Run (Page 92) MSDN Magazine - November 2008 - Test Run (Page 93) MSDN Magazine - November 2008 - Test Run (Page 94) MSDN Magazine - November 2008 - Test Run (Page 95) MSDN Magazine - November 2008 - Test Run (Page 96) MSDN Magazine - November 2008 - Test Run (Page 97) MSDN Magazine - November 2008 - Test Run (Page 98) MSDN Magazine - November 2008 - Wicked Code (Page 99) MSDN Magazine - November 2008 - Wicked Code (Page 100) MSDN Magazine - November 2008 - Wicked Code (Page 101) MSDN Magazine - November 2008 - Wicked Code (Page 102) MSDN Magazine - November 2008 - Wicked Code (Page 103) MSDN Magazine - November 2008 - Wicked Code (Page 104) MSDN Magazine - November 2008 - Wicked Code (Page 105) MSDN Magazine - November 2008 - Wicked Code (Page 106) MSDN Magazine - November 2008 - Foundations (Page 107) MSDN Magazine - November 2008 - Foundations (Page 108) MSDN Magazine - November 2008 - Foundations (Page 109) MSDN Magazine - November 2008 - Foundations (Page 110) MSDN Magazine - November 2008 - Foundations (Page 111) MSDN Magazine - November 2008 - Foundations (Page 112) MSDN Magazine - November 2008 - Team System (Page 113) MSDN Magazine - November 2008 - Team System (Page 114) MSDN Magazine - November 2008 - Team System (Page 115) MSDN Magazine - November 2008 - Team System (Page 116) MSDN Magazine - November 2008 - Team System (Page 117) MSDN Magazine - November 2008 - Team System (Page 118) MSDN Magazine - November 2008 - Team System (Page 119) MSDN Magazine - November 2008 - End Bracket (Page 120) MSDN Magazine - November 2008 - End Bracket (Page Cover3) MSDN Magazine - November 2008 - End Bracket (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.