1 / 63

Silverlight 2.0 para desarrolladores

benjamin
Télécharger la présentation

Silverlight 2.0 para desarrolladores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Silverlight 2.0 para desarrolladores (Da 2) Marino Posadas MVP C#, MCAD, MCSD, MCT Alhambra-Eidos

    3. Parte 3: Comunicaciones fuera de la SandBox

    4. Modelo de acceso al DOM desde Silverlight

    5. Accediendo al HTML DOM desde el cdigo manejado Acceso a HTML desde un nuevo namespace:

    6. Accediendo al Cdigo Manejado desde Scripts Se debe marcar la propiedad, el mtodo el evento como Scriptable

    7. HTML Integration Otros escenarios de interesantes de integracin con HTML Links persistentes Integracin Forward/Back Seriacin JSON Interaccin HTML-Silverlight en los dos sentidos Creacin dinmica de elementos HTML

    8. Integracin con HTML

    9. OpenFile Dialog De momento es el nico recurso de este tipo accesible desde una aplicacin Silverlight Permite abrir ficheros mediante una tcnica que simula el acceso remoto permitido Puede desencadenar procesos de espera indeseables si no se manejan los eventos de la IU con cuidado.

    10. OpenFile Dialog (1) Silverlight soporta la posibilidad de abrir un cuadro de dilogo para archivos locales Los desarrolladores pueden trabajar con el contenido de los archivos localmente, sin tener que subir primero todo el archivo al server

    11. OpenFile Dialog (2) Recordemos: Silverlight no permite al desarrollador tener el control o acceder al archivo original en la maquina local. Silverlight no puede tener el acceso directo al archivo sin primero obtenerlo por medio del cuando de dialogo Abrir Archivo Vamos a ver una demo para demostrar un posible problema y su solucin

    12. Open File Dialog -Uso estndar - Uso mediante el evento CompositionTarget.Rendering

    13. Acceso a Datos (mediante Servicios Web)

    14. 4 formas de acceso: ASMX WCF REst ADO.NET Data Services

    15. Servicios Web (ASMX) El generador de proxy de Visual Studio permite un acceso fuertemente tipado Servicios de ASMX (SOAP), WCF, y REst ADO.NET Data Services utiliza estos modelos

    16. Servicios Web Siempre suponen una llamada asncrona

    17. Trucos: carga dinmica de imgenes (aplicable a ficheros locales o a URIs) Image image = new Image(); Uri uri = new Uri("images/myImage.png", UriKind.Relative); ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri); image.SetValue(Image.SourceProperty, img) Mostrar la imagen <Grid x:Name="MainGrid"> <Canvas x:Name="Map/> </Grid> Aadir la imagen a la IU: Map.Children.Add(image); Otra opcin consiste en declarar un elemento Image en el fichero XAML <Image Source="images/MyImage.png"></Image>

    18. Servicios Web ASMX (basados en SOAP)

    19. Servicios WCF Visual Studio dispone de una plantilla especial para la generacin de este tipo de servicios EL mecanismo similar al anterior, pero los aspectos particulares del binding pueden configurarse mejor, caso de ser necesario Una vez reconocida la existencia del servicio (sistema de descubrimiento de servicios de VS 2008), el proceso es casi idntico al ASMX Una de las razones para retocar el binding puede ser el rendimiento del servicio (cambiar en cada caso)

    20. Servicios WCF

    21. Servicios REst No tienen estado ni contrato, por lo que (al menos de momento) no pueden ser descubiertos por el sistema anterior Presupone el conocimiento de su existencia y las APIs que pone a disposicin del usuario Requiere de un fichero CrossDomain.xml en la raz del servicio donde se establezca el permiso de acceso Si el modelo es RSS nos valdremos de una clase de ayuda que formatee en lectura la informacin XML suministrada La clase es SyndicationFeed

    22. Servicios Rest (sin contrato)

    23. ADO.NET Data Services Propone un modelo similar a Entity Framework (basado en l, en realidad) Se genera un modelo de datos en el servidor y a partir de ah- un conjunto de clases .NET que ofrecen funcionalidad CRUD sobre ese modelo El modelo es modificable por el usuario Sigue un patrn de acceso parecido al de las declaraciones REst Sobre ese modelo, se crea un servicio WCF que expone la funcionalidad necesaria En el cliente Silverlight, se crea la referencia al servicio y sus mtodos expuestos para manejar los datos

    24. ADO.NET Data Services

    25. Parte 4: Buenas Prcticas, instalacin de aplicaciones, y trucos tiles

    26. Gestin de Estados Estados en aplicaciones RIA Cliente vs. Servidor Estados en Cliente: Usa el isolated storage para conseguir persistencia de estados durante las sesiones. Guarda en el cliente y sincroniza con el servidor en intervalos o al final de la sesin Guarda estados en el servidor solo cuando sea necesario y mejor en un nico punto B.D.

    27. Validacin Datos de entrada ActualmenteSilverlightno tieneun modelobuilt-in? de validacin La validacin se debe de hacer en el cdigo cliente Silverlight o bin via servicios web en el servidor Guas: Identifica fronteras de seguridad en las diferentes capas, valida los datos que cruzan dichas fronteras En las validaciones del lado cliente?, pon el cdigo de validacin de datos en rutinas separadas de la presentacin y de la lgica de negocio Si es mucho cdigo -> carga asncronamente No hagas eco? de datos de entrada en los que no se confa Valida en el servidor(Servicios-Web) los datos crticos. Validacin cliente -> Para experiencia de usuario Validacin servidor -> Aspectos reales de seguridad

    28. Cache Cache por defecto del Browser para componentes SL, imgenes y datos que no cambian durante la sesin Usa el almacn aislado? para guardar estados de aplicacin e informacin de configuracin que quieras persistir entre sesiones Comprueba la cuota del almacn aislado? antes de escribir informacin. Evitar errores Cuota == 1Mb inicial y 50Mb mximo. No guardes tipos de datos BLOB en el almacn aislado?

    29. Accesibilidad? Silverlight 2.0 ha mejorado mucho la accesibilidad Soporte completo al teclado Decorar elementos XAML de IU con info de Accesibilidad Soporte de accesibilidad a controles custom? Soporte de accesibilidad a lectores(AT) Accesibilidad exposicin arbol? para UIA Nota UIA solo Windows, MacOX no soporta plug-ins accesibles Crtico en UE: Portales Administracin Pblica (por Ley en Espaa)

    30. Comunicaciones en RIA (Capa Servicios) 2 3 tipos Servicios Web: ASMX, WCF-Basic y REST Binding SOAP WCF soportado: basicHttpBinding (SOAP 1.1 compatible) Recuerda aspectos de autorizacin cross-domain. Consumo de Servicios-Web desde SL 2.0 Asncrono Evita consumir Servicios-Web sncronamente ->bloquea Si necesitas consumirWS sncronamente -> En otro Thread en background para no bloquear el browser Opciones para comunicaciones Push Data con el servidor: WCF FullDuplexService basado en basicHttpBinding Sockets (Mucho mas escalable que HTTP simulando FullDuplex) Para escalabilidad: Usar sockets en lugar de polling para hacer push de datos desde el servidor al cliente

    31. Autenticacin y Autorizacin Los clientes RIA pueden utilizar mecanismos de autenticacin y autorizacin similares a los clientes web estndar. Tener en cuenta aspectos de autorizacin cross-domain con los ficheros crossdomain.xml clientaccesspolicy.xml (polticas de Silverlight) en el servidor web de servicios Internet: Usar Forms authentication? con el sistema ASP.NET Membership, y roles para Autorizacin. Intranet: Usar autenticacinWindows y roles Windows para autorizacin. La autenticacin Windows no funciona automticamente para usuarios no Windows (Apple MacOX, etc.) Si se autentica contra servicios web (WCF p.e.), recuerda que Silverlight soporta solo basicHttpBinding(SOAP 1.1) Para cifrado de la comunicacin -> SSL (HTTPS)

    32. Cookies y Cross-Site Las Cookies en un mismo nivel de dominio miorg.com no puede acceder a las cookies foo.com Mismo Dominio-> http://miorg.com es diferente de http://bar. miorg.com http://www. miorg.com Mismo Protocolo -> http:// miorg.com es diferente de https:// miorg.com MismoPuerto-> http:// miorg.com es diferente de https://miorg.com:8080 foo.com tiene que estar seguro? de los datos que guarda en sus cookies Prevencin contra Falsificacin cross-site

    33. ClientAccessPolicy.xml <?xmlversion="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*"/> </allow-from> <grant-to> <resourcepath="/" includesubpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>

    34. Trucos : Activar las cookies del navegador Se hace a travs del objeto HtmlPage.Document Utiliza el namespace System.Windows.Browser. Para establecer la cookie se llama a SetProperty() con una cadena en la forma Key=Valor;expires=FechaExpiracin. Ejemplo: private void SetCookie(string clave, string valor) { // Expira en 7 Dias DateTime expireDate = DateTime.Now + TimeSpan.FromDays(7); string newCookie = clave+ "=" + valor + ";expires=" + expireDate.ToString("R"); HtmlPage.Document.SetProperty("cookie", newCookie); }

    35. Trucos : Activar las cookies del navegador Para leer la cookie recorremos la propiedad HtmlPage.Document.Cookies. private string GetCookie(string key){ string[] cookies = HtmlPage.Document.Cookies.Split(';'); foreach (string cookie in cookies) { string [] keyValue = cookie.Split('='); if (keyValue.Length == 2) { if(keyValue[0].ToString() == key) return keyValue[1]; } } return null; }

    36. Trucos: Centrar el control Silverlight en el navegador El control Silverlight va a una tabla con un sola celda o a un div. Aadimos un estilo a la tabla estableciendo los valores de margin-left y margin-right en auto. La altura y anchura del elemento <td> debe concordar con la del control Silverlight o el control no se mostrar. Ejemplo: <body> <form id="form1" runat="server" style="height: 100%;"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <table style="margin-left: auto; margin-right: auto;"> <tr> <td style="width: 600px; height: 300px;"> <asp:Silverlight ID="Xaml1" PluginBackground="Transparent" runat="server" Source="~/ClientBin/SilverlightDev.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" /> </td> </tr> </table> </form> </body>

    37. Trucos: Centrar el control Silverlight en el navegador Tambin podemos usar: <div style="width: 100%; margin: 0"> <div style="margin: auto; width: 600px; height: 300px"> <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightDev.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" /> </div> </div>

    38. Trucos: escalado de elementos Demo On-line: http://silverlight.services.live.com/invoke/66033/Page%20Scaling/iframe.html Aadir un RenderTransform del tipo ScaleTransform al Grid o Canvas del control Silverlight <Canvas> <Canvas.RenderTransform> <ScaleTransform x:Name="CanvasScale" ScaleX=1 ScaleY=1 /> </Canvas.RenderTransform> </Canvas> Asignar ScaleX y ScaleY a 1 equivale a 100%. Establecer el valor de CanvasScale ScaleX y ScaleY a un porcentaje del navegador:

    39. Trucos: escalado de elementos namespace ScaleTransform { public partial class Page : UserControl { private int _startingWidth = 800; private int _startingHeight = 600; public Page() { InitializeComponent(); App.Current.Host.Content.Resized += new EventHandler(Content_Resized); } void Content_Resized(object sender, EventArgs e) { double height = App.Current.Host.Content.ActualHeight; double width = App.Current.Host.Content.ActualWidth; CanvasScale.ScaleX = width / _startingWidth; CanvasScale.ScaleY = height / _startingHeight; } } }

    40. Trucos: lanzar una ventana popup Se soporta el mtodo HtmlPage.PopupWindow(). Por seguridad, solo funciona como respuesta a una entrada de usuario. Referencia a System.Windows.Browser; La llamada a HtmlPage.PopupWindow() admite 3 parmetros: Uri (http://www.silverlight.net). String Nombre de la ventana HtmlPopupWindowOptions Varias opciones como Posicion, Tamao, menubar, etc private void Button_Click(object sender, RoutedEventArgs e) { HtmlPopupWindowOptions options = new HtmlPopupWindowOptions(); options.Left = 0; options.Top = 0; options.Width = 800; options.Height = 600; if (true == HtmlPage.IsPopupWindowAllowed) HtmlPage.PopupWindow(new Uri("http://www.silverlight.net"), "new", options); } *Note: Safari no lo sporta por que no implementa correctamente el contrato NPAPI .

    41. Mientras la URI sea la misma, el sistema usar la imagen de la cach Se pude soslayar este problema asignando la propiedad IgnoreImageCache a true. Ejemplo: Image img = new Image(); Uri uri = new Uri("http://YourServer.com/MyImage.png", UriKind.Absolute); BitmapImage bi = new System.Windows.Media.Imaging.BitmapImage(uri); bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache; img.Source = bi; LayoutRoot.Children.Add(img);

    45. Como todos los modelos de Enterprise Services propuestos por Patterns & Practices no resulta trivial al inicio Requiere una curva de aprendizaje, pero minimiza los errores y facilita la depuracin y el mantenimiento de la aplicacin Implementa (o permite hacerlo), tcnicas de IoC y Depedency Injection (D.I.) Algunas caractersticas recuerdan el modelo de Programacin orientada a aspectos (AOP), sobre todo en el tema de D.I. Disponible en www.codeplex.com

    46. Empaquetado & Arquitectura Componente del navegador Descarga pequea. Incluye video & audio Se instala a peticion.

    47. Silverlight .NET Framework

    48. Plataformas y fechas de disponibilidad Calendario de versiones (Roadmap) Silverlight 1 - September 2007 Silverlight 2 Noviembre 2008 Moonlight (Linux/Unix) Enero 2009 Silverlight Mobile Mediados de 2009 Silverlight 3 Finales de 2009

    51. Usage Restrictions: PR Ready San Diego Zoo Usage Restrictions: PR Ready San Diego Zoo

    52. Second largest travel company in Europe Fast Facts This leading international leisure travel group needed to create a community oriented travel experience VINGtm Results Travelers discuss travel plans with other passengers, and visualize vacation destinations on a world map. VINGtm is powered by Windows Live Messenger control, Spaces Photo, Microsoft Virtual Earth and Silverlight by Windows Live The key benefit of using Live Services is a great reduction in development time, we can program with a modular approach, saving time and resources. Johan Hgglund, Team Manager for web development Second largest travel company in Europe Fast Facts This leading international leisure travel group needed to create a community oriented travel experience VINGtm Results Travelers discuss travel plans with other passengers, and visualize vacation destinations on a world map. VINGtm is powered by Windows Live Messenger control, Spaces Photo, Microsoft Virtual Earth and Silverlight by Windows Live The key benefit of using Live Services is a great reduction in development time, we can program with a modular approach, saving time and resources. Johan Hgglund, Team Manager for web development

    53. Usage Restrictions: PR Ready Usage Restrictions: PR Ready

    56. Recursos en la Web Generales Principal: http://silverlight.net/GetStarted/ Primer vistazo: http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx Tutoriales: http://silverlight.net/learn/tutorials.aspx MSDN: http://msdn.microsoft.com/en-us/library/bb404700(VS.95).aspx Arquitectura: http://msdn.microsoft.com/en-us/library/bb404700(VS.95).aspx Blogs sobre Silverlight (en ingls) Alvin Ashcraft: http://www.alvinashcraft.com/ Bill Reiss: http://www.bluerosegames.com/SilverlightBrassTacks/ Brad Adams: http://blogs.gotdotnet.com/BradA/ Dan Wahlin: http://weblogs.asp.net/dwahlin/default.aspx Dave Relyea - http://blogs.msdn.com/DevDave Delay: http://blogs.msdn.com/delay/ Einar Ingebrigtsen: http://www.ingebrigtsen.info Jeff Paries: http://designwithsilverlight.com/ Jessie Liberty: http://silverlight.net/blogs/jesseliberty/ Joe Stegman: http://blogs.msdn.com/jstegman/default.aspx

    57. Recursos en la Web Blogs sobre Silverlight (en ingls. Continuacin) Karen Corby: http://scorbs.com/ Laurence Moroney: http://blogs.msdn.com/webnext/default.aspx Michael Palermo: http://weblogs.asp.net/palermo4/default.aspx Michael Sync: http://michaelsync.net/ Neo: http://www.silverlightexamples.net/ Nikhil Kothari: http://www.nikhilk.net Nikola: http://blogs.msdn.com/nikola/default.aspx and http://www.nokola.com/ Peter Blois: http://www.blois.us/blog/ Pete Brown: http://community.irritatedvowel.com/blogs/pete_browns_blog/default.aspx Seema Ramchandani: http://blogs.msdn.com/seema Scott Guthrie: http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx Synergist: http://blogs.msdn.com/synergist/ SDK Team: http://blogs.msdn.com/silverlight_sdk/ The MossyBlog Times: http://blogs.msdn.com/msmossyblog/ Tim Sneath: http://blogs.msdn.com/tims/ Tim Heuer: http://timheuer.com/blog/ VectorForm: http://www.vectorform.com/silverlight/blog/ Web Services Team: http://blogs.msdn.com/silverlightws Wilco Bauwer: http://www.wilcob.com/Wilco/Silverlight.aspx

    58. Recursos en la Web Otros sitios Silverlight (Enlaces diarios Silverlight, etc.) http://www.silverlightshow.net/ http://www.silverlightcream.com/ http://mgalinks.wordpress.com/ http://www.shinedraw.com/ http://flexria.wordpress.com/category/silverlight/ Otros aspectos de inters para Silverlight Motores 3D: Kit3d: http://www.codeplex.com/Kit3D Balder 3D Engine: http://www.codeplex.com/Balder (Blog: http://www.dolittle.com/blogs/einar)

    59. Recursos en la Web Programacin de juegos: Silverlight Games 101 by Bill Reiss Refactor by Joel Neubeck. Silverlight Game Programming Tutorial by Matthew Casperson 2D Game Development by Mike Gold. Andy Beaulieu Silverlight Games by Roger Guess Developer Fusion Envo de contraseas seguras http://dnnsilverlight.adefwebserver.com/Samples/SilverlightXAML/tabid/56/Default.aspx Silverlight Nuggets: http://silverlightnuggets.com/ Sockets: http://www.flawlesscode.com/ Web Services: http://dnnsilverlight.adefwebserver.com/Silverlight20/SilverlightWebservice/tabid/66/Default.aspx

    60. Recursos en la Web Tutoriales sobre Silverlight (en orden alfabtico): Andy Beauliue http://www.andybeaulieu.com/Home/tabid/67/Default.aspx Brad Adams http://blogs.msdn.com/brada/default.aspx Chris Hay http://www.screencast.com/users/chrishayuk DotNet Curry http://www.dotnetcurry.com/ Jesse Liberty http://silverlight.net/blogs/jesseliberty/ Joe Stegman http://blogs.msdn.com/jstegman/default.aspx Nikola Mihaylov http://blogs.msdn.com/nikola/default.aspx Page Brooks http://pagebrooks.com/ Pete Brown http://community.irritatedvowel.com/blogs/pete_browns_blog/default.aspx Shawn Wildermuth http://wildermuth.com/ Silverlight Learning Resources http://silverlight.net/learn/ SilverlightShow http://www.silverlightshow.net/ Terence Tsang http://www.shinedraw.com/ Tim Heuer http://timheuer.com/blog/ Timmy Kokke http://geekswithblogs.net/tkokke/Default.aspx Y una pgina sumario sobre blogs en Silverlight : http://www.netvibes.com/rboarman#Silverlight

    61. Recursos http://msdn.microsoft.com http://www.silverlight.net http://www.elavefenix.net Demo on-line de tipo general: http://www.elavefenix.net/AESS/aessTestPage.html Programacin en Silverlight 2.0: primera obra sobre el tema publicada en castellano.

More Related