integrazione php e silverlight 4
TRANSCRIPT
http://wippy.grusp.org
PHP e Silverlight 4
Pietro Brambati, Microsoft
Blogs.msdn.com/pietrobr
Twitter: @pietrobr
http://wippy.grusp.org
Agenda
Silverlight e Interoperabilità con PHP
Costruiamo un’applicazione Silverlight
http://wippy.grusp.org
Silverlight
Plugin cross-browser e cross-platform
Una versione light del runtime del .NET Framework che gira nel browser
Installata con il plugin
Funzionalità Out-Of-The-Browser
Applicazioni di tipo multimediale
Video, animazioni…
Applicazioni di business
Ricco insieme di controlli
Accesso a sorgenti dati via Web Services: SOAP, REST…
http://wippy.grusp.org
Silverlight breve storia
Silverlight 1.0
Set 2007
Silverlight 2
15 ott 2008
Silverlight 3
Giugno 2009
Silverlight 4 Aprile 2010
http://wippy.grusp.org
Caricare un' applicazione Silverlight
http://wippy.grusp.org
Caricare il plug-in Test.html
http://wippy.grusp.org
DEMO
Anatomia di un’applicazione Silverlight 4 e interoperabilità con PHP
http://wippy.grusp.org
XAML, Controlli, Shapes
http://wippy.grusp.org
Markup = Object Model
=
<TextBlock FontSize="32" Text="Hello world" />
TextBlock t = new TextBlock(); t.FontSize = 32; t.Text = "Hello world";
http://wippy.grusp.org
XAML
<Canvas Width="300" Height="300"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Ellipse Canvas.Left="20" Canvas.Top="20"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10" Fill="Yellow" />
<Ellipse Canvas.Left="80" Canvas.Top="80"
Height="35" Width="25" Stroke="Black" Fill="Black" />
<Ellipse Canvas.Left="140" Canvas.Top="80"
Height="35" Width="25" Stroke="Black" Fill="Black" />
<Path Data="M 70, 150 A 60, 60 0 0 0 170, 150"
Stroke="Black" StrokeThickness="15"
StrokeStartLineCap="Round" StrokeEndLineCap="Round" />
</Canvas>
Attached property
Layout Control
Shapes
http://wippy.grusp.org
Controlli in Silverlight 4 Form Controls:
TextBox
Rich Text Box
PasswordBox
Button
Toggle/Repeat Button
CheckBox
RadioButton
ComboBox
ListBox
Label
Navigation Controls:
HyperlinkButton
Popup
Frame
Core Controls:
Border
Image
MediaElement
MultiScaleImage
ToolTip
ScrollViewer
ProgressBar
Save/OpenFileDialog
PasswordBox
Popup
Slider
Layout Controls:
StackPanel
Grid / GridSplitter
Canvas
SDK Controls (*):
AutoCompleteBox
Calendar
ChildWindow
DataGrid
DataPager
TabControl
DatePicker
DescriptionViewer
Validatio Summary
DataForm
TreeView
– …
Shapes:
Ellipse
Rectangle
Line
TextBlock
Path
http://wippy.grusp.org
Silverlight Toolkit
o Controlli con licenza Open Source (OSI MS-PL) o Aggiornati ogni 6-8 settimane
o http://www.codeplex.com/Silverlight
http://wippy.grusp.org
Skinning Styling
Personalizzazione di Controlli Styling e Skinning
http://wippy.grusp.org
DEMO
Silverlight Flickr photo viewer Costruire la UI “Styling”
http://wippy.grusp.org
DataBinding & DataTemplate
http://wippy.grusp.org
Collegare la UI ai Dati Databinding
o Bidirezionale: dalla UI al modello e viceversa
o Funziona con oggetti che implementano IEnume-IQueryable
o Array, Collections, Lists etc
o Notifica via INotifyPropertyChanged
Binding binding = new Binding("Points"); binding.Mode = BindingMode.OneWay; TextBlock tb = new TextBlock(); tb.SetBinding(TextBlock.TextProperty, binding);
<TextBlock Text="{Binding Points, Mode=OneWay}"/> XAML
C#
http://wippy.grusp.org
<DataTemplate x:Key="carTemplate">
<StackPanel>
<Image Source="{Binding Image}" />
<TextBlock TextContent="{Binding Model}" />
</StackPanel>
</DataTemplate>
Layout della UI e Dati DataTemplate
DataTemplate
class Car
{
string Image {get;set}
string Model {get;set}
}
http://wippy.grusp.org
Networking
http://wippy.grusp.org
Funzionalità di Networking
HTTP/S [WebClient HttpWebRequest]
WS*/SOAP [via Proxy WCF]
REST [WebClient HttpWebRequest]
RSS [Syndication API]
Sockets
Chiamate Cross Domain
http://wippy.grusp.org
Chiamate Cross-Domain
2 formati:
Flash policy file
Silverlight policy file
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
Cross-domain.xml
clientaccesspolicy.xml
<?xml version="1.0"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="http://customers.shop.com”/>"
<domain uri="http://partner.com/app.xap"/>
</allow-from>
<grant-to>
<grant path="/sales/serialnumbers.xml" />
<grant path="/partners" include-subpaths="false"/> </grant-to>
</policy>
</cross-domain-access>
</access-policy>
http://wippy.grusp.org
Trace
http://wippy.grusp.org
DEMO
DataBinding DataTemplate Networking Skinning
http://wippy.grusp.org
Salviamo lo stato Isolated Storage API
Come un cookie
Virtual file system
AppData\LocalLow (in Vista/7)
Specifico per utente
A livello di applicazione
(http://.. pippo.xap != http://..pluto.xap)
IsolatedStorageSettings [Key\Value]
IsolatedStorageFile [Files e directory]
http://wippy.grusp.org
Cosa NON abbiamo visto
OpenFile Dialog
Download on demand
Splash Screen
Dynamic CLR
IronRuby, Ironpyton, Managed Jscript
Visual State Manager
DRM, via PlayReady e WMDRM 10
DeepZoom
OOB
HW Acceleration, Graphics
http://wippy.grusp.org
In Conclusione
Una piattaforma completa per le RIA
.NET Framework con una ricca BCL
Numerosi Controlli out-of-the box
Skinning avanzato
Stack di Networking
Integrazione PHP
http://wippy.grusp.org