1 / 18

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

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/. Objetivos. Mostrar el uso de servicios Web WCF en .NET Compact Framework 3.5

salome
Download Presentation

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

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. 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

More Related