Adobe Flex / Air versus Microsoft SilverLight
Minulý týden jsem absolvoval školení v Adobe ČR pro Adobe Flex - programovací jazyk původně navržený firmou Macromedia a využívající jako svůj runtime běžně dostupný Flash přehrávač.
Musím říct, že jsem byl k Flexu nejdříve velice skeptický. Co si budeme nalhávat, Flash přehrávač je pro většinu lidí synonymem otravným reklam a dokonale zbytečných animací, kde hlavním prvkem animace je tlačítko "skip intro". Pokud navíc někdo dávno zkoušel tragický ActionScript 1.0 ve Flashi a jeho "programování" v keyframech, nebude mít asi zájem ani o Flex. Ale měl by mít!
On je totiž Flex a ActionScript 3.0 dnes úplně někde jinde. Líbí se mi.
ActionScript 3.0 možná není tak dokonalé řešení jako možnost výběru z C#, Visual Basicu, IronPython či IronRuby v SilverLightu 2.0, ale je to přesto moderní objektový jazyk s většinou vymožeností, které znáte z C# či Javy.
Rovněž Eclipse (na kterém je postaven vývojový nástroj pro Flex nazvaný Flex Builder 3) je velice slušné vývojové prostředí, které příliš nezaostává za etalonem, tedy Visual Studio 2008. Visual Studio 2008 je sice stále lepší nástroj pro vývoj (s integrací na Blend 2.5), ale s Flex Builderem 3 se dá pracovat také velice dobře.
Flex, tedy kombinace MXML a ActionScriptu 3.0, si získal mé sympatie.
Flex s MXML a C# s XAML mají hodně společného
Obě technologie Microsoftu a Adobe nejsou tak odlišné pro vývojáře, jak by se na první pohled mohlo zdát. Například takto zapíšete nové tlačítko ve Flexu se zavoláním "kliknuto" události:
<mx:Button id="jméno" click="kliknuto(event)" />
A takto v SilverLightu:
<Button x:Name="jméno" Click="kliknuto" />
A takto implementujete danou metodu v ActionScriptu 3.0:
private function kliknuto(event: MouseEvent):void { // do your stuff }
A takto v SilverLightu:
private void kliknuto(object sender, RoutedEventArgs e) { // do your stuff }
Zásadní odlišnosti? Naopak, základní věci jsou v C# a XAML versus ActionScript 3.0 a MXML až pozoruhodně podobné.
Základní výhody SilverLightu
Základní výhodou SilverLightu je dle mého názoru celá enterprise strategie Microsoftu - provázanost SilverLightu na ASP.NET webové služby, používání známých technologií (subset WPF), skvělý programovací jazyk C#, nativní podpora pro multi-threading na klientovi (což Flash player neumí), opravdu malý runtime výsledné aplikace a vysoký výkon.
Flash přehrávač, jako runtime pro Flex, je výrazně pomalejší než SilverLight a i triviální výsledné Flex aplikace jsou objemově zbytečně velké. .NET se zde vyznačuje malou a rychlou aplikací. Otázkou je, v kolika aplikacích (na back-endu) vám to bude vadit.
SilverLight má také lepší nativní možnosti pro layout aplikací, třeba <Grid /> je velice mocný, existuje podpora pro ZIndex (Flex to neumí, později nakreslený objekt je u něj vždy nahoře), nativní je podpora pro VC-1.
Základní výhody Adobe Flex
Hlavní výhody Adobe Flex a runtime pro desktop (Adobe Air) jsou zejména mnohem větší rozšířenost toho prvního (Flash) pluginu, který má instalováno přes 95% všech PC, lepší je podpora pro PHP (zejména díky otevření AMF binárního formátu a jeho kvalitní nativní podpora v Zend Frameworku pro PHP), plus podpora pro přístup k lokálnímu filesystému, tedy bez omezení bezpečnostního kontextu prohlížeče.
Pokud je váš back-end PHP, bude pro vás (přes všechno uvedené dříve) Flex lepší volba. Jeho webservices a předávání celých objektů mezi klientem a serverem s PHP je díky AMF vyloženě půvabné.
Rovněž pokud potřebujete navrhnout aplikaci, která bude přistupovat k lokálnímu filesystému (třeba k lokálnímu adresáři fotek produktů), kdy tuto databázi fotek Air resampluje, doplní k nim popisek a přes webovou službu je nahraje na web s PHP, bude lepší použít Flex.
Microsoft si zde zatím neuvědomil, že by bylo dobré SilverLight "desktopový" runtime vyvázat z bezpečnostních omezení prohlížeče a podpora pro desktop není zdaleka plnohodnotná.
Na jednu stranu Microsoft chápu, na desktopové aplikace máte používat plné WPF. Na druhou stranu, možnost naučit se jednu (snadnou) technologii a tu používat na webu i pro "plné" desktopové aplikace je nutné u Flexu / Adobe Air považovat za významnou výhodu.
Co jsem si zvolil já?
Díky této jedné kritické výhodě (přístup k lokálním souborům u Adobe Air) plus snadnějšímu propojení Adobe Air aplikace s PHP mám jasno i v tom, v čem budeme vyvíjet back-end pro naše webové aplikace - Flex.
SilverLight je skvělé řešení, ale bohužel se ani ve třetí verzi nevymanil z bezpečnostního rámce a přístupových práv prohlížeče a tím se limituje jeho možné použití (pro naše potřeby).
Dobrý článek, díky za něj pane Huláne. Měl bych jen dotaz na těch 95% uživatelů s nainstalovaným flashem: všech těchto 95% procent zvládne Flex a ActionScript 3.0? Díky
[1] Z Flex Builderu vyleze normální swfko, takže odpověď zní ano :)
[2] SWFko se váže na minimální verzi Flash Playeru, v tomto případě je potřeba verze 9 nebo 10. Těch 95% (dle jiných statistik až 98%) má minimálně verzi 9. Ale pokud člověk dělá aplikaci pro back-end eshopu, tak je verze lhostejná, redaktor si nainstaluje co je potřeba. Na front-end bych nic z toho nepoužil (pokud se nejedná o video či deep zoom v SL).
Ne zcela presne k tematu, ale pokud nekdo chce, tak pekne napsane srovnani Adobe Flash a Microsoft Silverlight prineslo SM. Clanek je anglicky.
http://www.smashingmagazine.com/2009/05/09/flash-vs-silverlight-what-suits-your-needs-best/...
[4] to odkazované srovnání je nesmysl, jeho autor vůbec nezná Silverlight, Mono, Air..
Co se týče zrovna toho nahrávání fotek na server, pokud se nemýlím tak v SL to jde. Dokonce přímo na to je knihovna - resamplování fotek, protože to SL jako subset neumí. A k lokálnímu FS se dá přistoupit pomocí OpenFileDialog ;)
[6] pomocí OpenFileDialog jo, ale to nestačí. Ber si, že máš třeba 300 fotek ze závodu, potřebuješ je projít a jen některé označit a nahrát na server. Dělat 300x File Open je nesmysl (na 3GB fotek). Schůdné je pouze to, že to z foťáku nakopíruješ do jednoho adresáře a ten se automaticky projde, resampluje, atd. Obecně, plný přístup k lokálnímu filesystému -je- významná výhoda.
To samé platí pro použití na eshopu a fotky produktů. Ale uznávám, že to je docela specifická potřeba. Bohužel, pro naše použití technologie klíčová.
[7] Souhlasím, chtělo by to více nástrojů pro FS. Nicméně toto taky můžeš vyřešit. Tím, že si všech 300 fotek označíš (OpenFileDialog tě nechá vybrat více souborů) a nahraješ do SL, a pak vytoříš interface pro práci s nimi, některé odzačíš, některé otočíš.. pak pošleš.. Co jsem viděl, tak to je celkem zdlouhavé – náročné na klientovo PC. Ale nemám porovnání jak by to zvládal Flex.
[5] No srovnani asi nebylo psane pro lidi vasich kapacit, spis obecne a hlavne z pohledu trochu jineho uzivatele, je fakt ze na existenci AIR se ponekud zapomelo. Jinak jeste jeden odkaz, zvlast doporucuju zarolovat diskuzi dolu na proskrtanou verzi:
http://silverlight.net/forums/t/3015.aspx...
Osobne si myslim, ze Silverlight ma mnohem vetsi budoucnost, a to vubec nechci schazovat reseni Adobe (ktere je nyni tak nejak vsepokryvajici). Microsoft je prilis velky hrac a i na vyvoji Silverlightu (respektive celeho MVS) je hezky videt jak do toho chlapci dupou.
[9] to je také srovnání snad Silverlight 1, jenže verze Silverlight 3 BETA je úplně někde jinde, v podstatě vše jí vytýkané implementuje.
Osobně vidím pro SL velkou budoucnost, ale pro naše použití PHP na serveru + lokální filesystém je v tuto chvíli lepší Flex (a to říkám jako velký příznivce Microsoftu).
Pokud si dobre pamatuju tak podle prvnich informaci byl mel SL3 konecne podporovat nativne Direct3D. Myslim, ze diky tomu by se mohl koncept webu posunout zase o par skoku dale.
[9] Ano, chlapci v MS do toho dupou, jelikož chtějí dohnat a předehnat Adobe. No a chlapci v Adobe do toho taky dupou - protože se bojí Silverlightu. V posledních 2-3 letech do toho dupou tak jako nikdy předtím v desetileté historii Flashe. Je to ideální stav a učebnicový příklad blahodárného působení konkurence, takže jen tak dál. Pravděpodobně budou ještě celé roky až desetiletí existovat vedle sebe obě technologie. Není důvod, aby jeden vyhrál, protože uživatel bude mít v browseru obě dvě (a často ani nebude vědět, ve které z nich je vytvořena aplikace, na kterou zrovna kouká).
Pro všechny zajímající se o svět Flex bych doporučil AIR aplikaci Tour de Flex (http://www.adobe.com/devnet/flex/tourdeflex/...), která ukazuje veškeré vymoženosti Flexu.