SlideShare une entreprise Scribd logo
1  sur  48
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych? Michał Żyliński (Michal.Zylinski@microsoft.com, http://blogs.msdn.com/michalz)
Agenda Silverlight – wprowadzenie Pierwsza aplikacja na wylot Grafika i animacja Biznes Smaczki
Platforma aplikacyjna Microsoft .NETPełne spektrum możliwości Wspólna architektura i narzędzia Wdrażanie Projektowanie Programowanie Przeglądarka Aplikacja kliencka
Filozofia Cykl produkcji 9-12 miesię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)
Architektura
Warsztat pracy Web Design Blend Encoder
Warsztat pracy cd. Visual Studio (może być Web Developer  Express) lub Eclipse Tools for Microsoft Silverlight Silverlightruntime Silverlight SDK Silverlight Tools for Visual Studio 2010 Expression Blend 4 Beta
Warsztat pracy cd. Możliwość tworzenia aplikacji Silverlight w środowisku Eclipse Działa również pod Mac OS X Open source Rozwijane zewnętrznymi siłami przy wsparciu MS http://www.eclipse4sl.org/
Święty Graal programistów <Button Width="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 Button b1.Content = "OK" b1.Background = New _SolidColorBrush _      (Colors.LightBlue) b1.Width = 100 ,[object Object]
… pozwalający na prosty, deklaratywny sposób opisu
Separacja zasobów od kodu
Prosta linia podziału pomiędzy projektantami a programistami
Łatwy w przetwarzaniu i generowaniu przez narzędzia,[object Object]
Ciekawsze elementy XAML, c.d. Content attribute <TextBlock Text=„Username:” /> Content element <TextBlock> Username: </TextBlock> Attached property 	<TextBlock Grid.Column=„0” Grid.Row=„1” />
Demo {HelloWorld} i wszystko jasne
Grafika Większość elementów bazuje na 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ów Możliwość operacji bezpośrednio na bitmapach Transformacje
Pozycjonowanie elementów Właściwości Margin, Padding, itd. Gotowe kontenery Canvas Grid StackPanel WrapPanel Border CustomLayout
Animacje Perspektywa obiektowa, każda właściwość wizualna może podlegać zmianom w czasie Storyboards oparte o klatki kluczowe <DoubleAnimation  Duration="0:0:10"  Storyboard.TargetName="myTranslate"  Storyboard.TargetProperty="X"  To="700"  AutoReverse="True"  RepeatBehavior="Forever"/>
Demo Grafika i animacja
Kontrolki Komplet standardowych kontrolek na pokładzie (TextBox, TextBlock, CheckBox, Button itd.) Dodatkowe kontrolki np. z Silverlight Control Toolkit (wykresy, kalendarze itd.)
Praca z danymi Binding OneWay OneTime TwoWay Bindowanie 2 kontrolek DataContext ItemSource
Binding do 1 wartości (XAML) <Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Center" > <TextBoxVerticalAlignment="Top" IsReadOnly="True" Margin="5" TextWrapping="Wrap" Height="50" Width="200" Text="{BindingMode=OneWay}" x:Name="textBox1"/> </Grid>
Binding do 1 wartości (CS) // Obiekt biznesowy public classRecording { public Recording() { }     public Recording(string artistName, string cdName, DateTime release)     { Artist = artistName; Name = cdName; ReleaseDate = release;     }     public string Artist { get; set; }     public string Name { get; set; }     public DateTimeReleaseDate { get; set; } // OverridetheToStringmethod. public overridestringToString()     {                     return Name + " by " + Artist + ", Released: " + ReleaseDate.ToShortDateString();     }   } // Binding textBox1.DataContext = new Recording("Chris Sells", "Chris Sells Live", newDateTime(2008, 2, 5));
Binding do kolekcji <StackPanel x:Name="LayoutRoot" Background="White"> <ComboBox x:Name="ComboBox1" Margin="5" Height="40" Width="300" ItemsSource="{BindingMode=OneWay}" /> </StackPanel>
Sample Data Prototypy zwykle wymagają wizualizacji informacji Sample 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
DEMO Binding i Sample Data
Wygląd Aplikowanie styli in-line Słabo skalowalne przy dużych projektach Szablony / tematy (Resources) Page.xaml – ograniczone do okna App.xaml Możliwość tworzenia skórek tematycznych (np. przechowywanych w osobnych plikach XAML niezależnie od aplikacji) Kaskadowość, dziedziczenie Zmiany w trakcie działania aplikacji
Skórki - przykład
DEMO Modyfikacja wyglądu kontrolek
Visual State Manager (VSM) Warstwa abstrakcji pozwalająca zarządzać wyglądem z perspektywy stanów kontrolki Np. MouseOver, MouseDown, itp. Możliwość definiowania stylu kontrolki w poszczególnych stanach Możliwość definiowania charakteru przejść pomiędzy stanami
DEMO Visual State Manager
Komunikacja Usługi sieciowe Generacja silnie typowanych klas proxy Alternatywnie: XML-RPC (http://code.google.com/p/xmlrpc-silverlight) Komunikacja request/response WebClient HTTPWebRequest Sockety TCP/IP Asynchroniczna komunikacja Cross-domain (wymagany plik policy)
Komunikacja przez HTTP(s) Bazuje na przeglądarce internetowej (ciasteczka, nagłówki) Cross-domain Plik policy (silverlight -> flash policy) Tworzenie żądania Uri dataLocation = new Uri("http://localhost/oceny.xml"); BrowserHttpWebRequest request =                       new BrowserHttpWebRequest(dataLocation); HttpWebResponse response =                       (HttpWebResponse)request.GetResponse(); Przetwarzanie odpowiedzi serwera StreamReaderresponseReader = new 	StreamReader(response.GetResponseStream()); string RawResponse = responseReader.ReadToEnd();
Usługi Web Services Klasy proxy 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 klienta proxy = new BankProxy(); transactionList = proxy.GetTransactionList().ToList();
Przetwarzanie danych LanguageIntegratedQuery Składnia T-SQL zintegrowana z językiem C# Weryfikacja na etapie kompilacji Dla XML lub dowolnych innych kolekcji (IEnumerable) varlistaObiektow= from oin DowolnaKolekcjawhere (o.Id>10) orderbyo.Namedescending select o;
… z perspektywy PHP Dowolny 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)
Bezpieczeństwo Aplikacje Silverlight działają w środowisku chronionym – sandbox Isolatedstorage – brak bezpośredniego dostępu do zasobów systemowych Kawałek przestrzeni pozwalającej na przechowywanie danych w strukturze słownikowej (klucz-wartość) lub struktury katalogi/pliki Dostępna w kontekście jednego użytkownika i jednej aplikacji Domyślna wielkość – 1MB (z możliwością powiększenia) Przechowywanie danych tekstowych i binarnych Użytkownik ma kontrolę nad isolatedstorage
Integracja z OS Operacje I/O: File (Create, Exists, Delete, OpenDialog, SaveDialog) Directory (Exists, Create, Delete, GetFileNames) Quota (GetCurrentQuota, IncreaseQuotaTo, GetAvailableSpace) Scenariusze offline Wystarczy 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)
Integracja HTML DOM - SilverlightSystem.Windows.Browser HtmlPage. Window jest ScriptableObject HtmlDocument HtmlElement HtmlObject
Dostęp do HTML DOM z kodu zarządzanego Nowa przestrzeń nazw usingSystem.Windows.Browser; Statyczna klasa HtmlPage– punkt dostępowy HtmlPage.Navigate("http://www.microsoft.com"); String server = HtmlPage.DocumentUri.Host; Podpinamy zdarzenia, wywołujemy metody, dostajemy się do właściwości HtmlElementmyButton = HtmlPage.Document.GetElementByID("myButtonID"); myButton.AttachEvent("onclick", new EventHandler(this.myButtonClicked)); privatevoidmyButtonClicked(object sender, EventArgs e)   { ... }
Dostęp do kodu zarządzanego z JavaScript Oznacz właściwość, zdarzenie lub metodę jako [Scriptable] [Scriptable] public void Search(string Name) { ... } Zarejestruj „punkt dostępowy” do obiektu WebApplication.Current.RegisterScriptableObject                                         ("EntryPoint", this); Wykorzystaj kod zarządzany z poziomu JavaScript var control = document.getElementById("SilverlightControl"); control.Content.EntryPoint.Search(input.value);
Smaczki: behaviors Możliwość stworzenia własnych, powtarzalnych wzorców zachowań Niezależne od obiektów/kontrolek Znacznie ułatwia komunikację projektant <-> programista 2 typy: Akcje (kiedy …. zrób … ) Zachowania  Behave
Smaczki: SketchFlow Expression Blend  pozwala na szybkie, wizualne prototypowanie aplikacji Działa niezależnie od typu aplikacji: WPF, Silverlight Gotowy player pozwalający na interaktywną prezentację u klienta Start Navigation Main Menu Data Entry
Demo Sketchflow
Smaczki: Deep Zoom Płynne przeglądanie i powiększanie dowolnej wielkości obrazów Tylko dane, które aktualnie ogląda użytkownik Symuluje grafikę wektorową
Deep Zoom Narzędzie dzieli obraz na fragmenty 256 x 256pix Następnie generuje zdjęcia niższej rozdzielczości
Deep Zoom – jak działa? Obrazy najniższej rozdzielczości wyświetlane w pierwszej kolejności Po pobraniu obrazów lepszej jakości, następuje płynne podmienianie
Deep Zoom – jak działa? Obrazy najniższej rozdzielczości wyświetlane w pierwszej kolejności Po pobraniu obrazów lepszej jakości, następuje płynne podmienianie

