XAML.cz Magazín moderních technologií založených na XAML

Coproject – demo RIA aplikace krok za krokem, díl 1.

Napsáno pro Silverlight od Augustin Šulc [18.01.2011]

Na prezentaci o rapidním vývoji na platformě .NET jsme slíbili, že ukázkovou aplikaci uvolníme ve formě nějakého tutoriálu, abyste si mohli sami projít jednotlivé kroky a mohli se v klidu podívat, jak jsou vyřešeny různé problémy typické pro business aplikace. Co se týče T4RIA, tak jsou již uvolněny a Petr o nich připravuje článek.

Tutoriál o Coprojectu (tak je ukázková aplikace nazvaná) již postupně vychází na našem blogu v anglickém jazyce. Tady se budou postupně objevovat všechny díly česky.

V tomto díle bychom si měli připravit prostředí nutné pro vývoj (původně part 0 ) a načrtneme si architekturu aplikace, abyste věděli co a proč tady vlastně tvoříme (part 1).

Potřebné nástroje

K vývoji celé aplikace budete potřebovat Visual Studio 2010. Mám obavy, že Express edice nebude pro RIA Services stačit. Dále budete potřebovat databázový server, nejlépe MS SQL Server – tady už je Express edice bez problémů. V podstatě si ale vystačíte s jakoukoliv databází, kterou podporuje ASO.NET Entity Framework 4.

K výše zmíněnému bude potřeba doinstalovat další doplňky:

Silverlight tools

Postupujte podle pokynů na této stránce a nainstalujte si Silverlight 4 Tools for Visual Studio 2010.

Dále nainstalujte poslední verzi Silverlight 4 Toolkitu (zatím je poslední April 2010).

WCF RIA Services

Postupujte podle pokynů v sekci Download and Install zde. Po dokončení kroků 1 a 2 byste měli mít nainstalováno WCF RIA Services SP1 Beta a WCF RIA Services December 2010 Toolkit.

Caliburn.Micro

Tento framework pro MVVM stáhnete nejlépe z jeho oficiální stránky na Codeplexu, kde naleznete i dokumentaci k používání a fungování frameworku. Bohužel tam neobjevíte připravený release, takže si budete muset stáhnout zdrojové kódy a zkompilovat si je sami. To naštěstí není velký problém (stačí na stránce Source code kliknout na Download v pravé části stránky). V průběhu experimentování s C.M se navíc hodí mít možnost se podívat přímo do zdrojových kódů. pokud navíc do aplikace, která C.M používá přibalíte i příslušný PDB soubor, budete moci C.M i přímo debugovat.

Jelikož jsou zdrojové kódy na Codeplexu aktualizovány docela často, doporučuji si je stahovat pomocí klienta pro verzovací systém Mercurial. Návod naleznete zde.

Až budete mít staženy zdrojové kódy C.M na svém počítači, otevřete ve Visual Studiu celou solution (/src/Caliburn.Micro.sln). Může se stát, že na vás vyskočí hlášení, že se jeden nebo více projektů nepodařilo otevřít. Nic si z toho nedělejte – C.M obsahuje zdrojové kódy pro WPF, Silverlight a Windows Phone 7, takže pokud nemáte nainstalovánu podporu pro jedno z těchto prostředí, daný projekt se vám neotevře. Nám bude stačit, abychom se dostali do projektu Caliburn.Micro.Silverlight.

Spusťte Build celé solution. A zavřete Visual Studio.

Založení projektu Coproject

Spusťte Visual Studio a vytvořte nový projekt typu Silverlight Application project a nazvěte ho Coproject. Na dialogu, který se vám po vytvoření zobrazí, si nechte vytvořit i webový projekt pro hostování Silverlight klienta a nezapomeňte zapnout podporu RIA Services, jak můžete vidět na obrázku:

Struktura nově vytvořené solution by měla vypadat následovně:

Tím jsme si připravili půdu pro vlastní vývoj.

Co je Coproject

Pokud znáte aplikaci BaseCamp, cíle aplikace Coproject vás nepřekvapí – mělo by se jednat o jednoduchou aplikaci pro správu projektu. Aplikace bude tvořena čtyřmi moduly: Home, Messages, To-Do lists a Milestones. Vzhledem k tomu, že bych rád udržel tento tutoriál srozumitelný, budeme se věnovat (alespoň ze začátku) jenom části To-Do lists.

Modul To-Do lists bude obsahovat seznam jednotlivých úkolů a umožní uživateli vyhledávat mezi těmito úkoly, otevřít jejich detail a upravit je. Věřím, že nám to bude pro začátek stačit. Navíc to už samo o sobě zahrnuje nejtypičtější problémy při implementaci aplikací pracujících s daty.

Rozhraní aplikace bych si představoval nějak takto:

Architektura

Tady nebudeme vymýšlet nic nového a vyjdeme z toho analýzy, kterou jsme provedli v rámci prezentace. Coproject tedy bude třívrstvá aplikace postavená nad SQL databází a využívající technologie ADO.NET Entity Framework 4, WCF RIA Services a Silverlight 4.

Datová vrstva

