(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
1. Conociendo Silverlight desde las trincheras
Marcela A. Castagno Leonardo Sailer
mixplay.tv Global Crossing
mcastagno@claxson.com Leo_sailer@hotmail.com
Pablo A. Menegol Juan Ladetto
mixplay.tv Microsoft Argentina
pmenegol@claxson.com juanl@microsoft.com
25 de Marzo 2009, Paseo La Plaza, Buenos Aires
11. Mixplay.tv ayer
Más problemas con las tecnologías tradicionales
• Extensas jornadas de trabajo .
• Inconvenientes en desarrollos multiplaforma
(browser y SO)
• Limitaciones o Condicionamientos en la
creatividad del Producto.
• La “customización” de las aplicaciones siempre
debían pasar por el equipo de Desarrollo.
14. Mixplay.tv hoy
Tecnologías que posibilitaron el cambio:
• Model View Controller
• REST
• Silverlight
15. Mixplay.tv hoy
Beneficios de Silverlight
• Interacción entre Desarrollo/Diseño.
• Workflow más eficiente
• Controles con diferentes interfaces.
• Rápida adopción de nuevas herramientas.
• Reutilización de las capacidades en C#.
• Interfaces más dinámicas y flexibles.
• eXtreme Programming (XP) interdisciplinario.
• Funcionalidades multiplataforma (browser y SO) sin
recodificar.
20. Mixplay.tv hoy
Algunas “piedras en el camino”
• No maneja recursos dinámicos ni en cascadas.
• MS Blend no se integra a MS Visual Sourcesafe.
• Faltan funcionalidades relevante en la versión release 2
de Silverlight.
• Implementación de Triggers
• Datasource en XML
• Cantidad limitada de layouts y controles
• Incompatibilidades de XAML entre Visual Studio y Blend.
• Problemas de herencia de Objetos en Blend.
• No puede utilizarse Motion path o importar swf o psd en
Blend
23. Ing. Leonardo Sailer
Application Architect
IT - Latin American & Caribbean
Nuestra Experiencia
Leo_sailer@hotmail.com
24. 2007: Comienzos
Necesidad: Visualización y Monitoreo de las redes de comunicaciones.
Desafío: Como implementar una Solución efectiva y eficaz sin
incorporar nuevos recursos, procurando que los clientes “vean lo
mismo que nosotros”.
Objetivos:
Visualización de la documentación de la red en forma esquemática. (tipo Visio ).
Monitoreo de eventos, no solo de caídas de red sino también de performance.
Único repositorio de datos (evitar inconsistencias en Service Assurance).
Minimizar equipos de desarrollo, mantenimiento y helpdesk.
Aprovechamiento de la Estructura Interna Existente (DokuViz - ActiveX)
Solución:
Nace Dokulight en base al Silverlight 1.0 beta
25. DokuLight = LOB Silverlight
Ventajas
Repositorio Único, Clientes e Ingenieros ven lo mismo.
Updates y Nuevos Releases simplificados.
Interface de Usuario web enriquecida.
Team de desarrollo y Help Desk Unificado.
Mínima inversión monetaria.
Integración total con el OSS Interno. (Operation Support Services).
Managed Code - .Net Improvements, WPF = Rich interface, Multiplataforma.
Menor “peso” de Instalación comparada a un ActiveX. (6Mb a 15Mb).
Desventajas
No existían controles comerciales disponibles ( hubo que implementar cosas básicas,
toolbars, move, resize, shapes, lines, etc)
Escasa Documentación.
Versiones Betas con cambios importantes que obligaban a reconsiderar patrones
adoptados (ej RenderAsBitmap.) y pobre integración con Blend.
26. 2008
Dokulight v:2.1.3365 con Silverlight 2.0.31005.0
100% del Código sin Componentes Externos, en VB.NET.
90% de GUI Implementada.
Navegación básica implementada.
Integrado al OSS con visualización de eventos, usando State Management.
GeoCoding para las Ubicaciones de Clientes, usando MultiScaleImage, Deep Zoom
y LiveMaps Imaginery.
Web Services Async para la obtención de los datos.
MultiThreading para el rendering de los objetos de pantallas.
Implementación de Isolated Storage para persistencia de datos.
Serialization para trabajo offline.
Testeado con Internet Explorer, Safari, FireFox y Opera.
27.
28.
29.
30.
31. Isolated Storage
Resguardo Persistencia de datos
Dim IOSTREAM As IsolatedStorageFileStream
Dim store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
If Not store.DirectoryExists(subDirName) Then store.CreateDirectory(subDirName)
If Not store.FileExists(sfilename)Then
IOSTREAM = store.CreateFile(sFile)
Else
IOSTREAM = store.OpenFile(sFile, IO.FileMode.Truncate)
End If
IOSTREAM.Write( . . . . .
IOSTREAM.Close()
Recuperación
IOSTREAM = store.OpenFile(sFile, IO.FileMode.Open)
IOSTREAM.Read( . . . . .
32. Asynchronous Web Services
Llamada al WS Recepción de Datos
Dim wsNMS As SrvNMSDK.NMSDKLSrvSoapClient = GetWsMNGTClass.GetWS
Dim Request As New SrvNMSDK.GetScreenReq
AddHandler wsNMS.GetScreenCompleted, AddressOf GetScreenCompleted
wsNMS.GetScreenAsync(Request, Screen)
Recepción WS
Private Sub GetScreenCompleted(ByVal sender As Object, ByVal e As
SrvNMSDK.GetScreenCompletedEventArgs)
If e Is Nothing OrElse e.Result Is Nothing Then . . . .
If e.Result.ErrorResp IsNot Nothing Then . . . .
If e.Result.DkvData Is Nothing Then . . . .
Dim ScreenData() As SrvNMSDK.DvData = e.Result.DkvData
If ScreenData.Length > 0 Then . . . .
33. Multithreading
Llamada Worker Procesando en Background
Dim MyThre As New System.ComponentModel.BackgroundWorker
AddHandler MyThre.DoWork, AddressOf ProcRRGetScreenDoWork
AddHandler MyThre.ProgressChanged, AddressOf ProcRRGetScreenChanged
AddHandler MyThre.RunWorkerCompleted, AddressOf ProcRRGetScreenCompleted
MyThre.WorkerReportsProgress = True
MyThre.RunWorkerAsync(e.Result.DkvData)
Ejecución Worker
Private Sub ProcRRGetScreenDoWork(ByVal sender As Object, ByVal e As
System.ComponentModel.DoWorkEventArgs)
Dim bck As System.ComponentModel.BackgroundWorker = CType(sender,
System.ComponentModel.BackgroundWorker)
Dim ScreenData() As SrvNMSDK.DvData = CType(e.Argument, SrvNMSDK.DvData())
ThisPage.Dispatcher.BeginInvoke(PrgBarInitialDispatcher, MyNodes.Count - 1, 0, 0)
34. Geocoding
Manejo de los Mapas DeepZoom, LiveMaps
http://www.codeplex.com/deepearth/
msi.Source = New VETileSource(MapStyle.Aerial, String.Format("{0}/VE_files",
InputParam.Path).ToString)
Public Sub New(ByVal mapStyleval As MapStyle, ByVal Path As String)
MyBase.New(134217728, 134217728, 256, 256, 0)
myActiveMapStyle = mapStyleval
mPath = Path
End Sub
Private Const Protocol As String = http://
Private Const Suffix As String = ".jpeg?g=159“
Private Const TilePath As String = ".ortho.tiles.virtualearth.net/tiles/“
Private mPath As String = http://{Path}/VE_files
Dim p As Point = clsMapHelper.LatLongToPoint(latLong, myMSI)
opin.SetValue(Canvas.TopProperty, p.Y)
opin.SetValue(Canvas.LeftProperty, p.X)
37. 2009+
Próximos Pasos
Migración a Silverlight 3.
Mejoras visuales, integrar a un Diseñador al equipo.
Implementación de Temas.
Gráficos básicos de performance y de eventos.
Análisis / implementación de Componentes Externos
(AddFlow Lasalle, Dundas Charts, WebAqua Toolbars y
Controls ).
38. http://silverlight.net/Community/
http://silverlight.net/Learn/ Leo_sailer@hotmail.com
http://silverlight.net/forums/
http://www.codeplex.com/deepearth
•Joe Stegman's Blog http://blogs.msdn.com/jstegman/
•Scott Guthrie Blog http://weblogs.asp.net/scottgu/
• Tim Heuer’s Blog http://timheuer.com/blog/
•Mike Harsh's Blog http://blogs.msdn.com/mharsh/
•Somasegar's BLog http://blogs.msdn.com/somasegar/
•Laurence Moroney's Blog http://blogs.msdn.com/webnext/
•Tim Sneath's Blog http://blogs.msdn.com/tims/
•Dave L. Campbell's Blog http://www.wynapse.com/
39. Resumen
Isolated Storage Asynchronous .net Web Services Calls
Custom Controls
Asynchronous Web request Calls DLR DeepZoom
DRM WMS
Visual Basic
Visual Studio 2008
Expression Blend
C# Linq
Y mucho más
XAML
MultiThreading
Modelo de Integración paralela
40. Cómo empezar
http://silverlight.net/getstarted
Instalar Silverlight 2 runtime
Bajar Visual Studio 2008 SP 1
Microsoft Silverlight Tools for Visual Studio 2008 SP1
Silverlight 2 application project template
Silverlight 2 control library project template
Expression Blend 2.0 SP 1
Experiencias ricas
Opciones de sync con Visual Studio
Silverlight 2 SDK
www.silverlight.net/learn
41. Silverlight 3
http://silverlight.net/getstarted/silverlight3
Reproducción de video en formatos mpeg4 /H 264. Audio
en formato AAC
Soporte para:
temas,
cascade styles,
nuevas animaciones
60+ controles con código fuente
Funciona fuera del browser
detección de estado de conexión
Sin necesidad de instalación
Deep linking
Multitouch
Expression blend 3 con posibilidad de control de código
43. Marcela A. Castagno Leonardo Sailer
mixplay.tv Global Crossing
mcastagno@claxson.com leonardo.sailer@globalcrossing.com
Pablo A. Menegol Juan Ladetto
mixplay.tv Microsoft Argentina
pmenegol@claxson.com juanl@microsoft.com