Contenu connexe

En vedette

En vedette (9)

StorSimple a może do chmury
StorSimple a może do chmuryStorSimple a może do chmury
StorSimple a może do chmury
 
Zmierzch epoki łowcy
Zmierzch epoki łowcyZmierzch epoki łowcy
Zmierzch epoki łowcy
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
Galaxy of bits
Galaxy of bitsGalaxy of bits
Galaxy of bits
 
Arvore de causas
Arvore de causasArvore de causas
Arvore de causas
 
Cipa Arvore De Causas
Cipa   Arvore De CausasCipa   Arvore De Causas
Cipa Arvore De Causas
 
Procedimento de análise de acidentes e incidentes
Procedimento de análise de acidentes e incidentesProcedimento de análise de acidentes e incidentes
Procedimento de análise de acidentes e incidentes
 
Investigação e analise de acidentes
Investigação e analise de acidentesInvestigação e analise de acidentes
Investigação e analise de acidentes
 
Análise acidentes
Análise acidentes Análise acidentes
Análise acidentes
 

Similaire à Silverlight i PHP

Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalGrzegorz Bartman
 
Seminarium .Net CF 2004
Seminarium .Net CF 2004Seminarium .Net CF 2004
Seminarium .Net CF 2004Tomasz Cieplak
 
Nowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji WebowychNowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji WebowychMarcin Daczkowski
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
Seminarium - Tworzenie Aplikacji Mobilnych 2004
Seminarium - Tworzenie Aplikacji Mobilnych 2004Seminarium - Tworzenie Aplikacji Mobilnych 2004
Seminarium - Tworzenie Aplikacji Mobilnych 2004Tomasz Cieplak
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developeraTomasz Borowski
 
Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8Bartlomiej Zass
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztatyintive
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Tomasz Cieplak
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Mts 2013 tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...
Mts 2013   tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...Mts 2013   tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...
Mts 2013 tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...Tomasz Kopacz
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationMaciej Zbrzezny
 

Similaire à Silverlight i PHP (20)

Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią Drupal
 
Seminarium .Net CF 2004
Seminarium .Net CF 2004Seminarium .Net CF 2004
Seminarium .Net CF 2004
 
Nowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji WebowychNowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji Webowych
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
 
Html5 i css3
Html5 i css3Html5 i css3
Html5 i css3
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
Seminarium - Tworzenie Aplikacji Mobilnych 2004
Seminarium - Tworzenie Aplikacji Mobilnych 2004Seminarium - Tworzenie Aplikacji Mobilnych 2004
Seminarium - Tworzenie Aplikacji Mobilnych 2004
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Mts 2013 tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...
Mts 2013   tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...Mts 2013   tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...
Mts 2013 tomasz kopacz - wydajność aplikacji dla windows 8 - jak ją mierzyć...
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 

