Archiv pro měsíc September, 2007

Pár střípků o SilverLight

Tuto středu (27. září 2007) se v Gopasu konala přednáška Štěpána Bechynského s názvem SilverLight. V tomto článku bych vám chtěl představit co jsem se ve zhruba dvouhodinové přednášce dozvěděl.

Nejdříve pár slov o SilverLightu přímo od Microsoftu:

Microsoft® Silverlight™ is a cross-browser, cross-platform plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications. Silverlight supports fast, cost-effective delivery of high-quality video to all major browsers running on the Mac OS or Windows.

Uvedená marketingová definice se jeví celkem správná s jednou podstatnou poznámku – platí pouze pro SilverLight 1.1, který se nachází v Alpha verzi (ostrá verze prý bude v dubnu 2008). Proč to uvedu dále v článku.

Architektura SilverLight aplikace

SilverLight aplikace se skládá ze tří částí:

  • XHTML stránka
  • XAML soubor
  • soubory s aplikační logikou

Stručně popsané části si pojďme prohlédnout podrobněji:

XHTML stránka

XHTML stránka je hostitelem SilverLight aplikace. Je zapotřebí si do prohlížece stáhnout a instalovat (podobně jako u Adobe Flashe) plugin. V současnosti jsou podporovány následující browsery:

  • platforma Windows: IE6, IE7, Firefox, (připravuje se podpora Opery)
  • platforma Mac: Safari
  • platforma Linux: připravuje se ve spolupráci s firmou Novell (projekt Mono a MoonLight)

A jak tedy začlenit SilverLight aplikaci do XHTML stránky? Zde je ukázka:

...
<head>
  <title>My Silverlight Application</title>

  <!-- Helper files for initializing and creating the Silverlight plug-in -->
  <script type="text/javascript" src="js/Silverlight.js"></script>
  <script type="text/javascript" src="js/CreateSilverlight.js"></script>

  <!-- Application event-handler functions -->
  <script type="text/javascript" src="js/eventhandlers.js"></script>
</head>
...
<body>
  <div id="slPluginHost" >
    <script type="text/javascript">
      // Create a variable that references the HTML element that hosts the plug-in.
      var parentElement = document.getElementById("slPluginHost");

      // Initialize and create the plug-in.
      createSilverlight();
    </script>
  </div>
</body>
...

Soubor SilverLight.js obsahuje funkce nutné pro přístup k SilverLight komponentě vložené do stránky. Fuknce createSilverLig­ht() může vypadat následovně:

function createSilverlight()
{
    Silverlight.createObject(
        "plugin.xaml",                      // Source property value.
        parentElement,                      // DOM reference to hosting DIV tag.
        "myPlugin",                         // Unique plug-in ID value.
        {                                   // Plug-in properties.
            width:'1024',                   // Width of rectangular region of plug-in in pixels.
            height:'530',                   // Height of rectangular region of plug-in in pixels.
            inplaceInstallPrompt:false,     // Determines whether to display in-place install prompt if invalid version is detected.
            background:'white',             // Background color of plug-in.
            isWindowless:'false',           // Determines whether to display plug-in in windowless mode.
            framerate:'24',                 // MaxFrameRate property value.
            version:'1.0'                   // Silverlight version.
        },
        {
            onError:null,                   // OnError property value -- event-handler function name.
            onLoad:null                     // OnLoad property value -- event-handler function name.
        },
        null,                               // initParams -- user-settable string for information passing.
        null);                              // Context value -- passed to Silverlight.js onLoad event handlers.
}

Anglickým komentářům je myslím dobře rozumět, takže v rychlosti nejdůležitější parametry:

plugin.xaml
název souboru s definicí uživatelského rozhraní
parentElement
odkaz na element v kontextu XHTML stránky, kdo kterého se má SilverLight aplikace přidat
XAML soubor

XAML je značkovací jazyk pro definici uživatelské rozhraní. Jedná se v podstatě o XML soubor.

V XAML souboru se nadefinuje uživatelské rozhraní a handlery událostí.

Aplikační logika

Pokud se bavíme o SilverLight 1.0 tak se aplikační logika omezuje na javascriptové funkce, které jsou ze SilverLight aplikace volány. Tyto funkce mohou být umístěny v externích souborech nebo přímo v XHTML stránce.

V SilverLight 1.1 je situace dočista jiná. Přímo v XAML souboru je možno definovat code begind zdroj. Tím zdrojem může být buď kompilovaný kód nebo skript. Z kompilovaných jazyků bude podporován C# a VB.NET. Jejich běh bude zajišťovat CLR integrovaný v pluginu. Ze skriptovacích jazyků budou podporovány Javascript, Python a Ruby. jejich běh bude zajišťovat DLR. Ani v jednom případě tedy není nutné mít na klientu nainstalovaný MS.NET.

Tohle se mi hodně líbí – možnost definovat aplikační logiku v DLL souboru. Výkon aplikace bude oproti javascriptovému řešení určitě nesrovnatelný (podle slov pana Bechynského je to o 4 řády).

Ještě bych chtěl zmínit, že se připravuje podpora Web Services.

Vývojové nástroje

Základním vývojovým nástrojem je Microsoft Visual Studio 2008. Po stažení příslušného pluginu si můžete přímo založit nový SilverLight projekt.

