<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.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>Yan Wang's Blog : Sitka</title><link>http://blogs.technet.com/yanwang/archive/tags/Sitka/default.aspx</link><description>Tags: Sitka</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>A sample solution kit to demonstrate WPF &amp; SQL Server Data Services Technologies-Part 1</title><link>http://blogs.technet.com/yanwang/archive/2008/08/30/a-sample-solution-kit-to-demonstrate-wpf-sql-server-data-services-technologies-part-1.aspx</link><pubDate>Sat, 30 Aug 2008 12:44:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3114442</guid><dc:creator>yanwang</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/yanwang/comments/3114442.aspx</comments><wfw:commentRss>http://blogs.technet.com/yanwang/commentrss.aspx?PostID=3114442</wfw:commentRss><description>&lt;P&gt;The scenario of this solution kit&amp;nbsp;is to store Workshop contents&amp;nbsp;such as Workshop ID,Title and its&amp;nbsp;pictures, docs &amp;amp; videos in SQL Server Data Services(SSDS) which is a Microsoft hosted Cloud Service, then pull the data from the cloud and view it via WPF.&amp;nbsp; As we know, WPF is perfect in displaying picture, .xps documents &amp;amp; playing videos with great user experiences.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The high-level architecture is as below:-&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="High-level architecture for the solution kit" style="WIDTH: 766px; HEIGHT: 520px" height=1050 alt="High-level architecture for the solution kit" src="http://akqypg.bay.livefilestore.com/y1pGQ_fJ8cAa-8SJhNPqAlQYj_g-j0otl7TJJCMRk5ojmTRYvqsJBI-3ZvgEYOWHdwpmmahEBjXpNfSUxSWhPs3TQ" width=1400 mce_src="http://akqypg.bay.livefilestore.com/y1pGQ_fJ8cAa-8SJhNPqAlQYj_g-j0otl7TJJCMRk5ojmTRYvqsJBI-3ZvgEYOWHdwpmmahEBjXpNfSUxSWhPs3TQ"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Let's talk about the solution design from bottom to top that is&amp;nbsp;&amp;nbsp;Infrastructure Services SSDS in&amp;nbsp;this part.&amp;nbsp;I created a separate WCF Service Application to access SSDS cloud service and expose workshop functional services.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;In order to access SSDS, you need to acquire a SSDS credential (User Name &amp;amp;&amp;nbsp;Password)&amp;nbsp;first from &lt;A href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx" mce_href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx"&gt;http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx&lt;/A&gt;.&amp;nbsp; And you need to understand SSDS ACE concept, that is Authority-Container-Entity (Refer &lt;A href="http://msdn.microsoft.com/zh-cn/library/cc512417(en-us).aspx" mce_href="http://msdn.microsoft.com/zh-cn/library/cc512417(en-us).aspx"&gt;http://msdn.microsoft.com/zh-cn/library/cc512417(en-us).aspx&lt;/A&gt;&amp;nbsp;).&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Then add a SSDS Service References pointing to &lt;A href="http://data.beta.mssds.com/soap/v1?wsdl"&gt;http://data.beta.mssds.com/soap/v1?wsdl&lt;/A&gt;&amp;nbsp;, screenshot is as below:&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="sitka configuration" style="WIDTH: 608px; HEIGHT: 536px" height=801 alt="sitka configuration" src="http://akqypg.bay.livefilestore.com/y1pvy3_FozFQCisj-PbPcOQWPEmiIYDhvdIp-ZqsHGDGTKmWaG2GYuFHTcDNNPFEYtVXWFTPLX5lbwbAt_RgAuy7g" width=832 mce_src="http://akqypg.bay.livefilestore.com/y1pvy3_FozFQCisj-PbPcOQWPEmiIYDhvdIp-ZqsHGDGTKmWaG2GYuFHTcDNNPFEYtVXWFTPLX5lbwbAt_RgAuy7g"&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Then design the workshop entities. Remember there are 2 kinds of entities-Flexible Entity Type&amp;nbsp;&amp;amp; Blob Entity Type. In our case, we'd better store Workshop List information such as WorkshopID, Title,Number of Picures,documents &amp;amp; videos for each workshop in Flexible Entities&amp;nbsp; while store Pictures ,Documents &amp;amp; Videos etc BLOB data into BLOB Entities, thus our Entities schema design can be interpreted with&amp;nbsp;below diagram:-&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="Workshop Entity Schema" style="WIDTH: 770px; HEIGHT: 530px" height=1050 alt="Workshop Entity Schema" src="http://akqypg.bay.livefilestore.com/y1pZN_6W-7kZ_z9H48nywjjP1CPO6QOWbcFsDqkHtNuI9OkjaIuGufPQx6RxHz9MQGvjf8COv_WK5gdDmxyKs3qlw" width=1400 mce_src="http://akqypg.bay.livefilestore.com/y1pZN_6W-7kZ_z9H48nywjjP1CPO6QOWbcFsDqkHtNuI9OkjaIuGufPQx6RxHz9MQGvjf8COv_WK5gdDmxyKs3qlw"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Note that the SSDS&amp;nbsp;ACE Data Model is unlike Relational Database,&amp;nbsp;1 entity is just like 1 table record. In order to easily return all workshop entities just like "select * from workshoptable" in normal Relational Database design, I set same .&lt;STRONG&gt;Kind&amp;nbsp;&lt;/STRONG&gt;propertity&amp;nbsp;value ("workshop" here)&amp;nbsp;for all Workshop Entities. So with LINQ Query(remember SSDS use LINQ to query) "from e in entities where e.Kind==""workshop""&amp;nbsp;select e" , I can get all workshop entities.&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;I&amp;nbsp;wrote 2&amp;nbsp;class modules&amp;nbsp;to encapsulate Entity CRUD Operations, that is &lt;STRONG&gt;HandlingEnity.cs&lt;/STRONG&gt; for Flexible Entity with SOAP API &amp;amp; &lt;STRONG&gt;HandlingBlob.cs&lt;/STRONG&gt; for Blob Entity with REST API. The reason&amp;nbsp;is only REST API is supported for&amp;nbsp;Read/Write Blob Entity so far.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;After that, I created a&amp;nbsp;WCF Service&amp;nbsp;which has&amp;nbsp;exposed 2 Service Operations to&amp;nbsp;query SSDS and return workshop&amp;nbsp;data to Client. Note that you may need to specify &amp;lt;ProxyAddress&amp;gt; in your service configuration file if you access Internet from a proxy server. The related settings is similar as below:-&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;lt;binding name="SitkaSoapEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" &lt;STRONG&gt;useDefaultWebProxy="false" proxyAddress ="&lt;/STRONG&gt;&lt;A href="http://myproxy.com/"&gt;&lt;STRONG&gt;http://myproxy.com:80&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;"&amp;gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;lt;/binding&amp;gt;&lt;BR&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT style="BACKGROUND-COLOR: #66ffff" color=#ffffff&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Now we've finished Services Application part. In next session, I'll talk about Service Agent Application and WPF Client application.&lt;/P&gt;
&lt;P mce_keep="true"&gt;You can download solution kit source code from &lt;STRONG&gt;&lt;U&gt;&lt;A class="" title=Sourcecode href="http://cid-3454e46ce755f688.skydrive.live.com/self.aspx/BlogAttachment/WorkshopKit%7C_V1.rar" mce_href="http://cid-3454e46ce755f688.skydrive.live.com/self.aspx/BlogAttachment/WorkshopKit|_V1.rar"&gt;here&lt;/A&gt;&lt;/U&gt;&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3114442" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/yanwang/archive/tags/SSDS/default.aspx">SSDS</category><category domain="http://blogs.technet.com/yanwang/archive/tags/Sitka/default.aspx">Sitka</category></item></channel></rss>