Plus de Michal Zylinski

iFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyiFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyMichal Zylinski
 
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.Michal Zylinski
 
Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?Michal Zylinski
 
Inicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa EuropejskiegoInicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa EuropejskiegoMichal Zylinski
 
Zdobywanie serca klientów
Zdobywanie serca klientówZdobywanie serca klientów
Zdobywanie serca klientówMichal Zylinski
 
Twój własny kawałek YouTube
Twój własny kawałek YouTubeTwój własny kawałek YouTube
Twój własny kawałek YouTubeMichal Zylinski
 
Silverlight z bliska i na wylot
Silverlight z bliska i na wylotSilverlight z bliska i na wylot
Silverlight z bliska i na wylotMichal Zylinski
 
Nowości W Silverlight 3
Nowości W Silverlight 3Nowości W Silverlight 3
Nowości W Silverlight 3Michal Zylinski
 
Microsoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja AplikacjiMicrosoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja AplikacjiMichal Zylinski
 

Plus de Michal Zylinski (15)

Python i Microsoft
Python i MicrosoftPython i Microsoft
Python i Microsoft
 
iFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyiFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumenty
 
LuceoS
LuceoSLuceoS
LuceoS
 
Domisoft
DomisoftDomisoft
Domisoft
 
User-centered design
User-centered designUser-centered design
User-centered design
 
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
 
Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?
 
Biz Spark i co dalej
Biz Spark i co dalejBiz Spark i co dalej
Biz Spark i co dalej
 
Inicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa EuropejskiegoInicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa Europejskiego
 
Zdobywanie serca klientów
Zdobywanie serca klientówZdobywanie serca klientów
Zdobywanie serca klientów
 
Twój własny kawałek YouTube
Twój własny kawałek YouTubeTwój własny kawałek YouTube
Twój własny kawałek YouTube
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Silverlight z bliska i na wylot
Silverlight z bliska i na wylotSilverlight z bliska i na wylot
Silverlight z bliska i na wylot
 
Nowości W Silverlight 3
Nowości W Silverlight 3Nowości W Silverlight 3
Nowości W Silverlight 3
 
Microsoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja AplikacjiMicrosoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja Aplikacji
 

