<?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>Jeff's thoughts on Software Architecture, Large Scale Services and the Technical world at large : Services</title><link>http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx</link><description>Tags: Services</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SQL Azure talks are now available online</title><link>http://blogs.msdn.com/jcurrier/archive/2009/11/21/sql-azure-talks-are-now-available-online.aspx</link><pubDate>Sat, 21 Nov 2009 20:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9926813</guid><dc:creator>jcurrier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9926813.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9926813</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9926813</wfw:comment><description>&lt;P&gt;Hey all,&lt;/P&gt;
&lt;P&gt;My, "SQL Azure: Under the hood" talk is available for viewing now &lt;A title=here href="http://microsoftpdc.com/Sessions/SVC12" mce_href="http://microsoftpdc.com/Sessions/SVC12"&gt;here&lt;/A&gt;.&amp;nbsp; During the talk, I referred to GopalK's earlier under the hood talk in mine so I've attached a link to this &lt;A title=here href="http://channel9.msdn.com/pdc2008/BB03/" mce_href="http://channel9.msdn.com/pdc2008/BB03/"&gt;here&lt;/A&gt; for those that are interested.&lt;/P&gt;
&lt;P&gt;You can also find some of the other talks for SQL Azure here as well:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://microsoftpdc.com/Sessions/P09-08" mce_href="http://microsoftpdc.com/Sessions/P09-08"&gt;Development Best Practices and Patterns for Using Microsoft SQL Azure&amp;nbsp;Databases&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://microsoftpdc.com/Sessions/SVC52"&gt;SQL Azure Database: Present and&amp;nbsp;Future&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://microsoftpdc.com/Sessions/SVC06"&gt;Scaling out Web Applications with Microsoft SQL Azure&amp;nbsp;Databases&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://microsoftpdc.com/Sessions/SVC27" alt=""&gt;The Future of Database Development with SQL Azure&lt;/A&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Hope you find them interesting&lt;/P&gt;
&lt;P&gt;--Jeff--&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9926813" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/PDC/default.aspx">PDC</category></item><item><title>SQL Azure PDC talks</title><link>http://blogs.msdn.com/jcurrier/archive/2009/09/30/sql-azure-pdc-talks.aspx</link><pubDate>Wed, 30 Sep 2009 07:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9901137</guid><dc:creator>jcurrier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9901137.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9901137</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9901137</wfw:comment><description>&lt;P&gt;So, a number of us are doing talks this year for PDC (&lt;A href="http://microsoftpdc.com/Sessions/SVC12" mce_href="http://microsoftpdc.com/Sessions/SVC12"&gt;myself included&lt;/A&gt;!).&amp;nbsp; You can find the full list &lt;A href="http://microsoftpdc.com/Sessions/Tags/SQLAzure" mce_href="http://microsoftpdc.com/Sessions/Tags/SQLAzure"&gt;here&lt;/A&gt;.&amp;nbsp; So, if you're going to be in LA for PDC this be sure to check out the sessions.&amp;nbsp; Having seen, and helped author, the content I know you'll enjoy it!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--Jeff--&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901137" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/PDC/default.aspx">PDC</category></item><item><title>SQL Azure: Invite codes, traffic patterns and feedback.</title><link>http://blogs.msdn.com/jcurrier/archive/2009/08/21/sql-azure-invite-codes-traffic-patterns-and-feedback.aspx</link><pubDate>Sat, 22 Aug 2009 06:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9879790</guid><dc:creator>jcurrier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9879790.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9879790</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9879790</wfw:comment><description>&lt;P&gt;We've sent out the first couple batches of invite codes this week for SQL Azure (apologies if you haven't yet received yours).&amp;nbsp; It's important to keep in mind that in general services tend to do this&amp;nbsp;kind of thing&amp;nbsp;for good reason.&amp;nbsp; So, what are the reasons? There are many but these are the two that I look at the most:&lt;/P&gt;
&lt;P&gt;1) Traffic patterns - How are the newly on-boarded people using the service.&amp;nbsp; Are they using it in the manner that we thought they would or are they doing things we totally didn't expect.&amp;nbsp; Is there some constraint that we hadn't previously observed in our own in-house load/stress testing?&amp;nbsp; Thus far, this hasn't been the case for us :-)&lt;/P&gt;
&lt;P&gt;2) Load - The second thing we're trying to understand how many people that we send invite codes to are actually using the service (thereby increasing the load on the system).&amp;nbsp;&amp;nbsp;People consume resources in the system which, ultimately, there is a finite amount of.&amp;nbsp; Therefore, this needs to be monitored carefully.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So far, we're looking good in these departments but my bet, if folks are like me, that we will see an increase in both of these things this weekend as people get more play time with the service.&lt;/P&gt;
&lt;P&gt;Now, for those of you presently using the service.&amp;nbsp; The team would love to hear any feedback that you have on the primary service as well as the Portal experiences.&amp;nbsp; If you like you can comment here or better yet on the &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/2957ea62-a650-4f43-b92f-920ce5a8383c" mce_href="http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/2957ea62-a650-4f43-b92f-920ce5a8383c"&gt;forums&lt;/A&gt;.&amp;nbsp; All feedback is appreciated and important for us as we figure out where we need to improve things in the service.&amp;nbsp; So, if you have 1 big grip (or several) please do drop a message.&amp;nbsp; It will be looked at.&lt;/P&gt;
&lt;P&gt;Finally, for those of you who haven't yet received a code.&amp;nbsp; Please hang in there.&amp;nbsp; We are picking up the pace that we're sending these things out.&amp;nbsp; I know it's tough to wait (trust me) but we're getting out as fast as we can.&lt;/P&gt;
&lt;P&gt;--Jeff--&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9879790" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Azure/default.aspx">SQL Azure</category></item><item><title>SDS coding examples – Part 1 (C# &amp; ADO.NET)</title><link>http://blogs.msdn.com/jcurrier/archive/2009/03/29/sds-coding-examples-part-1-c-ado-net.aspx</link><pubDate>Sun, 29 Mar 2009 23:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9517463</guid><dc:creator>jcurrier</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9517463.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9517463</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9517463</wfw:comment><description>&lt;P&gt;&lt;FONT size=2&gt;So, as I did with the original SDS I want to outline some code examples that other developers can use to get a sense of how to interact with the service.&amp;nbsp; In general, this will be much easier now that we have shifted more to the relational model as some of the more abstract (okay maybe not sooo abstract) concepts don’t necessarily need to be explained from scratch.&amp;nbsp; Having said that, there are a few concepts that are worth covering before we dive into the code.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size=3&gt;Servers, and Masters, and User Databases,&amp;nbsp; oh my!&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;&lt;FONT size=2&gt;There are really two different types of databases that we have present in SDS now.&amp;nbsp; The first, and the one that you’ll generally interact with the most, is the user database.&amp;nbsp; This is really where your user data resides.&amp;nbsp; You’re in charge in this space.&amp;nbsp; You define the tables, schemas and what have you that appear in this database.&amp;nbsp; We may insert some data into locked down tables (and present them to you with views) here to help assist you with debugging and provide some metrics data but by in large this is your house.&amp;nbsp; NOTE: The name you choose here for your user database (“mydatabase” in the example below) is the name of the database you specify in the connection string.&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;connStringBuilder.InitialCatalog = "&lt;SPAN style="COLOR: #8b0000"&gt;mydatabase&lt;/SPAN&gt;"; &lt;SPAN style="COLOR: #008000"&gt;// Specify your user database to connect to. &lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size=2&gt;The second type of database is really what we refer to as the logical master database (or server database) but it actually encapsulates two different things.&amp;nbsp; The first thing is that the server represents a logical master database.&amp;nbsp; This is the database where we keep track of all of the user databases that you have on this logical server. It’s important to note that this is *not* a real server and is more logical in nature.&amp;nbsp; We will also store things your metrics here as well as login information NOTE: Because we store login information here this is why you have specify your server name in the user id as certain elements don’t come across in the initial TDS packets we receive.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The second important thing to note about the server database is that is associated (along with each of the user databases managed by it) with a particular geo-location.&amp;nbsp; You will pick the geo-location when you go through the provisioning process and requests will be routed to your servers by taking advantage of the DNS system as once done previously.&amp;nbsp; The code snippet below illustrates how the server presents itself in the connection string.&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;connStringBuilder.DataSource = "&lt;SPAN style="COLOR: #8b0000"&gt;myserver.data.dev.mscds.com&lt;/SPAN&gt;"; &lt;SPAN style="COLOR: #008000"&gt;// Specify the DNS name of my SDS server (which holds my master db).&lt;/SPAN&gt;
connStringBuilder.UserID = "&lt;SPAN style="COLOR: #8b0000"&gt;jeff@myserver&lt;/SPAN&gt;";                   &lt;SPAN style="COLOR: #008000"&gt;// Specify my user id (and the server name which holds my master db)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;H5&gt;&lt;FONT size=3&gt;On to the code&lt;/FONT&gt;&lt;/H5&gt;
&lt;P&gt;&lt;FONT size=2&gt;So now with no further delay is some sample code.&amp;nbsp; It’s simple (on purpose) but it illustrates the types of operations that you’ll be able to do (DDL &amp;amp; DML).&amp;nbsp; In this example, I simply create a table, insert some rows, select some rows from that table, and finally drop the table in the end.&amp;nbsp; Here you go!&amp;nbsp; If you have other questions around the code please feel free to comment and I’ll try to reply as soon as I can.&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;        &lt;FONT size=2&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;[] args)
        {
            &lt;SPAN style="COLOR: #008000"&gt;// Begin, by constructing the connection string using the SqlConnectionStringBuilder class for&lt;/SPAN&gt;
            &lt;SPAN style="COLOR: #008000"&gt;// simplicity.  I could just use String.Format but this makes it a bit easier to explain what&lt;/SPAN&gt;
            &lt;SPAN style="COLOR: #008000"&gt;// we're doing with each parameter.&lt;/SPAN&gt;

            SqlConnectionStringBuilder connStringBuilder = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; SqlConnectionStringBuilder();
            connStringBuilder.DataSource = "&lt;SPAN style="COLOR: #8b0000"&gt;myserver.data.dev.mscds.com&lt;/SPAN&gt;"; &lt;SPAN style="COLOR: #008000"&gt;// Specify the DNS name of my SDS server (which holds my master db).&lt;/SPAN&gt;
            connStringBuilder.InitialCatalog = "&lt;SPAN style="COLOR: #8b0000"&gt;mydatabase&lt;/SPAN&gt;";              &lt;SPAN style="COLOR: #008000"&gt;// Specify your user database to connect to.&lt;/SPAN&gt;
            connStringBuilder.Encrypt = &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;;                             &lt;SPAN style="COLOR: #008000"&gt;// Specify that I would like the channel to be encrypted.&lt;/SPAN&gt;
            connStringBuilder.UserID = "&lt;SPAN style="COLOR: #8b0000"&gt;jeff@myserver&lt;/SPAN&gt;";                   &lt;SPAN style="COLOR: #008000"&gt;// Specify my user id (and the server name which holds my master db)&lt;/SPAN&gt;
            connStringBuilder.Password = "&lt;SPAN style="COLOR: #8b0000"&gt;****&lt;/SPAN&gt;";                          &lt;SPAN style="COLOR: #008000"&gt;// Finally, specify my password.&lt;/SPAN&gt;

            &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; createTableSql =
                @"&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #8b0000"&gt;CREATE TABLE [dbo].[tbl_Person]
                (
                     [FirstName] NVARCHAR(64) NOT NULL,
	             [LastName] NVARCHAR(64) NOT NULL
                    CONSTRAINT [personName_PK] PRIMARY KEY CLUSTERED
                    (
                        [FirstName] ASC,
                        [LastName] ASC
                    )
                )&lt;/SPAN&gt;";

            &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; insertSql =
                @"&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #8b0000"&gt;INSERT INTO dbo.tbl_Person(FirstName, LastName) VALUES ('Jeff', 'Currier');
                  INSERT INTO dbo.tbl_Person(FirstName, LastName) VALUES ('Nigel', 'Ellis');
                  INSERT INTO dbo.tbl_Person(FirstName, LastName) VALUES ('David', 'Robinson');
                  INSERT INTO dbo.tbl_Person(FirstName, LastName) VALUES ('Jeff', 'Smith');&lt;/SPAN&gt;";
            &lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;
            {
                &lt;SPAN style="COLOR: #008000"&gt;// New up a connection to my previously provisioned user database just as I would to any other database.&lt;/SPAN&gt;
                &lt;SPAN style="COLOR: #008000"&gt;// and then open it.&lt;/SPAN&gt;
                &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (SqlConnection conn = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; SqlConnection(connStringBuilder.ToString()))
                {
                    conn.Open();

                    &lt;SPAN style="COLOR: #008000"&gt;// Construct a new SqlCommand object that we'll use to execute execute our Sql code.&lt;/SPAN&gt;
                    &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (SqlCommand cmd = conn.CreateCommand())
                    {
                        &lt;SPAN style="COLOR: #008000"&gt;// Use the above defined SQL to create a simple table that we'll to construct a table for this&lt;/SPAN&gt;
                        &lt;SPAN style="COLOR: #008000"&gt;// example&lt;/SPAN&gt;
                        cmd.CommandText = createTableSql;
                        cmd.CommandType = CommandType.Text;
                        cmd.ExecuteNonQuery();

                        &lt;SPAN style="COLOR: #008000"&gt;// Insert some simple data into that table.&lt;/SPAN&gt;
                        cmd.CommandText = insertSql;
                        cmd.CommandType = CommandType.Text;
                        cmd.ExecuteNonQuery();

                        &lt;SPAN style="COLOR: #008000"&gt;// Next, perform a simple select finding all of the persons in the table whose first name is Jeff.&lt;/SPAN&gt;
                        cmd.CommandText = "&lt;SPAN style="COLOR: #8b0000"&gt;select FirstName, LastName from dbo.tbl_Person where FirstName = 'Jeff'&lt;/SPAN&gt;";
                        cmd.CommandType = CommandType.Text;
                        &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            &lt;SPAN style="COLOR: #0000ff"&gt;while&lt;/SPAN&gt; (reader.Read())
                            {
                                Console.WriteLine("&lt;SPAN style="COLOR: #8b0000"&gt;First Name: {0} LastName: {1}&lt;/SPAN&gt;", reader["&lt;SPAN style="COLOR: #8b0000"&gt;FirstName&lt;/SPAN&gt;"],
                                                  reader["&lt;SPAN style="COLOR: #8b0000"&gt;LastName&lt;/SPAN&gt;"]);
                            }

                            reader.Close();
                        }

                        &lt;SPAN style="COLOR: #008000"&gt;// Finally, drop the table since we no longer need it.&lt;/SPAN&gt;
                        cmd.CommandText = "&lt;SPAN style="COLOR: #8b0000"&gt;Drop table dbo.tbl_Person&lt;/SPAN&gt;";
                        cmd.CommandType = CommandType.Text;
                        cmd.ExecuteNonQuery();
                    }

                    conn.Close();
                }
            }
            &lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt; (SqlException ex)
            {
                Console.WriteLine(ex);
            }
        }&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size=2&gt;Now, this example was in C# and used SqlClient (ADO.NET) but my next example will use Java &amp;amp; JDBC.&amp;nbsp; If there are other languages (toolkits) you would like to see us illustrate please comment here or on the main SDS blog and we’ll try to get them out as soon as we can.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Enjoy!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;--Jeff--&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9517463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Data+Services/default.aspx">SQL Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SDS/default.aspx">SDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Check out Nigel's Talk on SDS from MIX09</title><link>http://blogs.msdn.com/jcurrier/archive/2009/03/22/check-out-nigel-s-talk-on-sds-from-mix09.aspx</link><pubDate>Mon, 23 Mar 2009 05:09:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9500354</guid><dc:creator>jcurrier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9500354.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9500354</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9500354</wfw:comment><description>&lt;p&gt;Looks like the MIX folks have posted up Nigel's talk on the newly revamped SDS from MIX.&amp;nbsp; You can watch it now &lt;a href="http://videos.visitmix.com/MIX09/T06F"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9500354" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SDS/default.aspx">SDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/MIX/default.aspx">MIX</category></item><item><title>It’s been awhile…</title><link>http://blogs.msdn.com/jcurrier/archive/2009/03/14/it-s-been-awhile.aspx</link><pubDate>Sat, 14 Mar 2009 23:51:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9476778</guid><dc:creator>jcurrier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9476778.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9476778</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9476778</wfw:comment><description>&lt;p&gt;So, it’s been quite awhile since I’ve posted but with the recent SDS &lt;a href="http://blogs.msdn.com/ssds/archive/2009/03/10/9469228.aspx"&gt;announcement&lt;/a&gt; I trust you now know why that is.&amp;#160; While I’ll be posting some code samples shortly for accessing the new SDS service via ADO.NET as well as with Java I’d like to give a plug for Nigel’s upcoming MIX09 &lt;a href="https://content.visitmix.com/2009/speakers/default.aspx?speaker=Nigel+Ellis"&gt;talk&lt;/a&gt; on SDS.&amp;#160; &lt;/p&gt;  &lt;p&gt;I don’t want to steal any thunder from the talk next week so I’m going to hold off on talking much more about the service until after Nigel’s talk is completed.&amp;#160; Keep posted though as you will see more details coming out from the team post MIX.&lt;/p&gt;  &lt;p&gt;Finally, I’ve seen quite a bit of traffic in the blog community recently with concern that our new model doesn’t scale.&amp;#160; I’ll just say this, we are all familiar with CAP conjecture, we do know what it takes to scale a relational store.&amp;#160; We’ve done this once (with the initial version of Sitka which was built on the same technology) we will do it again.&amp;#160; The larger question is getting the right application patterns in place so apps perform well on the system.&amp;#160; That’s it for now but stay tuned.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9476778" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Data+Services/default.aspx">SQL Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SDS/default.aspx">SDS</category></item><item><title>SDS Channel 9 Video is up</title><link>http://blogs.msdn.com/jcurrier/archive/2008/10/27/sds-channel-9-video-is-up.aspx</link><pubDate>Tue, 28 Oct 2008 06:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9019635</guid><dc:creator>jcurrier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/9019635.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=9019635</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=9019635</wfw:comment><description>&lt;P&gt;A little while ago Jason and I recorded a Channel 9 video to discuss some of the newer features in SDS (SQL Data Services).&amp;nbsp; Now that all the Azure components have been announced this is now available up at the Channel 9 site.&amp;nbsp; You can view it &lt;A href="http://channel9.msdn.com/posts/dunnry/Whats-new-in-SQL-Data-Services-for-Developers/" mce_href="http://channel9.msdn.com/posts/dunnry/Whats-new-in-SQL-Data-Services-for-Developers/"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9019635" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Server+Data+Services/default.aspx">SQL Server Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Data+Services/default.aspx">SQL Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SDS/default.aspx">SDS</category></item><item><title>Good overview of using threads for multi container query in SSDS</title><link>http://blogs.msdn.com/jcurrier/archive/2008/04/14/good-overview-of-using-threads-for-multi-container-query-in-ssds.aspx</link><pubDate>Tue, 15 Apr 2008 06:30:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8396281</guid><dc:creator>jcurrier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/8396281.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=8396281</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=8396281</wfw:comment><description>&lt;p&gt;Eugenio has a good blog &lt;a href="http://blogs.msdn.com/eugeniop/archive/2008/04/14/litwarehr-on-ssds-part-v-searching-across-containers.aspx?CommentPosted=true#commentmessage"&gt;entry&lt;/a&gt; today describing using multiple threads to execute multi-container query.&amp;nbsp; Well worth the read.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8396281" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SSDS/default.aspx">SSDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Server+Data+Services/default.aspx">SQL Server Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Query/default.aspx">Query</category></item><item><title>Interested in partaking in a design review for SQL Server Data Services?</title><link>http://blogs.msdn.com/jcurrier/archive/2008/04/13/interested-in-partaking-in-a-design-review-for-sql-server-data-services.aspx</link><pubDate>Sun, 13 Apr 2008 09:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8386354</guid><dc:creator>jcurrier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/8386354.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=8386354</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=8386354</wfw:comment><description>&lt;P&gt;Are you interested in taking part in a design review of SQL Server Data Services?&amp;nbsp; Are you located in Silicon Valley?&amp;nbsp; If you answered yes to both of these questions then you're going to want check out Ryan's blog &lt;A class="" href="http://dunnry.com/blog/InterestedInSQLServerDataServices.aspx" mce_href="http://dunnry.com/blog/InterestedInSQLServerDataServices.aspx"&gt;here&lt;/A&gt; to find out details for attending.&amp;nbsp; Space is limited so act fast!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;--Jeff--&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8386354" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SSDS/default.aspx">SSDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Server+Data+Services/default.aspx">SQL Server Data Services</category></item><item><title>cURL'ing up with SQL Server Data Services</title><link>http://blogs.msdn.com/jcurrier/archive/2008/04/13/curl-ing-up-with-sql-server-data-services.aspx</link><pubDate>Sun, 13 Apr 2008 09:47:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8386349</guid><dc:creator>jcurrier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/8386349.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=8386349</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=8386349</wfw:comment><description>&lt;p&gt;We've begun working with some external customers (and a considerable number of internal ones) on the project and one of the first requests that came up was regarding the use of cURL.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://curl.haxx.se/"&gt;cURL&lt;/a&gt;, as many of you already know, is a pretty cool command line utility which can be used to issue HTTP requests.&amp;nbsp; However we haven't, until this point, documented exactly how you can use the service from cURL.&amp;nbsp; This post will address that.&lt;/p&gt; &lt;h3&gt;Enumerating your Authority&lt;/h3&gt; &lt;p&gt;In this example I'll illustrate how you can query an authority for all of the containers that are located within it.&amp;nbsp; Before we get to this however I'll explain a bit more about how cURL functions.&amp;nbsp; &lt;/p&gt; &lt;p&gt;cURL uses various command line parameters to construct the HTTP request on your behalf.&amp;nbsp; As you might guess the -X parameter is used to specify the verb (HTTP method) that you wish to use on the request.&amp;nbsp; The -u parameter is used to specify the credentials to use and finally the last parameter is the URL you want to use.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Command line syntax to query the authority:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;curl -X GET -u "&amp;lt;userid&amp;gt;:&amp;lt;password&amp;gt;" &lt;a href="http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/?q=''"&gt;http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/?q=''&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Output&lt;/em&gt;&lt;/strong&gt;  &lt;p&gt;&amp;lt;s:EntitySet xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSc"&gt;http://www.w3.org/2001/XMLSc&lt;/a&gt;&lt;br&gt;hema-instance" xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;s:Container&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;testcontainer&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;1&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/s:Container&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;s:Container&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;testcontainer2&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;1&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/s:Container&amp;gt;&lt;br&gt;&amp;lt;/s:EntitySet&amp;gt;  &lt;h3&gt;Creating Containers and Entities&lt;/h3&gt; &lt;p&gt;As I've mentioned previously &lt;a href="http://blogs.msdn.com/jcurrier/archive/2008/03/17/some-sql-server-data-services-coding-examples.aspx"&gt;here&lt;/a&gt; we use the POST verb to create entities within SSDS.&amp;nbsp; Now, because specifying the entire payload for a POST could be cumbersome cURL allows you to specify the filename where the payload can be found.&amp;nbsp; This done use the, "--data" parameter and the, "@" symbol.&lt;/p&gt; &lt;p&gt;We'll begin with creating a container with cURL.&amp;nbsp; We'll start by creating a simple file called, "CurlContainer" containing the following XML payload:&lt;/p&gt; &lt;p&gt;&amp;lt;s:Container xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt;&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;CurlContainer&amp;lt;/s:Id&amp;gt; &lt;br&gt;&amp;lt;/s:Container&amp;gt;  &lt;p&gt;Now that this is complete we can construct the command line syntax that we'll need to send the request to the service.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Command line syntax to create the container:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;curl -X POST --data @CurlContainer -H "Content-Type: application/xml"&amp;nbsp; -u "&amp;lt;userid&amp;gt;:&amp;lt;password&amp;gt;" &lt;a href="http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/"&gt;http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;A couple of things that you might notice here that are different from our prior syntax.&amp;nbsp; The first is that the verb has changed (that's pretty obvious).&amp;nbsp; The second item is that we've used the, "--data" parameter to specify the payload.&amp;nbsp; We didn't need to use that before since we were only querying the service.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Finally, and perhaps most importantly, is that we specify the content type of data in the request.&amp;nbsp; This is done using the, "-H" parameter along with the header data.&amp;nbsp; &lt;u&gt;If this isn't specified then the request will be denied with a 400 so do remember to use it&lt;/u&gt;.&lt;/p&gt; &lt;p&gt;Now, when we query the authority as we did earlier I get the following output returned to me.&lt;/p&gt; &lt;p&gt;&amp;lt;s:EntitySet xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;" xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp; &amp;lt;s:Container&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;CurlContainer&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;1&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/s:Container&amp;gt;&lt;/strong&gt;&lt;br&gt;&amp;nbsp; &amp;lt;s:Container&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;testcontainer&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;1&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/s:Container&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;s:Container&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;testcontainer2&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;1&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/s:Container&amp;gt;&lt;br&gt;&amp;lt;/s:EntitySet&amp;gt;  &lt;p&gt;Switching to entity creation we find that not a lot has changed.&amp;nbsp; The only meaningful difference is the URL that we provide and the payload content.&amp;nbsp; Following the steps just described I can create a new entity, "CurlEntity" within the CurlContainer I just created.&amp;nbsp; Listed below is the payload I've created as well as the syntax used to create the entity.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Payload &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;CurlEntity xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:x=&amp;quot;http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema-instance" xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;"&lt;/a&gt;&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;CurlEntity&amp;lt;/s:Id&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name xsi:type="x:string"&amp;gt;Jeff Currier&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;lt;/CurlEntity&amp;gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Command line syntax to create the entity:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;curl -X POST -H "Content-Type: application/xml" --data @CurlEntity.xml -u "&amp;lt;userid&amp;gt;:&amp;lt;password&amp;gt;" &lt;a href="http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer"&gt;http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Finally, let's just query the container to see my new data.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Command line syntax to query the container:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;curl -G -u "&amp;lt;userid&amp;gt;:&amp;lt;password&amp;gt;" &lt;a href="http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer?q=''"&gt;http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer?q=''&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Output&lt;/em&gt;&lt;/strong&gt;  &lt;p&gt;&amp;lt;s:EntitySet xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSc"&gt;http://www.w3.org/2001/XMLSc&lt;/a&gt;&lt;br&gt;hema-instance" xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;CurlEntity&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;CurlEntity&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;1&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name xsi:type="x:string"&amp;gt;Jeff Currier&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/CurlEntity&amp;gt;&lt;br&gt;&amp;lt;/s:EntitySet&amp;gt;  &lt;h3&gt;Updating Entities&lt;/h3&gt; &lt;p&gt;Now that we can create and query things we need to have a way of updating them otherwise things just aren't that interesting.&amp;nbsp; We do this, as always in a RESTful service, using the PUT verb.&amp;nbsp; In this case I'm going to change the, "Name" property on my newly created entity to another name.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Like we did previously we'll create a file which will contain the payload definition for the request.&amp;nbsp; I've created this file, "CurlEntity2.xml" and will provide this on the command line.&amp;nbsp; Listed below is both the payload as well as the command line syntax for updating.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Update Payload:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;CurlEntity xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:x=&amp;quot;http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema-instance" xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;"&lt;/a&gt;&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;CurlEntity&amp;lt;/s:Id&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name xsi:type="x:string"&amp;gt;Jason Hunter&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;lt;/CurlEntity&amp;gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Command line syntax for updating an entity:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;curl -X PUT --data @CurlEntity2.xml -H "Content-Type: application/xml" -u "&amp;lt;userid&amp;gt;:&amp;lt;password&amp;gt;" http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer/CurlEntity&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Output from listing the contents of the container&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;s:EntitySet xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSc"&gt;http://www.w3.org/2001/XMLSc&lt;/a&gt;&lt;br&gt;hema-instance" xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;CurlEntity&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Id&amp;gt;CurlEntity&amp;lt;/s:Id&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Version&amp;gt;2&amp;lt;/s:Version&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;Name xsi:type="x:string"&amp;gt;Jason Hunter&amp;lt;/Name&amp;gt;&lt;br&gt;&lt;/strong&gt;&amp;nbsp; &amp;lt;/CurlEntity&amp;gt;&lt;br&gt;&amp;lt;/s:EntitySet&amp;gt;  &lt;h3&gt;Deleteing Entities&lt;/h3&gt; &lt;p&gt;All things must come to an end even when it comes to entities.&amp;nbsp; We do this in RESTful services using the Delete verb.&amp;nbsp; Notice here that there is no need to specify a payload or a content-type header.&amp;nbsp; None of this is required as the service will determine what to delete based upon the URL.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Command line syntax:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;curl -X DELETE -u "&amp;lt;userid&amp;gt;:&amp;lt;password&amp;gt;" &lt;a href="http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer/CurlEntity"&gt;http://&amp;lt;authority-id&amp;gt;.data.beta.mssds.com/v1/CurlContainer/CurlEntity&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Output from listing the contents of our container:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;s:EntitySet xmlns:s="&lt;a href="http://schemas.microsoft.com/sitka/2008/03/&amp;quot;"&gt;http://schemas.microsoft.com/sitka/2008/03/"&lt;/a&gt; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSchema-instance&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema-instance"&lt;/a&gt; xmlns:x="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;/"&gt;http://www.w3.org/2001/XMLSchema"/&lt;/a&gt;&amp;gt;&lt;/p&gt; &lt;p&gt;That wraps up our cURL example for this evening.&amp;nbsp; If there are other languages or tools that you would be interested in seeing examples in please do let us know!&lt;/p&gt; &lt;p&gt;--Jeff--&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8386349" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SSDS/default.aspx">SSDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Server+Data+Services/default.aspx">SQL Server Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/cURL/default.aspx">cURL</category></item><item><title>Check out Nigel &amp; Istvan over at Channel 9</title><link>http://blogs.msdn.com/jcurrier/archive/2008/04/08/check-out-nigel-istvan-over-at-channel-9.aspx</link><pubDate>Tue, 08 Apr 2008 07:08:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8367570</guid><dc:creator>jcurrier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/8367570.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=8367570</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=8367570</wfw:comment><description>&lt;p&gt;You can watch a good interview with Istvan and Nigel over on &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=395843"&gt;Channel 9.&lt;/a&gt;&amp;#160; The talk covers some of the interesting architecture, security and other topics.&amp;#160; Well worth the watch!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8367570" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SSDS/default.aspx">SSDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Server+Data+Services/default.aspx">SQL Server Data Services</category></item><item><title>Some SQL Server Data Services Coding Examples</title><link>http://blogs.msdn.com/jcurrier/archive/2008/03/17/some-sql-server-data-services-coding-examples.aspx</link><pubDate>Mon, 17 Mar 2008 20:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8292420</guid><dc:creator>jcurrier</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/8292420.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=8292420</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=8292420</wfw:comment><description>&lt;P&gt;Since my last post (just after we released the service) several others have written some really great stuff on SSDS.&amp;nbsp; I've listed these below for reference.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://dunnry.com/blog/EntitiesContainersAndAuthorities.aspx" mce_href="http://dunnry.com/blog/EntitiesContainersAndAuthorities.aspx"&gt;Overview of the ACE model&lt;/A&gt; from Ryan&lt;/P&gt;
&lt;P&gt;&lt;A href="http://dunnry.com/blog/SSDSQueryModel.aspx" mce_href="http://dunnry.com/blog/SSDSQueryModel.aspx"&gt;SSDS Query Syntax&lt;/A&gt;&amp;nbsp; (also from Ryan)&lt;/P&gt;
&lt;P&gt;However, most of the content has been focused on either conceptual material or our basic query syntax.&amp;nbsp; So, I wanted this post to be more on how to use our service from C# (I'll do a Java example next time around).&amp;nbsp; I'm only going to cover the REST head in this example but future examples will illustrate the use of our service from the SOAP head.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In this example, I'll construct a general purpose class to generate a WebRequest in C# and also another to read in the value.&amp;nbsp; Once this is complete we'll attempt to use these to do something interesting.&lt;/P&gt;
&lt;H3&gt;Knowing your verbs&lt;/H3&gt;
&lt;P&gt;The first thing we're going to do in this example is to define an enumeration which we we can use with our utility class to specify the HTTP verb that we want to use.&amp;nbsp; Listed below is a enumeration which we can use to do this.&lt;/P&gt;&lt;PRE&gt;    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;enum&lt;/SPAN&gt; HttpMethods
    {
        GET = 0,
        PUT,
        POST,
        DELETE,
        HEAD,
        OPTIONS,
        LIST,
        UNKNOWN
    }&lt;/PRE&gt;
&lt;H3&gt;Generating Requests&lt;/H3&gt;
&lt;P&gt;So, now that we have our HTTP vocabulary down let's proceed in writing a simple method that we can use to create our WebRequest objects for us.&amp;nbsp; This should take care of setting things like the encoding, content-length and these sorts of details for us automatically so that we don't have to worry about this.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// This helper method can be used to create WebRequests for the caller.&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// It will populate the ContentType, ContentLength and Body for the caller.&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;param name="uri"&amp;gt;Target URI of the request.&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;param name="method"&amp;gt;The HTTP method to use.&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;param name="data"&amp;gt;The body of the request.&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;param name="contentType"&amp;gt;The content type.&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;returns&amp;gt;The created WebRequest.&amp;lt;/returns&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; HttpWebRequest CreateRequest(&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; uri, 
                                           HttpMethods method, 
                                           &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; data, 
                                           &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; contentType)
{
    &lt;SPAN style="COLOR: #008000"&gt;// Begin by validating our inbound parameters.&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (String.IsNullOrEmpty(uri))
    {
        &lt;SPAN style="COLOR: #0000ff"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ArgumentOutOfRangeException("&lt;SPAN style="COLOR: #8b0000"&gt;uri&lt;/SPAN&gt;", "&lt;SPAN style="COLOR: #8b0000"&gt;Value cannot be null or empty.&lt;/SPAN&gt;");
    }

    &lt;SPAN style="COLOR: #008000"&gt;// Then, go ahead and create the request using the parameters that were passed in.&lt;/SPAN&gt;
    WebRequest request = HttpWebRequest.Create(uri);
    request.Method = Enum.GetName(&lt;SPAN style="COLOR: #0000ff"&gt;typeof&lt;/SPAN&gt;(HttpMethods), method);
    request.Credentials = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; NetworkCredential("&lt;SPAN style="COLOR: #8b0000"&gt;Your User Id&lt;/SPAN&gt;", "&lt;SPAN style="COLOR: #8b0000"&gt;Your Password&lt;/SPAN&gt;");

    &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (method != HttpMethods.GET &amp;amp;&amp;amp; 
        method != HttpMethods.DELETE)
    {
        &lt;SPAN style="COLOR: #008000"&gt;// Next, based on the encoding calculate the&lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #008000"&gt;// content length, type and populate the body of the request.&lt;/SPAN&gt;
        Encoding encoding = Encoding.UTF8;
        request.ContentLength = encoding.GetByteCount(data);
        request.ContentType = contentType;

        request.GetRequestStream().Write(
            encoding.GetBytes(data), 0, (&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;)request.ContentLength);
        request.GetRequestStream().Close();
    }
    &lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;
    {
        &lt;SPAN style="COLOR: #008000"&gt;// If we're doing a GET or DELETE don't bother with this as all &lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #008000"&gt;// the interesting bits will be on the response.&lt;/SPAN&gt;
        request.ContentLength = 0;
    }

    &lt;SPAN style="COLOR: #008000"&gt;// Finally, return the newly created request to the caller.&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; request &lt;SPAN style="COLOR: #0000ff"&gt;as&lt;/SPAN&gt; HttpWebRequest;
}&lt;/PRE&gt;
&lt;H3&gt;Reading Responses&lt;/H3&gt;
&lt;P&gt;Now that we can create requests easily enough let's go ahead and create something that will read them in just as easily for us.&amp;nbsp; I'm going to make a simplifying assumption here to make this a bit easier.&amp;nbsp; I'm always just going to read in the response into a string.&amp;nbsp; Now, there are cases where you might not want to do this (say in the case of chunked responses) but this should work fine for what we want to do.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// This method can be used to read the response body from a given response.&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;param name="response"&amp;gt;The response to read.&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #808080"&gt;/// &amp;lt;returns&amp;gt;String representation of the HTTP response.&amp;lt;/returns&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; ReadResponse(HttpWebResponse response)
{
    &lt;SPAN style="COLOR: #008000"&gt;// Begin by validating our inbound parameters.&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (response == &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;)
    {
        &lt;SPAN style="COLOR: #0000ff"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ArgumentNullException("&lt;SPAN style="COLOR: #8b0000"&gt;response&lt;/SPAN&gt;", "&lt;SPAN style="COLOR: #8b0000"&gt;Value cannot be null&lt;/SPAN&gt;");
    }

    &lt;SPAN style="COLOR: #008000"&gt;// Then, open up a reader to the response and read the contents to a string&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #008000"&gt;// and return that to the caller.&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; responseBody = String.Empty;
    &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (Stream stm = response.GetResponseStream())
    {
        &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (StreamReader reader = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; StreamReader(stm))
        {
            &lt;SPAN style="COLOR: #008000"&gt;// Simply read in the entire response to our string.&lt;/SPAN&gt;
            responseBody = reader.ReadToEnd();
            reader.Close();
        }
    }

    &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; responseBody;
}&lt;/PRE&gt;
&lt;H3&gt;Putting it together&lt;/H3&gt;
&lt;P&gt;Okay, now that we have these simple tools in place let's try to construct something that's a bit interesting.&amp;nbsp; In this case a simple ASP.NET page which has several data bound controls (where the data comes from SSDS).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Now, I've created several containers which logically represent customers in my application (recall that a container is our partitioning unit so this data will now reside in a different partition from other customers).&amp;nbsp; Then, within each of these containers are entities of type Customer, Order and finally OrderDetail (You might recognize some of these from the Northwind DB).&lt;/P&gt;
&lt;P&gt;Now, there is only 1 customer entity within any Customer Container (and this simply contains more detailed information about that customer).&amp;nbsp; The Order and OrderDetails entities capture information about the orders that this customer currently has.&amp;nbsp; The image below illustrates what this looks like conceptually.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=322 alt=image src="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_thumb.png" width=423 border=0 mce_src="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;So, the first I thing I'm going to write is a bit of code which simply retrieves the total set of customers that I have.&amp;nbsp; We'll use this information to bind the customer id's to a drop down list so that we can easily select the customer whose orders we would like to view.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;
{
    &lt;SPAN style="COLOR: #0000ff"&gt;const&lt;/SPAN&gt; String XmlContentType = @"&lt;SPAN style="COLOR: #8b0000"&gt;application/xml&lt;/SPAN&gt;";

    &lt;SPAN style="COLOR: #008000"&gt;// Read in authority ID from web.config.&lt;/SPAN&gt;
    String authId = WebConfigurationManager.AppSettings["&lt;SPAN style="COLOR: #8b0000"&gt;AuthId&lt;/SPAN&gt;"];

    &lt;SPAN style="COLOR: #008000"&gt;// Then, formulate our URI using the authority and the service&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #008000"&gt;// address we read in.&lt;/SPAN&gt;
    String allCustomersQuery = String.Format("&lt;SPAN style="COLOR: #8b0000"&gt;http://{0}.data.sitka.microsoft.com/v1/?q=''&lt;/SPAN&gt;",
                               			m_authId);

    &lt;SPAN style="COLOR: #008000"&gt;// Next, create the request object using the utility method we defined earlier.&lt;/SPAN&gt;
    HttpWebRequest request = CreateRequest(allCustomersQuery, HttpMethods.GET,
                                           String.Empty, XmlContentType);

    &lt;SPAN style="COLOR: #008000"&gt;// Now, attempt to read in the data.&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;(HttpWebResponse response = (HttpWebResponse) request.GetResponse())
    {
        &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; responseXml = ReadResponse(response);
                        
        &lt;SPAN style="COLOR: #008000"&gt;// After reading in the response parse the response into a XDocument.&lt;/SPAN&gt;
        XDocument customerDoc = XDocument.Parse(responseXml);
        XNamespace ssdsNamespace = "&lt;SPAN style="COLOR: #8b0000"&gt;http://schemas.microsoft.com/sitka/2008/03/&lt;/SPAN&gt;";
                        
        &lt;SPAN style="COLOR: #008000"&gt;// Then, using XLinq, select all the customer containers projecting out their Id&lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #008000"&gt;// to a new object which has a single property value called, "CustomerId"&lt;/SPAN&gt;
        var customerIdList =
        	from c &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; customerDoc.Descendants(ssdsNamespace + "&lt;SPAN style="COLOR: #8b0000"&gt;Container&lt;/SPAN&gt;")
            select &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;
            	{
                  	CustomerId = c.Element(ssdsNamespace + "&lt;SPAN style="COLOR: #8b0000"&gt;Id&lt;/SPAN&gt;").Value
                  };

         &lt;SPAN style="COLOR: #008000"&gt;// Then, bind the datasource to our drop down list.&lt;/SPAN&gt;
         &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.ddlCustomers.DataTextField = "&lt;SPAN style="COLOR: #8b0000"&gt;CustomerId&lt;/SPAN&gt;";
         &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.ddlCustomers.DataSource = customerIdList;
         &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.DataBind();
     }

}
&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt;(WebException ex)
{
    &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (ex.Response != &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;)
    {
        &lt;SPAN style="COLOR: #008000"&gt;// Alert the user that something happened bad happened here.  &lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #008000"&gt;// I'm just capturing the string here for debugging purposes.&lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; errorMsg = ReadResponse((HttpWebResponse)ex.Response);
        
    }
}&lt;/PRE&gt;
&lt;P&gt;Before we move on you may be wondering what this actually looks like on the wire so here it is.&amp;nbsp; &lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;EntitySet&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;s&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://schemas.microsoft.com/sitka/2008/03/"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;x&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;Customer000000&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;1&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;Customer000001&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;1&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;Customer000002&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;1&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;Customer000003&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;1&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Container&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #008000"&gt;&amp;lt;!-- more data here but omitted...  --&amp;gt;&lt;/SPAN&gt; 
&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;EntitySet&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;In the prior example we operated exclusively over the containers in the service.&amp;nbsp; This time we're going to query within a particular container for Order information and project out a new class which can be used for data binding.&amp;nbsp; Now, this is only one way we could approach the problem.&amp;nbsp; Another, and one that I'll post on as well soon, would be to use XmlSerializer (or something like JAXB if you're using Java) and create a general purpose object to represent orders which we could use all over our application.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;However, in this case I'm really interested in focusing in on using XLinq with our service so I'm going to stay with the use of Anonymous classes as they are a nice for these sort of build to order classes that one sometimes needs for these kinds of DataBinding scenarios.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;
{&lt;/PRE&gt;&lt;PRE&gt;      // First, read in the authority id to use from our web.config.
      String authId = WebConfigurationManager.AppSettings["&lt;SPAN style="COLOR: #8b0000"&gt;AuthId&lt;/SPAN&gt;"];&lt;/PRE&gt;&lt;PRE&gt;      const String XmlContentType = @"application/xml";

      &lt;SPAN style="COLOR: #008000"&gt;// Next, define the query that will select only those entities which have a kind value&lt;/SPAN&gt;
      &lt;SPAN style="COLOR: #008000"&gt;// of Order.&lt;/SPAN&gt;
      String query = String.Format(@"&lt;SPAN style="COLOR: #8b0000"&gt;from e in entities where e.Kind == ""Order"" select e&lt;/SPAN&gt;");

      &lt;SPAN style="COLOR: #008000"&gt;// Then, construct the URI that we'll use to make the request.  In this case, I've retrieved&lt;/SPAN&gt;
      &lt;SPAN style="COLOR: #008000"&gt;// the container id to use from a drop down list (this list was actually the one populated &lt;/SPAN&gt;
      &lt;SPAN style="COLOR: #008000"&gt;// from our last code sample).&lt;/SPAN&gt;
	String allOrdersQuery =  
          String.Format(@"&lt;SPAN style="COLOR: #8b0000"&gt;http://{0}.data.sitka.microsoft.com/v1/{1}?q='{2}'&lt;/SPAN&gt;",
                        authId, ddlCustomers.SelectedValue, query);

      HttpWebRequest request = CreateRequest(allOrdersQuery, HttpMethods.GET,
                                              String.Empty, XmlContentType);

      &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
      {
           &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; responseXml = ReadResponse(response);

           &lt;SPAN style="COLOR: #008000"&gt;// After reading in the response parse the response into a XDocument.&lt;/SPAN&gt;
           XDocument ordersDoc = XDocument.Parse(responseXml);
           XNamespace ssdsNamespace = "&lt;SPAN style="COLOR: #8b0000"&gt;http://schemas.microsoft.com/sitka/2008/03/&lt;/SPAN&gt;";

           &lt;SPAN style="COLOR: #008000"&gt;// Then, select all the customer containers projecting out their Id&lt;/SPAN&gt;
           &lt;SPAN style="COLOR: #008000"&gt;// to a new object which has a single property value called, "CustomerId"&lt;/SPAN&gt;
           var orderList =
                    from o &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; ordersDoc.Descendants("&lt;SPAN style="COLOR: #8b0000"&gt;Order&lt;/SPAN&gt;")
                    select &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;
                    {
                        OrderId = o.Element(ssdsNamespace + "&lt;SPAN style="COLOR: #8b0000"&gt;Id&lt;/SPAN&gt;").Value,
                        DateOrdered = Convert.ToDateTime(o.Element("&lt;SPAN style="COLOR: #8b0000"&gt;OrderDate&lt;/SPAN&gt;").Value),
                        Total = Convert.ToDecimal(o.Element("&lt;SPAN style="COLOR: #8b0000"&gt;Total&lt;/SPAN&gt;").Value)
                    };

            &lt;SPAN style="COLOR: #008000"&gt;// Then, bind the grid to the dataset values.&lt;/SPAN&gt;
            &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.grdDataBinding.DataSource = orderList;
            &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.grdDataBinding.DataBind();
            }

       }
}
&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt; (WebException ex)
{
    &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;(ex.Response != &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;)
    {
        &lt;SPAN style="COLOR: #008000"&gt;// Read in the error message and alert the user.&lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #008000"&gt;// For now, I'm just keeping this here for debugging purposes.&lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; errorMsg = ReadResponse((HttpWebResponse) ex.Response);
    }
}&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;In this last code example we've constructed a query over a specific container.&amp;nbsp; This query places a restriction over the output such that only entities that match the Kind predicate that we've setup are returned to us.&amp;nbsp; Listed below is an example of what this looks like on the wire.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;EntitySet&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;s&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://schemas.microsoft.com/sitka/2008/03/"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;x&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
   &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Order&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;2001-11-02T01:01:01Z-O044501&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;5&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HighPriority&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:boolean"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;true&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HighPriority&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderId&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;O044501&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderId&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderDate&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:dateTime"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;2001-11-02T01:01:01 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderDate&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Total&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:decimal"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;26128.8674&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Total&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
   &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Order&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
   &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Order&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;2002-02-02T01:01:01Z-O045283&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;5&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HighPriority&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:boolean"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;true&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HighPriority&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderId&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;O045283&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderId&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderDate&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:dateTime"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;2002-02-02T01:01:01&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderDate&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Total&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:decimal"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;37643.1378&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Total&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
   &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Order&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
   &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Order&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;2002-05-02T01:01:01Z-O046042&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;5&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;Version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HighPriority&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:boolean"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;true&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HighPriority&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderId&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;O046042&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderId&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderDate&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:dateTime"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;2002-05-02T01:01:01&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OrderDate&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
       &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Total&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xsi&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"x:decimal"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;34722.9906&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Total&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Order&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; 
    &lt;SPAN style="COLOR: #008000"&gt;&amp;lt;!-- Omitting other orders for simplicity. --&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #c71585"&gt;s&lt;/SPAN&gt;:&lt;SPAN style="COLOR: #800000"&gt;EntitySet&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;Now, we have a very simple data bound ASP.NET application which shows you can do data binding very simply using SSDS.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=346 alt=image src="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_thumb_1.png" width=693 border=0 mce_src="http://blogs.msdn.com/blogfiles/jcurrier/WindowsLiveWriter/SomeSQLServerDataServicesCodingExamples_9393/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;--Jeff--&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8292420" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SSDS/default.aspx">SSDS</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/SQL+Server+Data+Services/default.aspx">SQL Server Data Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/MIX08/default.aspx">MIX08</category></item><item><title>Dryad - a more generalized version of MapReduce</title><link>http://blogs.msdn.com/jcurrier/archive/2007/11/09/dryad-a-more-generalized-version-of-mapreduce.aspx</link><pubDate>Sat, 10 Nov 2007 00:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6029622</guid><dc:creator>jcurrier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jcurrier/comments/6029622.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jcurrier/commentrss.aspx?PostID=6029622</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jcurrier/rsscomments.aspx?PostID=6029622</wfw:comment><description>&lt;P&gt;It looks we've presented Dryad to the folks over at Google.&amp;nbsp; The actual video from the talk is available &lt;A class="" title=here. href="http://www.youtube.com/watch?v=WPhE5JCP2Ak" mce_href="http://www.youtube.com/watch?v=WPhE5JCP2Ak"&gt;here&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If you aren't aware of waht Dryad is exactly you can think of it as a more generalized version of Google's MapReduce.&amp;nbsp; The nice thing about Dryad is that it really bake in any semantics into what the architecture.&amp;nbsp; This leaves the framework considerbly more adaptable (IMO).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;Enjoy.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6029622" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Google/default.aspx">Google</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/jcurrier/archive/tags/Dryad/default.aspx">Dryad</category></item></channel></rss>