XAML soubor lze editovat v programu Microsoft Expression Blend 2. V blendu si můžete vektorově nakreslit grafiku a opatřit ji například animátory. Ty se rozdělují podle datového typu animované vlastnosti.

Po založení nového SilverLight 1.1 projektu se vytvoří prádný XAML soubor a rovnou také code behind stránky v jazyce C#.

Další zajímavosti

  • Zaujala mě snadná komunikace mezi XHTML stránkou a SilverLight aplikací. Kupříkladu ze SilverLight aplikace máte pomocí statické property přístup k DOM hostitelské stránky, se kterým můžete dělat do se vám zlíbí.
  • Z kontextu javascriptu v XHTML stránce lze volat třídy a metody v SilverLight aplikaci. Takže například můžete spouštět C# kód v DLL z javascriptu – neuvěřitelné. Přístup je samozřejmě pouze ke spřávně oanotovaným třídám a metodám.
  • Další skvělá věc je, že si mezi SilverLightem a javascriptem ve stránce můžeme posílat i komplexní data – například doménové objekty. Komunikace probíhá pomocí JSONu.
  • Už dnes je SilverLight neporazitelné v oblasti videa. V USA prý existují televize, které svůj program vysílají po internetu a pomocí SilverLightu jej lze přehrávat v HD kvalitě.
  • Velikost pluginu, který je nutno nainstalovat do prohlížeče je ve verze 1.0 asi 1.5 MB, verze 1.1 bude mít asi 4.5 MB.
  • SilverLight má obdobu cookies (SharedObject v případě Flashe) – možno uložit až 4 MB dat.

Závěr

SilverLight (a obzvláště verze 1.1) se mi moc líbí. Je vidět, že se Microsoft rozhlédl kolem sebe (Flash) a udělal svoje řešení, které netrpí některými neduhy konkurence. Uvidíme, jak se v budoucích měsících SilverLight rozšíří. V Čechách jsem o něm zatím skoro neslyšel. Už několik měsíce nesleduju dění kolem JavaFX, ale bojím se, že SilverLight má zatím navrch.

Odkazy

Celý článek 2 komentářů 30. September 2007

Zajímavé linky 10 - Zend Framework in action, TDD, Doctrine

Celý článek 2 komentářů 25. September 2007

Zajímavé linky 9 - JavaFX, Spring Web Flow, JBoss Seam, jQuery 1.2

Celý článek Přidat komentář 12. September 2007

Zend Framework - benchmark pro PHP a Smarty view vrstvu

Jedním z důležitých kriterií při tvorbě webových stránek je rychlost jejich generování. V systémech jako je Java nebo Asp.Net je nám hej – náročné operace (start ORM nástroje atd) si odbydeme při startu aplikace a při obsluhování požadavků se využívá již vytvořených objektů.

Ve skriptovacích jazycích – mám na mysli konkrétně PHP – jsme na tom jinak. Při zpracování požadavku se musí celá naše aplikace postavit a po jejím skončení se zase sbourá. V PHP si nemůžeme dovolit startovat při každém požadavku náročné části systému.

Celý článek 12 komentářů 11. September 2007

Dilbert a Java

Pousmál jsem se nedávno při čtení článku Jak se plánují projekty.

Dnes jsem se v mojí RSS čtečce dopracoval k článku, který informuje o dalším Dilbertovi na programátorské téma – nyní přímo javovské.

Takto tedy vypadá páteční Dilbert:

Celý článek 1 komentář 8. September 2007

DWR - AJAX knihovna pro remotování Java objektů

Pomocí DWR můžete volat Javovský kód přímo z Javascriptu z prostředí internetového prohlížeče na klientském počítači. DWR se samo postará o vykonání asynchronního požadavku na server a převod objektů z javovského světa do javascriptového.

Kromě toho má DWR sadu Utilit, které pomáhají v manipulaci s odesíláním a zpracováním příjímaných dat – plnění selektu daty, přidávání řádků do tabulky atd.

Celý článek 13 komentářů 7. September 2007

Google Reader vs Opera

Právě jsem si přečetl článek Google Reader umí konečně hledat a řekl jsem si, že Google Reader také vyzkouším.

Otevřel jsem si tedy novou záložku v Opeře vyťukal jsem adresu…a…nic. Vše co se zobrazilo bylo pouze logo v levém horním rohu a lišta s navigací v rohu pravém. Toť vše.

Nemám nic proti Googlu a jeho AJAXovým aplikacím ba naopak. O to víc kroutím hlavou na tím, že nedokážou (nebo nechtějí) Google Reader otestovat i pod Operou, která už rozhodně není zcela neznámým browserem. Dle statistik používá Operu 15% návštěvníků mého blogu (pro úplnost Gecko 60%, IE 21%).

Jako RSS klienta používám Operu. Jak jsem napsal jako browser používám Operu. A hádejte jakého mailového klienta používám? Správně – opět Opera.

Okno opery se zobrazením adresářů pošty a RSS (Novinky) v dolní části

Výhody Opery oproti IE a Mozille spatřuji v následujícím:

  • rychlost zobrazování stránek
  • integrace browseru, rss čtečky, mailového klienta do jednoho programu
  • mouse gestures
  • vymakané klávesové zkratky skoro na všechno

Celý článek 2 komentářů 6. September 2007


Kalendář

September 2007
M T W T F S S
« Aug   Oct »
 12
3456789
10111213141516
17181920212223
24252627282930

Články podle měsíců

Kategorie

Locations of visitors to this page