<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blog.aspnet.sk/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>Lubo #10</title><link>http://blog.aspnet.sk/lubo10/default.aspx</link><description>Blog about progressive .NET technologies</description><dc:language>sk-SK</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Načo slúžia Dátové služby?</title><link>http://blog.aspnet.sk/lubo10/archive/2009/04/15/na-o-sl-250-ia-d-225-tov-233-slu-by.aspx</link><pubDate>Wed, 15 Apr 2009 17:16:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:103500</guid><dc:creator>lubo10</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/lubo10/rsscomments.aspx?PostID=103500</wfw:commentRss><comments>http://blog.aspnet.sk/lubo10/archive/2009/04/15/na-o-sl-250-ia-d-225-tov-233-slu-by.aspx#comments</comments><description>&lt;p&gt;Tak konečne som sa odhodlal pre prvú správičku do môjho blogu. Hádam sa mi podarí ešte niečo v dohľadnej budúcnosti napísať. &lt;/p&gt;&lt;p&gt;Na začiatok teda pár viet k ADO.NET Data Services.&lt;br /&gt;&lt;br /&gt;Nejako som si totižto nevšimol, že by sa o dátových službách hovorilo v slovenskej ASP.NET komunite.&lt;br /&gt;Možno otázka hneď na úvod: Aj ich niekto využíva v reálnych projektoch?&lt;br /&gt;V nasledujúcom článku sa budem snažiť trošku priblížiť tento framework a dodať chuť vývojárom, prečo &lt;br /&gt;venovať čas práve dátovým službám.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Krátky úvod &lt;/b&gt;&lt;/p&gt;&lt;p&gt;ADO.NET dátová platforma vo verzii .NET 3.5 SP1 obsahuje framework ADO.NET Data Services, známy aj pod kódovým názvom Astoria.Microsoft používa familiárny názov Dátové služby. &lt;br /&gt;Dátové služby umožňujú webovým aplikáciam, ktorých dátový základ tvorí technológia Entity Framework, vystaviť dáta cez HTTP protokol založené na architektonickom štýle &lt;a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm" target="_blank"&gt;REST&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;u&gt;Dáta sú následne prístupné v dvoch formátoch:&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; •&amp;nbsp;&amp;nbsp;&amp;nbsp; XML+ATOM – štandardizovaný formát pre celý webový svet&lt;br /&gt;&amp;nbsp;&amp;nbsp; •&amp;nbsp;&amp;nbsp;&amp;nbsp; JSON – obľúbený formát pre novodobé AJAX aplikácie&lt;br /&gt;&lt;br /&gt;Možno problém prečo pojem dátové služby nie je až tak spomínaný je ten, že všetko &amp;quot;sedí&amp;quot; práve nad Entity Frameworkom, pričom vývojári sú momentálne dosť opatrní pri nasadení EF do architektúr a čakajú na verziu 2.0, ktorá by mala výjsť s novou verziou .NET 4.0.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;REST&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;V čom vidím perspektívu je práve REST štýl pri vystavení dát a následnom dotazovaní, ktorý je všeobecne pri webových službách populárnejší ako protokol SOAP. &lt;br /&gt;Pre manipuláciu s&amp;nbsp;REST webovými službami je nutná znalosť protokolu HTTP. Konkrétne pre vykonávanie CRUD operácií je potrebné nadefinovať v&amp;nbsp;hlavičke HTTP požiadavky (tzv. Header Request) príslušnú metódu – konkrétne: C/R/U/D - POST/GET/PUT/DELETE.&lt;br /&gt;&lt;br /&gt;Pre lepšie pochopenie práce s dátovými službami si možete stiahnúť free program &lt;a href="http://fiddler2.com/fiddler2/" target="_blank"&gt;FIDDLER 2&lt;/a&gt;, pomocou ktorého sa dá monitorovať, čo sa prenáša cez HTTP a teda čo konkrétne vracajú služby v XML alebo JSON formáte.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dotazovanie&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Po pochopení štýlu REST je dotazovanie intuitívne, pričom je dostupná sada kľúčových slov a funkcií pre pokročilé dotazovanie:&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Filtrovanie (filter)&lt;/li&gt;&lt;li&gt;Triedenie (orderby)&lt;/li&gt;&lt;li&gt;Stránkovanie (skip, top)&lt;/li&gt;&lt;li&gt;Funkcie &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; • Dátumové (year,day, hour...)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; • Reťazcové (contains, startswith, indexof, trim...)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; • Matematické (round, floor, ceiling...)&lt;p&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Príklady dotazov:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;1, http://localhost:2634/MyServiceOperation?filter= number lt 100&lt;br /&gt;&amp;nbsp;&lt;br /&gt;2, http://localhost:2634/MyServiceOperation?orderby=ReleaseDate&amp;amp;skip=100&amp;amp;take=50&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Kľúčové slová a funkcie z časti pokrývajú štandardný jazyk SQL, pričom ponúkajú zaujímavú alternatívu k nemu práve kvôli jednoduchému získaniu dát v aplikácií na základe URI, ktoré je možné použiť ako v .NET aplikáciach, tak aj v aplikáciach napísaných v iných programovacích jazykoch. Momentálne možno trochu chýba podpora agregačných&amp;nbsp; funkcií (SUM,COUNT...).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Klientská strana .NET&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pre prácu s&amp;nbsp;dátovými službami na klientskej strane .NET je vytvorená podpora v&amp;nbsp;podobe triedy &lt;span style="font-style:italic;"&gt;DataServiceContext&lt;/span&gt;. Vývojari, ktorí vyvíjajú aplikácie v&amp;nbsp;prostredí .NET, ktoré používajú dátové služby, tak nenarábajú priamo s&amp;nbsp;XML formátom, ale pomocou tejto triedy majú možnosť získať dáta priamo v&amp;nbsp;objektovej podobe. &lt;br /&gt;&lt;br /&gt;Na to, aby dáta boli priamo v&amp;nbsp;objektovej podobe, je potrebné ručne napísať value objekty na klientovi, do ktorých sa majú výsledky získané z&amp;nbsp;dátových služieb namapovať. Taktiež je možné value objekty vygenerovať na základe metadát, ktoré sa získajú z&amp;nbsp;dátových služieb. V&amp;nbsp;tomto prípade je nápomocná konzolová aplikácia &lt;span style="font-style:italic;"&gt;datasvcutil.exe&lt;/span&gt;, ktorá je súčasťou novej verzie .NET 3.5 SP1 a&amp;nbsp;dokáže na základe metadát vygenerovať aplikačný kód pre entity na klientskej strane. Potom sa dá použiť populárna technológia LINQ, takže .NET programátor nie je nútený narábať ani s&amp;nbsp;XML formátom ani pokročilé dotazy písať na základe REST štýlu. &lt;br /&gt;Viac v odkaze &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/05/12/visual-studio-2008-sp1-querying-ado-net-data-service-net-client.aspx" target="_blank"&gt;Querying ADO.NET Data Services via .NET Client&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;Ukážka kódu&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;CategoriesEntities svc = new CategoriesEntities(new Uri(&amp;quot;http://localhost:1039/MyDataService.svc/Categories&amp;quot;));&lt;br /&gt;&amp;nbsp;&lt;br /&gt;var query = svc.Categories;&lt;br /&gt;foreach (Categories c in query)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;Console.WriteLine(c.CategoryName);&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;V&amp;nbsp;ukážke je ukázaný spôsob získania kolekcie záznamov pre entitu Categories. Anonymná premenná query je typu DataServiceQuery&amp;lt;T&amp;gt; a&amp;nbsp;vracia hodnotu typu IQueryable, nad ktorou je možné použiť technológiu LINQ, čo má nesporné výhody.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;LINQ to ADO.NET Data Services vs. REST Data Services&lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;br /&gt;var query = (from c in svc.Categories&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; orderby c.CategoryName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select c).Skip(2).Take(2);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;http://localhost:2634/MyDataService.svc/Categories()?orderby=CategoryName&amp;amp;skip=2&amp;amp;top=2&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Využitie&lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;br /&gt;Dátové služby posúvajú ADO.NET dátovú platformu tým správnym smerom. Spôsob dotazovania na základe REST štýlu a&amp;nbsp;výsledky v&amp;nbsp;podobe štandardizovaného formátu XML+ATOM umožňujú entity namapované pomocou technológie Entity Framework poskytovať okolitému svetu, pričom nezáleží na platforme ani technológií, ktorú používa klientská strana spracúvajúca dátové služby.&lt;br /&gt;Na základe dátových služieb sa dajú postaviť menšie aplikácie, či už klientské alebo webové. Pritom tieto aplikácie nemajú žiadne lokálne dátové úložisko, ale komunikácia so vzdialeným databázovým serverom je práve na základe dátových služieb. Je to využiteľné v&amp;nbsp;intranetových podnikových riešeniach ako aj rozsiahlych internetových riešeniach.&lt;br /&gt;Je to krok k&amp;nbsp;novej ére tzv. &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank"&gt;Cloud Computingu&lt;/a&gt; alebo programovania v&amp;nbsp;oblakoch, kedy vývojari budú absolútne odtienení od dátového úložiska, ktoré môže tvoriť relačná databáza určitého typu, pritom dátový zdroj budú len dátové služby.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Záver&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na záver dodám linku &lt;a href="http://msdn.microsoft.com/en-us/data/bb931106.aspx" target="_blank"&gt;getting started&lt;/a&gt;, kde je všetko, čo potrebujete na začiatok, vrátane webcastov.&lt;br /&gt;U českých kolegov: &lt;a href="http://www.vyvojar.cz/Series/8-ado-net-data-services.aspx" target="_blank"&gt;seriál ado.net data services&lt;/a&gt; &lt;br /&gt;Zaujímava linka je aj na blog: &lt;a href="http://blogs.msdn.com/astoriateam" target="_blank"&gt;Astoria tím &lt;/a&gt;&lt;br /&gt;Pre nadšencov je momentálne prístupná &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3e3d4eaf-227b-4ad3-ad0d-3613db8aa9df&amp;amp;displaylang=en" target="_blank"&gt;ADO.NET Data Services v 1.5 CTP&lt;/a&gt;, ktorá poukazuje na nové vlastnosti, ktoré budú obsiahnuté v pripravovanom .NET 4.0. &lt;br /&gt;&lt;br /&gt;Pre NHibernate komunitu tiež dobrá správa: &lt;a href="http://wildermuth.com/2008/07/21/NHibernate_LINQ_with_ADO_NET_Data_Services" target="_blank"&gt;NHibernate.LINQ with ADO.NET Data Service&lt;/a&gt;&lt;br /&gt;
		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=103500" width="1" height="1"&gt;</description></item></channel></rss>