Jako datovou základnu použijeme jednoduchou SQL databázi, jejíž schéma vypadá následovně:

Aby nebylo zadání tak jednoduché, jak se mohlo původně zdát, jsou jednotlivé úkoly (ToDoItem) seskupeny do seznamů úkolů (ToDoList). Každý úkol je pak přiřazen jednomu uživateli aplikace.

Serverová vrstva

Pro přístup do databáze použijeme Entity Framework 4. Pokud si o EF chcete přečíst více, doporučuji podívat se sem.

Pro zpřístupnění dat klientské vrstvě využijeme WCF RIA Services. Více informací můžete najít zde.

Celá serverová část zároveň funguje jako webový server, na kterém poběží jak stránky s vlastním Silverlight klientem, tak datové služby (WCF RIA Services).

Klientská vrstva

Klientskou aplikaci naimplementujeme v Silverligt 4 s přístupem M-V-VM. k tomu využijeme frameworku Caliburn.Micro. Díky tomu budeme schopní řešit úkoly typické pro business aplikace: asynchronní načítaní dat, editaci více entit najednou, validaci, kontrolu neuložených dat, indikaci síťové komunikace a podobně. Klientská aplikace poběží v okně prohlížeče, nebude ale problém využít funkce Out-of-browser a spouštět ji ve vlastním okně zástupcem např. na ploše uživatele.

Příprava databáze

Než se pustíme do programování, musíme si připravit databázi. Ačkoliv ve Visual Studiu můžete vytvořit databázový soubor (přípona MDF), nezjistil jsem způsob, jak na něm spustit připravený SQL skript pro vytvoření databázové struktury. Nabízejí se dvě relativně snadná řešení. První je vytvořit novou databázi na jakémkoliv SQL serveru (klidně lokálním Express), ke kterému máte přístup, a pak na ní spustit skript, který vám vytvoří obsah. Druhá možnost je nakopírovat připravený soubor Database.mdf do adresáře App_Data v naší solution.

Oba potřebné soubory (skript i připravený databázový soubor) můžete stáhnout zde.

Pokud se vydáte první cestou, není jistě potřeba popisovat jak na to, jelikož předpokládám, že s tím máte jisté zkušenosti. Popíšu tedy druhou, méně komplikovanou cestu. Po vložení souboru Database.mdf do projektu by měla struktura solution asi takto:

Potom stačí dvojklik na souboru databáze, aby se nám otevřel v okně Server Explorer:

Spusťte rebuild celé solution, abychom měli jistotu, že je vše v pořádku a příště můžeme pokračovat.

Otázka na závěr

Při psaní anglické verze mi to nepřišlo, ale teď se to ukázalo v celé své nahotě – některé výrazy se prostě nedají dobře přeložit do češtiny (solution, build, atd.). Otázka potom je, jak se s tím popasovat – skloňovat je? Co když je originál v množném čísle (RIA Services jsou/je)? Co si o tom myslíte? Jak pojmenováváte tyhle “věci” vy? Znáte nějaké použitelné české překlady?

Komentáře

ukládám komentář, vyčkejte prosím..
  1. Jakub

    Já jsem pro nepřekládat vůbec a používat vždy 1. pád. Číslo (množné/jednotné) bych odvodil z angličtiny, takže RIA services jsou. Překládání technických termínů do češtiny uživatele akorát zmate. Většina programátorů umí anglicky, protože se většina programů prostě píše v angličtině. A ti, co angličtinou nevládnou a naučí se české ekvivalenty z tohoto webu, mohou být při čtení článků na jiném webu s jiným překladem akorát zmatení.

    18.01.2011 @ 11:39
  2. Honza

    Souhlasim s Jakubem kdzbzch tu videl cesky preklad asi bych horko tezko tomu pak rozumel. V podstate pro nas programatory uz toto nazvoslovi zlidovelo a jeste jsem nikoho nepotkal kdo by se nejak snazil tyto pojmy prelozit.

    19.01.2011 @ 22:12
  3. Gusta

    Taky souhlasím s tím nepřekládat zažitou terminologii. Zůstanu tedy u současného způsobu, jaký jsem použil v tomto článku. Jen k tomu, že se to nikdo nikdo nesnaží nějak přeložit: programujte.com

    20.01.2011 @ 10:14

@xamlcz

  • RT @jvanrhyn: XAML, It's a bit like olives. Takes a while to get used to. But once you're used to it. It is actually pretty good. <3 XAML
  • RT @moser_christian: WPF Inspector 0.9.7 is released. It supports .NET 3.5 and 4.0 The project is now open source and available on CodeP ...
  • Jeff Handley oznámil vydání WCF RIA Services v.1.0 SP1 RTM http://bit.ly/gOgckn ke stažení na http://bit.ly/gVAXdK
  • jedna výzva pro Brno. Byl někdo z vás na přednášce o RIA v MS Akvárku? Dejte o sobě vědět. Děkuji
  • také jste uvažovali o tom, že zkusíte na projekt použít Caliburn Micro nebo naopak Prism 4? A co tak obojí, šlo by to nebo ne? Již brzy