slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Ejemplo práctico: Aplicación tipo Web 2.0 { “lugares visitados” } PowerPoint Presentation
Download Presentation
Ejemplo práctico: Aplicación tipo Web 2.0 { “lugares visitados” }

Loading in 2 Seconds...

  share
play fullscreen
1 / 18
Download Presentation

Ejemplo práctico: Aplicación tipo Web 2.0 { “lugares visitados” } - PowerPoint PPT Presentation

salome
153 Views
Download Presentation

Ejemplo práctico: Aplicación tipo Web 2.0 { “lugares visitados” }

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Ejemplo práctico: Aplicación tipo Web 2.0 {“lugares visitados”} Alejandro Mezcua MVP Device Application Development alejandro.mezcua@byteabyte.net http://www.byteabyte.net/

  2. Objetivos • Mostrar el uso de servicios Web WCF en .NET Compact Framework 3.5 • Ver un ejemplo de integración de una solución completa (móvil – Web)

  3. Escenario

  4. {en vivo } demo

  5. Pasos de construcción Servicio WCF "FotoUploader" (I) • Servicio creado en una aplicación Web ASP.NET • Binding básico • Único utilizable desde .NET CF • <endpoint • address="" • binding="basicHttpBinding" • bindingConfiguration="fotoUploaderConfig” • contract="LugaresVisitadosWebSite.IFotoUploader"> • …

  6. Pasos de construcción Servicio WCF "FotoUploader" (II) • Ampliado el límite de elementos aceptables para un parámetro de tipo array • Por omisión 32k • Una imagen es un byte[] <bindings> <basicHttpBinding> <bindingname="fotoUploaderConfig"> readerQuotasmaxArrayLength="131072" /> </binding> </basicHttpBinding> </bindings>

  7. Pasos de construcción Servicio WCF "FotoUploader" (III) • Servicio alojado en IIS • Guarda fotos y metadatos (posición) en App_Data • No accesible con Server.MapPath • El contexto habitual de IIS no está accesible en WCF por omisión string fotoLocalPath = String.Format("{0}\\{1}\\{2}", HostingEnvironment.ApplicationPhysicalPath, "App_Data", fotoFileName);

  8. {FotoUploaderSvc} demo

  9. Pasos de construcción Cliente .NET CF (I) • Aplicación Windows Forms .NET CF 3.5 • Creación del proxy usando NetCFSvcUtil.exe • Instalado con los “Power Toys for .NET CF 3.5” (no viene con Visual Studio de serie) • C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin> • Netcfsvcutil.exe /language:cs http://[servicio].svc

  10. Pasos de construcción Cliente .NET CF (II) • Incluir los archivos generados en el proyecto • CFClientBase.cs, FotoUploader.cs • Usar el proxy para invocar al servicio web • FotoUploaderClient uploader = new FotoUploaderClient( • FotoUploaderClient.CreateDefaultBinding(), • new System.ServiceModel.EndpointAddress([UrlServicio])); • if (!uploader.UploadFoto(fileByteBuffer, latitud, longitud, notas)) • …

  11. {LugaresVisitadosWMClient } demo

  12. Pasos de construcción Aplicación Web (I) • Permite mostrar las fotos en tamaño completo o reducido • Al estar en App_Data no son accesibles directamente, se usa un HttpHandler • http://[server]/[dir]/fotoHandler.ashx?fileName=[fileInApp_Data]&width=[imageWidth]

  13. Pasos de construcción Aplicación Web (II) • Las fotos en el mapa se muestran desde JavaScript • Se usa un servicio WCF que expone los datos en formato de JSON (fotosCoordenadas.svc) • <endpointBehaviors> • <behaviorname="jsonBehavior" > • <enableWebScript/> • </behavior> • </endpointBehaviors> • … • <endpointaddress=““ binding="webHttpBinding“ • contract="LugaresVisitadosWebSite.IFotosCoordenadas" • behaviorConfiguration="jsonBehavior"> • …

  14. Pasos de construcción Aplicación Web (III) • Desde ASP.NET AJAX se accede al servicio mediante una referencia • Desde JavaScript se usa como un objeto JavaScript • <asp:ScriptManagerID="ScriptManager" runat="server"> • <Services> • <asp:ServiceReference Path="~/fotosCoordenadas.svc" /> • </Services> • </asp:ScriptManager> functionmapReady() { var ws = new byteabyte.net.samples.IFotosCoordenadas(); ws.GetFotos(getGetFotosComplete); }

  15. Pasos de construcción Aplicación Web (IV) • El nombre a usar en JavaScript lo debe dar intellisense, si no, acceder al servicio y ver qué devuelve • La llamada es asíncrona, en la respuesta se tienen objetos (según se exporten en el servicio) • http://localhost/lugaresvisitados/fotoscoordenadas.svc/js functiongetGetFotosComplete(result) { … for(var i = 0; i < result.length; i++) { var ve = new VELatLong(result[i].Latitud, result[i].Longitud); … }

  16. {La aplicacion Web } demo

  17. {¿Preguntas?} Gracias Alejandro Mezcua MVP Device Application Development http://www.byteabyte.net/ alejandro.mezcua@byteabyte.net