Platforma aplikacyjna Microsoft.NETPełne spektrum możliwościWspólna architektura i narzędziaWdrażanieProjektowanieProgramowaniePrzeglądarkaAplikacja kliencka
4.
FilozofiaCykl produkcji 9-12miesięcy (zwykle 2-3 wersje nieoficjalne)Ścisła współpraca ze społecznością (http://dotnet.uservoice.com/)Większość projektów ma charakter otwarty (np. Silverlight Control Toolkit)Niezależność (przeglądarka, system operacyjny, technologia serwerowa, urządzenie)
Warsztat pracy cd.VisualStudio (może być Web Developer Express) lub Eclipse Tools for Microsoft SilverlightSilverlightruntimeSilverlight SDKSilverlight Tools for Visual Studio 2010Expression Blend 4 Beta
8.
Warsztat pracy cd.Możliwośćtworzenia aplikacji Silverlight w środowisku EclipseDziała również pod Mac OS XOpen sourceRozwijane zewnętrznymi siłami przy wsparciu MShttp://www.eclipse4sl.org/
9.
Święty Graal programistów<ButtonWidth="100">OK <Button.Background>LightBlue </Button.Background></Button>Button b1 = new Button();b1.Content = "OK";b1.Background = newSolidColorBrush (Colors.LightBlue);b1.Width = 100;Dim b1 As New Buttonb1.Content = "OK"b1.Background = New _SolidColorBrush _ (Colors.LightBlue)b1.Width = 100Jeden sposób definiowania wyglądu aplikacji
GrafikaWiększość elementów bazujena wektorach:<Rectangle /><Ellipse /><Line /><Polygon /><PolyLine /><Path />Grafika rastrowa: PNG i JPGŁatwy import z zewnętrznych narzędzi (gotowe wsparcie dla AI i PS)Wsparcie dla pixelshaderówMożliwość operacji bezpośrednio na bitmapachTransformacje
KontrolkiKomplet standardowych kontrolekna pokładzie (TextBox, TextBlock, CheckBox, Button itd.)Dodatkowe kontrolki np. z Silverlight Control Toolkit (wykresy, kalendarze itd.)
Sample DataPrototypy zwyklewymagają wizualizacji informacjiSample Data – szybkie modelowanie przykładowych danych (generowanych w locie)Pełna kontrola nad zawartością i wyglądemŁatwa migracja do docelowych źródeł danych
WyglądAplikowanie styli in-lineSłaboskalowalne przy dużych projektachSzablony / tematy (Resources)Page.xaml – ograniczone do oknaApp.xamlMożliwość tworzenia skórek tematycznych (np. przechowywanych w osobnych plikach XAML niezależnie od aplikacji)Kaskadowość, dziedziczenieZmiany w trakcie działania aplikacji
Visual State Manager(VSM)Warstwa abstrakcji pozwalająca zarządzać wyglądem z perspektywy stanów kontrolkiNp. MouseOver, MouseDown, itp.Możliwość definiowania stylu kontrolki w poszczególnych stanachMożliwość definiowania charakteru przejść pomiędzy stanami
Komunikacja przez HTTP(s)Bazujena przeglądarce internetowej (ciasteczka, nagłówki)Cross-domainPlik policy (silverlight -> flash policy)Tworzenie żądaniaUri dataLocation = new Uri("http://localhost/oceny.xml");BrowserHttpWebRequest request = new BrowserHttpWebRequest(dataLocation);HttpWebResponse response = (HttpWebResponse)request.GetResponse();Przetwarzanie odpowiedzi serweraStreamReaderresponseReader = new StreamReader(response.GetResponseStream());string RawResponse = responseReader.ReadToEnd();
34.
Usługi Web ServicesKlasyproxy generowane przez Visual Studio (add service reference)JSON, SOAP, REST/POX, itp.Windows Communication Foundation (WCF)Metoda usługi sieciowej[WebMethod]public List<Transaction> GetTransactionList() { ... }Wywoływanie usługi z poziomu klientaproxy = new BankProxy();transactionList = proxy.GetTransactionList().ToList();
35.
Przetwarzanie danychLanguageIntegratedQuerySkładnia T-SQLzintegrowana z językiem C#Weryfikacja na etapie kompilacjiDla XML lub dowolnych innych kolekcji (IEnumerable)varlistaObiektow= from oin DowolnaKolekcjawhere (o.Id>10) orderbyo.Namedescending select o;
36.
… z perspektywyPHPDowolny interfejs usługowy (SOAP, XML-RPC, JSON)Dla super leniwych, gotowe snippety do osadzania SL w stronach PHP (np. renderSilverlightControl($height, $width, $source)displaySilverlightVideo($source, $height, $width)http://php.miniprojects.org/phpsilverlight/Alternatywnie np. WebORB for PHP(http://www.themidnightcoders.com/products/weborb-for-php/overview.html)
37.
BezpieczeństwoAplikacje Silverlight działająw środowisku chronionym – sandboxIsolatedstorage – brak bezpośredniego dostępu do zasobów systemowychKawałek przestrzeni pozwalającej na przechowywanie danych w strukturze słownikowej (klucz-wartość) lub struktury katalogi/plikiDostępna w kontekście jednego użytkownika i jednej aplikacjiDomyślna wielkość – 1MB (z możliwością powiększenia)Przechowywanie danych tekstowych i binarnychUżytkownik ma kontrolę nad isolatedstorage
38.
Integracja z OSOperacjeI/O:File (Create, Exists, Delete, OpenDialog, SaveDialog)Directory (Exists, Create, Delete, GetFileNames)Quota (GetCurrentQuota, IncreaseQuotaTo, GetAvailableSpace)Scenariusze offlineWystarczy zmiana manifestu aplikacji!Wykrywanie podłączenia do sieci Integracja z powłoką systemową (menu start, pulpit)Wykorzystywanie właściwości Win7 (multitouch, integracja z GPS)Elewacja uprawnień (dostęp do mikrofonu, kamery)
39.
Integracja HTML DOM- SilverlightSystem.Windows.BrowserHtmlPage.WindowjestScriptableObjectHtmlDocumentHtmlElementHtmlObject
40.
Dostęp do HTMLDOM z kodu zarządzanegoNowa przestrzeń nazwusingSystem.Windows.Browser;Statyczna klasa HtmlPage– punkt dostępowyHtmlPage.Navigate("http://www.microsoft.com");String server = HtmlPage.DocumentUri.Host;Podpinamy zdarzenia, wywołujemy metody, dostajemy się do właściwościHtmlElementmyButton =HtmlPage.Document.GetElementByID("myButtonID");myButton.AttachEvent("onclick", newEventHandler(this.myButtonClicked));privatevoidmyButtonClicked(object sender, EventArgs e) { ... }
41.
Dostęp do koduzarządzanego z JavaScriptOznacz właściwość, zdarzenie lub metodę jako [Scriptable][Scriptable]public void Search(string Name) { ... }Zarejestruj „punkt dostępowy” do obiektuWebApplication.Current.RegisterScriptableObject ("EntryPoint", this);Wykorzystaj kod zarządzany z poziomu JavaScriptvar control = document.getElementById("SilverlightControl");control.Content.EntryPoint.Search(input.value);
Smaczki: SketchFlowExpression Blend pozwala na szybkie, wizualne prototypowanie aplikacjiDziała niezależnie od typu aplikacji: WPF, SilverlightGotowy player pozwalający na interaktywną prezentację u klientaStartNavigationMain MenuData Entry
Smaczki: Deep ZoomPłynneprzeglądanie i powiększanie dowolnej wielkości obrazówTylko dane, które aktualnie ogląda użytkownikSymuluje grafikę wektorową
46.
Deep ZoomNarzędzie dzieliobraz na fragmenty 256 x 256pixNastępnie generuje zdjęcia niższej rozdzielczości
47.
Deep Zoom –jak działa?Obrazy najniższej rozdzielczości wyświetlane w pierwszej kolejnościPo pobraniu obrazów lepszej jakości, następuje płynne podmienianie
48.
Deep Zoom –jak działa?Obrazy najniższej rozdzielczości wyświetlane w pierwszej kolejnościPo pobraniu obrazów lepszej jakości, następuje płynne podmienianie