Silverlight i PHP

  • 1. Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych? Michał Żyliński (Michal.Zylinski@microsoft.com, http://blogs.msdn.com/michalz)
  • 2. Agenda Silverlight – wprowadzenie Pierwsza aplikacja na wylot Grafika i animacja Biznes Smaczki
  • 3. Platforma aplikacyjna Microsoft .NETPełne spektrum możliwości Wspólna architektura i narzędzia Wdrażanie Projektowanie Programowanie Przeglądarka Aplikacja kliencka
  • 4. Filozofia Cykl produkcji 9-12 miesię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)
  • 6. Warsztat pracy Web Design Blend Encoder
  • 7. Warsztat pracy cd. Visual Studio (może być Web Developer Express) lub Eclipse Tools for Microsoft Silverlight Silverlightruntime Silverlight SDK Silverlight Tools for Visual Studio 2010 Expression Blend 4 Beta
  • 8. Warsztat pracy cd. Możliwość tworzenia aplikacji Silverlight w środowisku Eclipse Działa również pod Mac OS X Open source Rozwijane zewnętrznymi siłami przy wsparciu MS http://www.eclipse4sl.org/
  • 9.
  • 10. … pozwalający na prosty, deklaratywny sposób opisu
  • 12. Prosta linia podziału pomiędzy projektantami a programistami
  • 13.
  • 14. Ciekawsze elementy XAML, c.d. Content attribute <TextBlock Text=„Username:” /> Content element <TextBlock> Username: </TextBlock> Attached property <TextBlock Grid.Column=„0” Grid.Row=„1” />
  • 15. Demo {HelloWorld} i wszystko jasne
  • 16. Grafika Większość elementów bazuje na 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ów Możliwość operacji bezpośrednio na bitmapach Transformacje
  • 17. Pozycjonowanie elementów Właściwości Margin, Padding, itd. Gotowe kontenery Canvas Grid StackPanel WrapPanel Border CustomLayout
  • 18. Animacje Perspektywa obiektowa, każda właściwość wizualna może podlegać zmianom w czasie Storyboards oparte o klatki kluczowe <DoubleAnimation  Duration="0:0:10"  Storyboard.TargetName="myTranslate"  Storyboard.TargetProperty="X"  To="700"  AutoReverse="True"  RepeatBehavior="Forever"/>
  • 19. Demo Grafika i animacja
  • 20. Kontrolki Komplet standardowych kontrolek na pokładzie (TextBox, TextBlock, CheckBox, Button itd.) Dodatkowe kontrolki np. z Silverlight Control Toolkit (wykresy, kalendarze itd.)
  • 21. Praca z danymi Binding OneWay OneTime TwoWay Bindowanie 2 kontrolek DataContext ItemSource
  • 22. Binding do 1 wartości (XAML) <Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Center" > <TextBoxVerticalAlignment="Top" IsReadOnly="True" Margin="5" TextWrapping="Wrap" Height="50" Width="200" Text="{BindingMode=OneWay}" x:Name="textBox1"/> </Grid>
  • 23. Binding do 1 wartości (CS) // Obiekt biznesowy public classRecording { public Recording() { } public Recording(string artistName, string cdName, DateTime release) { Artist = artistName; Name = cdName; ReleaseDate = release; } public string Artist { get; set; } public string Name { get; set; } public DateTimeReleaseDate { get; set; } // OverridetheToStringmethod. public overridestringToString() { return Name + " by " + Artist + ", Released: " + ReleaseDate.ToShortDateString(); } } // Binding textBox1.DataContext = new Recording("Chris Sells", "Chris Sells Live", newDateTime(2008, 2, 5));
  • 24. Binding do kolekcji <StackPanel x:Name="LayoutRoot" Background="White"> <ComboBox x:Name="ComboBox1" Margin="5" Height="40" Width="300" ItemsSource="{BindingMode=OneWay}" /> </StackPanel>
  • 25. Sample Data Prototypy zwykle wymagają wizualizacji informacji Sample 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
  • 26. DEMO Binding i Sample Data
  • 27. Wygląd Aplikowanie styli in-line Słabo skalowalne przy dużych projektach Szablony / tematy (Resources) Page.xaml – ograniczone do okna App.xaml Możliwość tworzenia skórek tematycznych (np. przechowywanych w osobnych plikach XAML niezależnie od aplikacji) Kaskadowość, dziedziczenie Zmiany w trakcie działania aplikacji
  • 30. Visual State Manager (VSM) Warstwa abstrakcji pozwalająca zarządzać wyglądem z perspektywy stanów kontrolki Np. MouseOver, MouseDown, itp. Możliwość definiowania stylu kontrolki w poszczególnych stanach Możliwość definiowania charakteru przejść pomiędzy stanami
  • 31. DEMO Visual State Manager
  • 32. Komunikacja Usługi sieciowe Generacja silnie typowanych klas proxy Alternatywnie: XML-RPC (http://code.google.com/p/xmlrpc-silverlight) Komunikacja request/response WebClient HTTPWebRequest Sockety TCP/IP Asynchroniczna komunikacja Cross-domain (wymagany plik policy)
  • 33. Komunikacja przez HTTP(s) Bazuje na przeglądarce internetowej (ciasteczka, nagłówki) Cross-domain Plik policy (silverlight -> flash policy) Tworzenie żądania Uri dataLocation = new Uri("http://localhost/oceny.xml"); BrowserHttpWebRequest request = new BrowserHttpWebRequest(dataLocation); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Przetwarzanie odpowiedzi serwera StreamReaderresponseReader = new StreamReader(response.GetResponseStream()); string RawResponse = responseReader.ReadToEnd();
  • 34. Usługi Web Services Klasy proxy 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 klienta proxy = new BankProxy(); transactionList = proxy.GetTransactionList().ToList();
  • 35. Przetwarzanie danych LanguageIntegratedQuery Składnia T-SQL zintegrowana z językiem C# Weryfikacja na etapie kompilacji Dla XML lub dowolnych innych kolekcji (IEnumerable) varlistaObiektow= from oin DowolnaKolekcjawhere (o.Id>10) orderbyo.Namedescending select o;
  • 36. … z perspektywy PHP Dowolny 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ństwo Aplikacje Silverlight działają w środowisku chronionym – sandbox Isolatedstorage – brak bezpośredniego dostępu do zasobów systemowych Kawałek przestrzeni pozwalającej na przechowywanie danych w strukturze słownikowej (klucz-wartość) lub struktury katalogi/pliki Dostępna w kontekście jednego użytkownika i jednej aplikacji Domyślna wielkość – 1MB (z możliwością powiększenia) Przechowywanie danych tekstowych i binarnych Użytkownik ma kontrolę nad isolatedstorage
  • 38. Integracja z OS Operacje I/O: File (Create, Exists, Delete, OpenDialog, SaveDialog) Directory (Exists, Create, Delete, GetFileNames) Quota (GetCurrentQuota, IncreaseQuotaTo, GetAvailableSpace) Scenariusze offline Wystarczy 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.Browser HtmlPage. Window jest ScriptableObject HtmlDocument HtmlElement HtmlObject
  • 40. Dostęp do HTML DOM z kodu zarządzanego Nowa przestrzeń nazw usingSystem.Windows.Browser; Statyczna klasa HtmlPage– punkt dostępowy HtmlPage.Navigate("http://www.microsoft.com"); String server = HtmlPage.DocumentUri.Host; Podpinamy zdarzenia, wywołujemy metody, dostajemy się do właściwości HtmlElementmyButton = HtmlPage.Document.GetElementByID("myButtonID"); myButton.AttachEvent("onclick", new EventHandler(this.myButtonClicked)); privatevoidmyButtonClicked(object sender, EventArgs e) { ... }
  • 41. Dostęp do kodu zarządzanego z JavaScript Oznacz właściwość, zdarzenie lub metodę jako [Scriptable] [Scriptable] public void Search(string Name) { ... } Zarejestruj „punkt dostępowy” do obiektu WebApplication.Current.RegisterScriptableObject ("EntryPoint", this); Wykorzystaj kod zarządzany z poziomu JavaScript var control = document.getElementById("SilverlightControl"); control.Content.EntryPoint.Search(input.value);
  • 42. Smaczki: behaviors Możliwość stworzenia własnych, powtarzalnych wzorców zachowań Niezależne od obiektów/kontrolek Znacznie ułatwia komunikację projektant <-> programista 2 typy: Akcje (kiedy …. zrób … ) Zachowania Behave
  • 43. Smaczki: SketchFlow Expression Blend pozwala na szybkie, wizualne prototypowanie aplikacji Działa niezależnie od typu aplikacji: WPF, Silverlight Gotowy player pozwalający na interaktywną prezentację u klienta Start Navigation Main Menu Data Entry
  • 45. Smaczki: Deep Zoom Płynne przeglądanie i powiększanie dowolnej wielkości obrazów Tylko dane, które aktualnie ogląda użytkownik Symuluje grafikę wektorową
  • 46. Deep Zoom Narzędzie dzieli obraz na fragmenty 256 x 256pix Następnie generuje zdjęcia niższej rozdzielczości
  • 47. Deep Zoom – jak działa? Obrazy najniższej rozdzielczości wyświetlane w pierwszej kolejności Po 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ści Po pobraniu obrazów lepszej jakości, następuje płynne podmienianie
  • 49. Deep Zoom – jak działa? Obrazy najniższej rozdzielczości wyświetlane w pierwszej kolejności Po pobraniu obrazów lepszej jakości, następuje płynne podmienianie
  • 50. Deep Zoom w Silverlight Wyświetlany przez MultiScaleImage Narzędzie Deep Zoom Composer przygotowuje grafiki oraz plik XML z opisem
  • 52. Q&A? Michal.Zylinski@microsoft.com (pamiętajcie o Microsoft BizSpark i WebsiteSpark)