niedziela, 8 maja 2011

Silverlight 5 Beta - runda pierwsza!

Zgodnie z zapowiedzią z poprzedniego posta opublikowałem swoją rozpiskę o Silverlight 5. Umieściłem ją w całej okazałości na swoim drugim blogu, który postanowiłem po pewnej przerwie reaktywować. Rozpiska w sumie okazała więcej niż zwykłą rozpiską, bo obfituje w pogrupowane tematycznie linki oraz zawiera sample, jakie sobie potworzyłem, by wypróbować różne nowości i czegoś przy tej okazji się nauczyć (w kilku przypadkach odstąpiłem od tworzenia dysponując niezłymi przykładami z sieci). Uzyskałem całkiem spore pokrycie, choć takie grube tematy jak grafika 3D czy PivotViewer zostawiłem sobie na inną okazję.

Skoro już się naprodukowałem o sporej części SL5 w ramach Reactivation!!! New features in Silverlight 5 Beta + Links + Samples - Part I (co prawda nie opisałem tego wszystkiego, co wyczytałem z tych linków, ale wtedy to mogłaby powstać już z tego książka albo co najmniej kilka artykułów), tutaj nie mam ambicji pisania o wszystkim i skupię się na kilku, najbardziej kręcących mnie przykładach.

Zacznijmy od multimediów. W przypadku SoundEffect na warsztat wziąłem swój wcześniejszy przykład z Windows Phone 7. Dynamiczna korekta dźwięku nadal działa! Nawet lepiej, bo nie muszę jawnie emulować pętli gry.

SoundEffect_TrickPlay

Na drugi rzut poszedł Trick Play. Na załączonym zdjęciu odtwarzam sobie nagranie video ponad 2 razy szybciej niż normalnie, można też zwalniać. Jedynym mankamentem jest to, że w Becie wyłącza się audio przy szybkości odtwarzania innej niż 1.

No i teraz pora na zaufane aplikacje. W przypadku hostowania w przeglądarce jest to trochę przekombinowane, bo aplikacja i tak musi być skonfigurowana jako … out of browser (jeśli chcemy możemy ukryć opcję instalacji z prawego menu). Inna sprawa, że w Becie ta funkcjonalność działa wyłącznie w Windows. Komunikat pokazywany przez kontrolkę WebBrowser sugeruje, że potrzebujemy przeglądarki Internet Explorer.

Jeśli uruchomimy aplikację za pomocą Visual Studio, możemy się już cieszyć rozszerzoną funkcjonalnością w przeglądarce. Ale hola, nie o to chodzi!  W typowych dla  klienta warunkach aplikacja nie jest hostowana na adresie localhost czy 127.0.0.1 i wtedy możemy zobaczyć to, co na poniższym screenshocie.

Trusted_1_NotElevated - Copy

Aby cieszyć się hostowanym HTML w aplikacji Silverlight w przeglądarce, musi być ona podpisana poprawnym certyfikatem, a w rejestrze związanym z Silverlight musi być ustawiony wpis zezwalający na uruchamianie aplikacji w przeglądarce. Mike Taulty wyczerpująco krok po kroku opisał wszystkie czynności na swoim blogu. Nie jest to trudne do skonfigurowania i aplikacja działa z większymi uprawnieniami. Pewną ciekawostką jest, że – przynajmniej obecnie – okienko notyfikacji działa także wtedy, kiedy aplikacja wykonuje się w przeglądarce!

Trusted_1_Elevated3 - Copy

Aha, uporządkujmy jeszcze jedną sprawę. Zaufane aplikacje działające w przeglądarce nie są dokładnym odpowiednikiem zaufanych działających poza przeglądarką. Po pierwsze są warunkiem na hosting HTML-a (poza przeglądarką nie potrzebujemy do tego większych uprawnień), nie wspierają funkcjonalności typowych dla aplikacji out of browser (np. nie możemy używać klasy Window). Rzecz druga – przeglądarka może ograniczać rzeczywiste uprawnienia naszej zaufanej aplikacji (np. Internet Explorer w trybie protected). To proces przeglądarki ostatecznie hostuje naszą aplikację.

Pokazywany wyżej przykład zbudowałem na bazie swojego przykładu z czasów Silverlighta 4 (od tamtego czasu YouTube wprowadziło restrykcje i zastąpiłem je Channel 9). Z tamtych czasów pamiętam też bardzo fajną aplikację Microsoftu z puzzlami. Pozwoliłem ją sobie przerobić na nowszą wersję Silverlight, by działała także w przeglądarce.     

Puzzle - Copy

Zaufane aplikacje w Silverlight 5 mają nieograniczony dostęp do całego systemu plików, także w przeglądarce. W Silverlight 4 poza przeglądarką … też było to możliwe, tylko trzeba było “natrudzić się” z użyciem komponentów COM.

Do sprawdzenia tej funkcjonalności posłużyła mi przeróbka mojego drugiego przykładu z czasów Silverlight 4. Obrazki teraz są wczytywane z dowolnej lokalizacji wpisywanej w polu tekstowym. Jako ciekawostkę mogę powiedzieć, że przypadkiem natrafiłem na swoim laptopie na zdjęcia, które robiłem 2 lata temu przy okazji mojej wyprawy na spotkanie grupy w Katowicach i to one znalazły się na poniższym screenshocie.

Trusted_2 - Copy

Na koniec zostawiłem rzecz – moim zdaniem - wielce efektowną w porównaniu do Silverlight 4. Ostatnio omawiany przeze mnie przykład przerobiłem na aplikację z wieloma natywnymi oknami (zawartość każdej z zakładek trafiła na oddzielne okno). Aplikacje w Silverlight mogą więc coraz więcej! Warto to podkreślać, bo nadal dla wielu osób Silverlight kojarzy się z wtyczką do przeglądarki i substytutem HTML. Czy w HTML5 możemy pisać takie aplikacje? 

MultipleWindows

To nie wszystko! Postanowiłem iść na całość i opracowałem wersję z własnoręcznie ostylowanymi oknami. Wzór okna wziąłem z przykładu z czasów Silverlight 4, ale przepisałem do na bardziej uniwersalny sposób, by współdzielić kontrolkę pustego okna pomiędzy wszystkimi okienkami. Taka aplikacja najlepiej pokazuje różnicę między HTML a Silverlight.

MultipleWindowsChrome

Kończę na dzisiaj pisanie, bo … zaczynam prace nad materiałem na kolejnego posta.

Brak komentarzy: