SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Aplicaciones orientadas a datos
en BlackBerry PlayBook
Mariano Carrizo
COM34
Octubre 18 - 20, 2011
Agenda

 Descarga simple de datos
 Flex data components
 Protocolo AMF
 Remote Objects
 Sistema de archivos
 Bases de datos



                            @kiwox– 2
Descarga simple de datos
URLLoader
URLLoader
El Camino Simple

  Clase nativa ActionScript 3
  Permite la descarga de contenidos en varios formatos
     Text
     URL encoded variables
     Binary
  Informa el progreso de descarga
     URLLoader.bytesLoaded
     URLLoader.bytesTotal
  Dispone los datos una vez completada la descarga
                                                         @kiwox– 4
URLLoader
Ejemplo

protected var ldr:URLLoader;

protected function loadData():void {
   ldr = new URLLoader();
   ldr.addEventListener(Event.COMPLETE, onDataComplete);
   ldr.addEventListener(IOErrorEvent.IO_ERROR, onError);
   try {
       ldr.load(new URLRequest("datos.php"));
   } catch(e:Error) {
       trace("Error al descargar datos");
   }
}
                                                           @kiwox– 5
URLLoader
Ejemplo

protected function onDataComplete(event:Event):void {
   trace(ldr.data);
}

protected function onError(event:IOErrorEvent):void {
   trace("Error: "+event.errorID);
}




                                                        @kiwox– 6
URLLoader
Datos en Formato XML

protected var xmlData:XML;

protected function onDataComplete(event:Event):void {
   xmlData = XML(ldr.data);
   for(var i:String in xmlData.item) {
       trace(xmlData.item[i].titulo);
   }
}




                                                        @kiwox– 7
URLLoader
Datos en Formato Binario

ldr = new URLLoader();
ldr.dataFormat = URLLoaderDataFormat.BINARY;
ldr.addEventListener(Event.COMPLETE, onDataComplete);
ldr.addEventListener(IOErrorEvent.IO_ERROR, onError);
ldr.addEventListener(ProgressEvent.PROGRESS, onProgress);

try {
   ldr.load(new URLRequest("imagen.png"));
} catch(e:Error) {
   trace("Error al descargar imagen");
}

                                                            @kiwox– 8
Flex Data Components
Abstrayendo Las Tareas
Flex data components
Abstrayendo Las Tareas

  Simplifican la intermediación con el servidor
  Disponen los datos listos para usarlos
  Admiten formatos más complejos
     XML
     JSON
     AMF
     Objeto/Array
  Permiten enlazar a componentes visuales
     List, TextArea, etc.

                                                  @kiwox– 10
Flex data components
HTTPService

  Obtiene datos directos de estilo REST
  Inicia la llamada con el método send()
  El resultado estará disponible en la propiedad
  lastResult




                                                   @kiwox– 11
Flex data components
HTTPService

<fx:Declarations>
  <s:HTTPService id="servicio"
                  url="miServicio.php" />
</fx:Declarations>

<s:Button label="Descargar" click="servicio.send()" />

<s:List dataProvider="{servicio.lastResult.rss.channel.item}"
  />




                                                         @kiwox– 12
Flex data components
WebService

  Interactúa con servicios WSDL
  Soporta protocolo SOAP
  Permite el envío de parámetros a métodos específicos
  Los resultados pueden ser enlazados o esperados en
  métodos callBack
  Podemos configurar cada operación con elementos
  <s:operation>



                                                         @kiwox– 13
Flex data components
WebService

<s:WebService id="servicio"
       wsdl="http://ws.invesbot.com/stockquotes.asmx?WSDL">

  <s:operation name="GetQuote" resultFormat="object"
                     result="quoteResultHandler(event)">
      <s:request>
             <symbol>SYMBOL</symbol>
      </s:request>
  </s:operation>

</s:WebService>

                                                           @kiwox– 14
Demo
Acceso a Datos Remotos




                         @kiwox– 15
Protocolo AMF
Transferencia Binaria de Datos
Protocolo AMF
Transferencia Binaria de Datos

   Active Message Format
   Formato nativo ActionScript
      ActionScript 2: AMF0
      ActionScript 3: AMF3
   Soporta datos primitivos y compuestos
      String, Number, Null, Boolean…
      Object, Array, XML, ByteArray
      Objetos personalizados (ValueObjects)


   Especificación AMF3: http://goo.gl/b3qbk
                                               @kiwox– 17
Protocolo AMF
Transferencia Binaria de Datos

   Desde ActionScript utilizando NetStream
   En conjunto con Flash Media Server bajo protocolo rtmp:/
   Permite instanciar objetos remotos (servidor)
   Soporte disponible en la mayoría de servidores




                                                        @kiwox– 18
Protocolo AMF
Transferencia Binaria de Datos

var netConnection:NetConnection = new NetConnection();
var responder:Responder = new Responder();
netConnection.connect(“http://localhost/Amfphp/”);
netConnection.call(“DataService/getRecords”, responder);




                                                           @kiwox– 19
Remote Objects



                                      servicio.getAll()




                                                             Servidor
                                        ObjectVO[]
                                                                           Clases PHP



<s:RemoteObject id="servicio” fault="faultHandler(event)” showBusyCursor="true” destination="zend" />


                                                                                                @kiwox– 20
Remote Objects
services-config.xml
<services-config>
  <services>
     <service id="zend-service"
   class="flex.messaging.services.RemotingService”
messageTypes="flex.messaging.messages.RemotingMessage">
        <destination id="zend">
          <channels>
             <channel ref="zend-endpoint"/>
          </channels>
          <properties>
             <source>*</source>
          </properties>
        </destination>
     </service>
  </services>
  <channels>
     <channel-definition id="zend-endpoint” class="mx.messaging.channels.AMFChannel">
        <endpoint uri="http://example.com/server.php” class="flex.messaging.endpoints.AMFEndpoint"/>
     </channel-definition>
  </channels>
                                                                                                       @kiwox– 21
</services-config>
Persistencia de Datos
Almacenamiento en el Dispositivo
Sistema de Archivos

  File
     Localiza y resuelve punteros a archivos
     Permite consultar propiedades y existencia

  FileStream
     Flujo de lectura/escritura de datos
Sistema de Archivos




   Localizar   Crear Flujo de   Leer Datos   Cerrar Flujo
   Recurso        Datos




                                                            @kiwox– 24
Sistema de Archivos




   Localizar   Crear Flujo de   Escribir Datos   Cerrar Flujo
   Recurso        Datos




                                                                @kiwox– 25
Sistema de archivos


var archivo:File = File.documentsDirectory.resolvePath(“datos/listado.xml”);

if(archivo.exists) {
      …
}




                                                                     @kiwox– 26
Directorios

  File.applicationDirectory
     <appDir>/app/air/

  File.applicationStorageDirectory
     <appDir>/data/

  File.documentsDirectory
  File.desktopDirectory
     /shared/documents/

                                     @kiwox– 27
FileStream


var fs:FileStream = new FileStream();
fs.open(archivo, FileMode.READ)


               FileMode.READ
               FileMode.WRITE
               FileMode.APPEND
               FileMode.UPDATE

                                        @kiwox– 28
FileStream
var datos:File = File.applicationStorageDirectory.resolvePath("datos.txt");


var fs:FileStream = new FileStream();
fs.open(datos, FileMode.WRITE);
try {
        fs.writeUTFBytes("Hola mundo");
} catch(e:Error) {
        trace("Error escribiendo");
}
fs.close();


                                                                     @kiwox– 29
FileStream
var datos:File = File.applicationStorageDirectory.resolvePath("datos.txt");
var fs:FileStream = new FileStream();


fs.addEventListener(Event.COMPLETE, completeHandler);


fs.openAsync(datos, FileMode.READ);
var str:String = "";


function completeHandler(event:Event):void {
      str = fs.readUTFBytes(fs.bytesAvailable);
}



                                                                     @kiwox– 30
FileStream
var datos:File = File.applicationStorageDirectory.resolvePath("datos.txt");
var fs:FileStream = new FileStream();
fs.addEventListener(ProgressEvent.PROGRESS, progressHandler);
fs.addEventListener(Event.COMPLETE, completeHandler);
fs.openAsync(datos, FileMode.READ);
var str:String = "";


function progressHandler(event:ProgressEvent):void {
      str += fs.readUTFBytes(fs.bytesAvailable);
}
function completeHandler(event:Event):void {
      trace("Datos listos");
}
                                                                     @kiwox– 31
Bases de Datos
SQLite en Adobe AIR




                      @kiwox– 32
SQLite

  SQLConnection
     Objeto conector
     Localiza el recurso y maneja las transacciones




                                                       @kiwox– 33
SQLite
var conn:SQLConnection = new SQLConnection();

conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);

var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");

conn.openAsync(dbFile);

function openHandler(event:SQLEvent):void
{
    trace(”Base de datos abierta");
}

function errorHandler(event:SQLErrorEvent):void
{
    trace(“Error:”, event.error.message);
    trace(“Detalles:”, event.error.details);
}
                                                            @kiwox– 34
SQLite

var conn:SQLConnection = new SQLConnection();

var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");

try
{
      conn.open(dbFile);
      trace(”Base de datos abierta");
}
catch (error:SQLError)
{
    trace("Error:", error.message);
    trace(”Detalles:", error.details);
}
                                                       @kiwox– 35
SQLite

  SQLStatement
     Transacciones individuales
     Pueden ser asincrónicas




                                   @kiwox– 36
SQLite
var createStmt:SQLStatement = new SQLStatement();
createStmt.sqlConnection = conn;

var sql:String =
    "CREATE TABLE IF NOT EXISTS employees (" +
    "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
    "    firstName TEXT, " +
    "    lastName TEXT, " +
    "    salary NUMERIC CHECK (salary > 0)" +
    ")";
createStmt.text = sql;

createStmt.addEventListener(SQLEvent.RESULT, createResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, createError);

createStmt.execute();
                                                                 @kiwox– 37
SQLite
conn.open(dbFile, OpenMode.UPDATE);

conn.begin();

var insertCustomer:SQLStatement = new SQLStatement();
insertCustomer.sqlConnection = conn;

insertCustomer.text =
    "INSERT INTO customers (firstName, lastName) " +
    "VALUES ('Bob', 'Jones')";

insertCustomer.execute();

var customerId:Number = insertCustomer.getResult().lastInsertRowID;

conn.commit();
                                                               @kiwox– 38
SQLite

var insertPhoneNumber:SQLStatement = new SQLStatement();
insertPhoneNumber.sqlConnection = conn;

insertPhoneNumber.text =
    "INSERT INTO customerPhoneNumbers (customerId, number) " +
    "VALUES (:customerId, '800-555-1234')";

insertPhoneNumber.parameters[":customerId"] = customerId;

insertPhoneNumber.execute();

conn.commit();



                                                                 @kiwox– 39
SQLite

try {
    var insertPhoneNumber:SQLStatement = new SQLStatement();
    insertPhoneNumber.sqlConnection = conn;

   insertPhoneNumber.text =
       "INSERT INTO customerPhoneNumbers (customerId, number) " +
       "VALUES (:customerId, '800-555-1234')";

   insertPhoneNumber.parameters[":customerId"] = customerId;

   insertPhoneNumber.execute();

    conn.commit();
} catch (error:SQLError) {
    conn.rollback();
}                                                              @kiwox– 40
SQLite

  Bases de datos encriptadas
     Utilizan una llave en formato ByteArray


  public function open(reference:Object = null,
                  openMode:String = "create",
                  autoCompact:Boolean = false,
                  pageSize:int = 1024,
                  encryptionKey:ByteArray = null):void


                                                         @kiwox– 41
SQLite

var conn:SQLConnection = new SQLConnection();

var encryptionKey:ByteArray = new ByteArray();
encryptionKey.writeUTFBytes(”CadenaDe16Bytes");

conn.openAsync(dbFile, SQLMode.CREATE, null, false, 1024, encryptionKey);




                                                                  @kiwox– 42
Demo
Manejo de Datos




                  @kiwox– 43
Más Información…

 Recursos
    Adobe DevNet: http://www.adobe.com/devnet/devices.html
    Tour de Flex: http://www.adobe.com/devnet/flex/tourdeflex.html
    Adobe TV: http://tv.adobe.com/
    Libro Flex 4.5: http://goo.gl/RcKXJ




                                                                      @kiwox– 44
¡Muchas Gracias!
Mariano Carrizo
COM34
Octubre 18 - 20, 2011

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Clases de oledb
Clases de oledbClases de oledb
Clases de oledb
 
Espacio de nombres system.Data.Oledb
Espacio de nombres system.Data.OledbEspacio de nombres system.Data.Oledb
Espacio de nombres system.Data.Oledb
 
Clase ix
Clase ixClase ix
Clase ix
 
OLE BD
OLE BDOLE BD
OLE BD
 
8. Acceso A Datos Con Microsoft Ado.Net
8.  Acceso A Datos Con Microsoft Ado.Net8.  Acceso A Datos Con Microsoft Ado.Net
8. Acceso A Datos Con Microsoft Ado.Net
 
Ado.Net
Ado.NetAdo.Net
Ado.Net
 
Objeto ado.net
Objeto ado.netObjeto ado.net
Objeto ado.net
 
Ado.net
Ado.netAdo.net
Ado.net
 
Ado.net
Ado.netAdo.net
Ado.net
 
ADO .NET
ADO .NETADO .NET
ADO .NET
 
Sistema Ado.Net
Sistema Ado.NetSistema Ado.Net
Sistema Ado.Net
 
ADO .net
ADO .netADO .net
ADO .net
 
Ochoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datosOchoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datos
 
Ado.net 2012
Ado.net 2012Ado.net 2012
Ado.net 2012
 
TUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENOTUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENO
 
Acceso A Datos Y Ado.Net
Acceso A Datos Y Ado.NetAcceso A Datos Y Ado.Net
Acceso A Datos Y Ado.Net
 
OBJETO CONNECTION
OBJETO CONNECTIONOBJETO CONNECTION
OBJETO CONNECTION
 
ADO
ADOADO
ADO
 
Visual 2010 sql server 2008
Visual 2010 sql server 2008Visual 2010 sql server 2008
Visual 2010 sql server 2008
 
Ado net
Ado netAdo net
Ado net
 

Ähnlich wie BlackBerry DevCon 2011 - COM34

Ähnlich wie BlackBerry DevCon 2011 - COM34 (20)

Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Trabajo de sistemas de informacion
Trabajo de sistemas de informacionTrabajo de sistemas de informacion
Trabajo de sistemas de informacion
 
Servicios web
Servicios webServicios web
Servicios web
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Insight - Architecture Design
Insight - Architecture DesignInsight - Architecture Design
Insight - Architecture Design
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
 
Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013
 
Proveedor manuel
Proveedor manuelProveedor manuel
Proveedor manuel
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NET
 
Introduccion Ajax V1.0
Introduccion Ajax V1.0Introduccion Ajax V1.0
Introduccion Ajax V1.0
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datos
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVC
 
Mysql adodb pdf_php
Mysql adodb pdf_phpMysql adodb pdf_php
Mysql adodb pdf_php
 

Mehr von Mariano Carrizo

Energía Solar aplicada a sistemas HVAC
Energía Solar aplicada a sistemas HVACEnergía Solar aplicada a sistemas HVAC
Energía Solar aplicada a sistemas HVACMariano Carrizo
 
Internet of Things - CIISI 2016
Internet of Things - CIISI 2016Internet of Things - CIISI 2016
Internet of Things - CIISI 2016Mariano Carrizo
 
Experiencias Mobile - Social Media Day Córdoba
Experiencias Mobile - Social Media Day CórdobaExperiencias Mobile - Social Media Day Córdoba
Experiencias Mobile - Social Media Day CórdobaMariano Carrizo
 
Ecosistemas Mobile - eCommerce Day Argentina 2016
Ecosistemas Mobile - eCommerce Day Argentina 2016Ecosistemas Mobile - eCommerce Day Argentina 2016
Ecosistemas Mobile - eCommerce Day Argentina 2016Mariano Carrizo
 
UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014
UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014
UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014Mariano Carrizo
 
Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...
Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...
Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...Mariano Carrizo
 
Presentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de Argentina
Presentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de ArgentinaPresentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de Argentina
Presentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de ArgentinaMariano Carrizo
 
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeBlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeMariano Carrizo
 
Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...
Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...
Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...Mariano Carrizo
 
Publicaciones Digitales, un enfoque tecnológico
Publicaciones Digitales, un enfoque tecnológicoPublicaciones Digitales, un enfoque tecnológico
Publicaciones Digitales, un enfoque tecnológicoMariano Carrizo
 
1º Jornadas tecnologicas en Rosario
1º Jornadas tecnologicas en Rosario1º Jornadas tecnologicas en Rosario
1º Jornadas tecnologicas en RosarioMariano Carrizo
 
Primer Hackaton del Desafío BlackBerry, Flex para móviles
Primer Hackaton del Desafío BlackBerry, Flex para móvilesPrimer Hackaton del Desafío BlackBerry, Flex para móviles
Primer Hackaton del Desafío BlackBerry, Flex para móvilesMariano Carrizo
 
Adobe Flex 4.5 mobile y Adobe AIR 3 en ARFUG
Adobe Flex 4.5 mobile y Adobe AIR 3 en ARFUGAdobe Flex 4.5 mobile y Adobe AIR 3 en ARFUG
Adobe Flex 4.5 mobile y Adobe AIR 3 en ARFUGMariano Carrizo
 
BlueBox for BlackBerry PlayBook on AppCircus 2011
BlueBox for BlackBerry PlayBook on AppCircus 2011BlueBox for BlackBerry PlayBook on AppCircus 2011
BlueBox for BlackBerry PlayBook on AppCircus 2011Mariano Carrizo
 

Mehr von Mariano Carrizo (15)

Energía Solar aplicada a sistemas HVAC
Energía Solar aplicada a sistemas HVACEnergía Solar aplicada a sistemas HVAC
Energía Solar aplicada a sistemas HVAC
 
Internet of Things - CIISI 2016
Internet of Things - CIISI 2016Internet of Things - CIISI 2016
Internet of Things - CIISI 2016
 
Experiencias Mobile - Social Media Day Córdoba
Experiencias Mobile - Social Media Day CórdobaExperiencias Mobile - Social Media Day Córdoba
Experiencias Mobile - Social Media Day Córdoba
 
Ecosistemas Mobile - eCommerce Day Argentina 2016
Ecosistemas Mobile - eCommerce Day Argentina 2016Ecosistemas Mobile - eCommerce Day Argentina 2016
Ecosistemas Mobile - eCommerce Day Argentina 2016
 
UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014
UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014
UX en interfaces conectadas (Internet of Things) - Adobe en Vivo 2014
 
Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...
Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...
Interfaces no convencionales para iOS, Android... y el resto - Adobe en Vivo ...
 
Presentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de Argentina
Presentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de ArgentinaPresentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de Argentina
Presentación iOS 7 y OSX Mavericks - XVI meetup Desarrolladores iOS de Argentina
 
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeBlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
 
Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...
Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...
Dispositivos móviles y la convergencia de medios, CIITI capítulo Rosario, 1/1...
 
Publicaciones Digitales, un enfoque tecnológico
Publicaciones Digitales, un enfoque tecnológicoPublicaciones Digitales, un enfoque tecnológico
Publicaciones Digitales, un enfoque tecnológico
 
1º Jornadas tecnologicas en Rosario
1º Jornadas tecnologicas en Rosario1º Jornadas tecnologicas en Rosario
1º Jornadas tecnologicas en Rosario
 
Primer Hackaton del Desafío BlackBerry, Flex para móviles
Primer Hackaton del Desafío BlackBerry, Flex para móvilesPrimer Hackaton del Desafío BlackBerry, Flex para móviles
Primer Hackaton del Desafío BlackBerry, Flex para móviles
 
View controllers en iOS
View controllers en iOSView controllers en iOS
View controllers en iOS
 
Adobe Flex 4.5 mobile y Adobe AIR 3 en ARFUG
Adobe Flex 4.5 mobile y Adobe AIR 3 en ARFUGAdobe Flex 4.5 mobile y Adobe AIR 3 en ARFUG
Adobe Flex 4.5 mobile y Adobe AIR 3 en ARFUG
 
BlueBox for BlackBerry PlayBook on AppCircus 2011
BlueBox for BlackBerry PlayBook on AppCircus 2011BlueBox for BlackBerry PlayBook on AppCircus 2011
BlueBox for BlackBerry PlayBook on AppCircus 2011
 

Kürzlich hochgeladen

Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 

Kürzlich hochgeladen (20)

Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 

BlackBerry DevCon 2011 - COM34

  • 1. Aplicaciones orientadas a datos en BlackBerry PlayBook Mariano Carrizo COM34 Octubre 18 - 20, 2011
  • 2. Agenda Descarga simple de datos Flex data components Protocolo AMF Remote Objects Sistema de archivos Bases de datos @kiwox– 2
  • 3. Descarga simple de datos URLLoader
  • 4. URLLoader El Camino Simple Clase nativa ActionScript 3 Permite la descarga de contenidos en varios formatos  Text  URL encoded variables  Binary Informa el progreso de descarga  URLLoader.bytesLoaded  URLLoader.bytesTotal Dispone los datos una vez completada la descarga @kiwox– 4
  • 5. URLLoader Ejemplo protected var ldr:URLLoader; protected function loadData():void { ldr = new URLLoader(); ldr.addEventListener(Event.COMPLETE, onDataComplete); ldr.addEventListener(IOErrorEvent.IO_ERROR, onError); try { ldr.load(new URLRequest("datos.php")); } catch(e:Error) { trace("Error al descargar datos"); } } @kiwox– 5
  • 6. URLLoader Ejemplo protected function onDataComplete(event:Event):void { trace(ldr.data); } protected function onError(event:IOErrorEvent):void { trace("Error: "+event.errorID); } @kiwox– 6
  • 7. URLLoader Datos en Formato XML protected var xmlData:XML; protected function onDataComplete(event:Event):void { xmlData = XML(ldr.data); for(var i:String in xmlData.item) { trace(xmlData.item[i].titulo); } } @kiwox– 7
  • 8. URLLoader Datos en Formato Binario ldr = new URLLoader(); ldr.dataFormat = URLLoaderDataFormat.BINARY; ldr.addEventListener(Event.COMPLETE, onDataComplete); ldr.addEventListener(IOErrorEvent.IO_ERROR, onError); ldr.addEventListener(ProgressEvent.PROGRESS, onProgress); try { ldr.load(new URLRequest("imagen.png")); } catch(e:Error) { trace("Error al descargar imagen"); } @kiwox– 8
  • 10. Flex data components Abstrayendo Las Tareas Simplifican la intermediación con el servidor Disponen los datos listos para usarlos Admiten formatos más complejos  XML  JSON  AMF  Objeto/Array Permiten enlazar a componentes visuales  List, TextArea, etc. @kiwox– 10
  • 11. Flex data components HTTPService Obtiene datos directos de estilo REST Inicia la llamada con el método send() El resultado estará disponible en la propiedad lastResult @kiwox– 11
  • 12. Flex data components HTTPService <fx:Declarations> <s:HTTPService id="servicio" url="miServicio.php" /> </fx:Declarations> <s:Button label="Descargar" click="servicio.send()" /> <s:List dataProvider="{servicio.lastResult.rss.channel.item}" /> @kiwox– 12
  • 13. Flex data components WebService Interactúa con servicios WSDL Soporta protocolo SOAP Permite el envío de parámetros a métodos específicos Los resultados pueden ser enlazados o esperados en métodos callBack Podemos configurar cada operación con elementos <s:operation> @kiwox– 13
  • 14. Flex data components WebService <s:WebService id="servicio" wsdl="http://ws.invesbot.com/stockquotes.asmx?WSDL"> <s:operation name="GetQuote" resultFormat="object" result="quoteResultHandler(event)"> <s:request> <symbol>SYMBOL</symbol> </s:request> </s:operation> </s:WebService> @kiwox– 14
  • 15. Demo Acceso a Datos Remotos @kiwox– 15
  • 17. Protocolo AMF Transferencia Binaria de Datos Active Message Format Formato nativo ActionScript  ActionScript 2: AMF0  ActionScript 3: AMF3 Soporta datos primitivos y compuestos  String, Number, Null, Boolean…  Object, Array, XML, ByteArray  Objetos personalizados (ValueObjects) Especificación AMF3: http://goo.gl/b3qbk @kiwox– 17
  • 18. Protocolo AMF Transferencia Binaria de Datos Desde ActionScript utilizando NetStream En conjunto con Flash Media Server bajo protocolo rtmp:/ Permite instanciar objetos remotos (servidor) Soporte disponible en la mayoría de servidores @kiwox– 18
  • 19. Protocolo AMF Transferencia Binaria de Datos var netConnection:NetConnection = new NetConnection(); var responder:Responder = new Responder(); netConnection.connect(“http://localhost/Amfphp/”); netConnection.call(“DataService/getRecords”, responder); @kiwox– 19
  • 20. Remote Objects servicio.getAll() Servidor ObjectVO[] Clases PHP <s:RemoteObject id="servicio” fault="faultHandler(event)” showBusyCursor="true” destination="zend" /> @kiwox– 20
  • 21. Remote Objects services-config.xml <services-config> <services> <service id="zend-service" class="flex.messaging.services.RemotingService” messageTypes="flex.messaging.messages.RemotingMessage"> <destination id="zend"> <channels> <channel ref="zend-endpoint"/> </channels> <properties> <source>*</source> </properties> </destination> </service> </services> <channels> <channel-definition id="zend-endpoint” class="mx.messaging.channels.AMFChannel"> <endpoint uri="http://example.com/server.php” class="flex.messaging.endpoints.AMFEndpoint"/> </channel-definition> </channels> @kiwox– 21 </services-config>
  • 23. Sistema de Archivos File  Localiza y resuelve punteros a archivos  Permite consultar propiedades y existencia FileStream  Flujo de lectura/escritura de datos
  • 24. Sistema de Archivos Localizar Crear Flujo de Leer Datos Cerrar Flujo Recurso Datos @kiwox– 24
  • 25. Sistema de Archivos Localizar Crear Flujo de Escribir Datos Cerrar Flujo Recurso Datos @kiwox– 25
  • 26. Sistema de archivos var archivo:File = File.documentsDirectory.resolvePath(“datos/listado.xml”); if(archivo.exists) { … } @kiwox– 26
  • 27. Directorios File.applicationDirectory  <appDir>/app/air/ File.applicationStorageDirectory  <appDir>/data/ File.documentsDirectory File.desktopDirectory  /shared/documents/ @kiwox– 27
  • 28. FileStream var fs:FileStream = new FileStream(); fs.open(archivo, FileMode.READ) FileMode.READ FileMode.WRITE FileMode.APPEND FileMode.UPDATE @kiwox– 28
  • 29. FileStream var datos:File = File.applicationStorageDirectory.resolvePath("datos.txt"); var fs:FileStream = new FileStream(); fs.open(datos, FileMode.WRITE); try { fs.writeUTFBytes("Hola mundo"); } catch(e:Error) { trace("Error escribiendo"); } fs.close(); @kiwox– 29
  • 30. FileStream var datos:File = File.applicationStorageDirectory.resolvePath("datos.txt"); var fs:FileStream = new FileStream(); fs.addEventListener(Event.COMPLETE, completeHandler); fs.openAsync(datos, FileMode.READ); var str:String = ""; function completeHandler(event:Event):void { str = fs.readUTFBytes(fs.bytesAvailable); } @kiwox– 30
  • 31. FileStream var datos:File = File.applicationStorageDirectory.resolvePath("datos.txt"); var fs:FileStream = new FileStream(); fs.addEventListener(ProgressEvent.PROGRESS, progressHandler); fs.addEventListener(Event.COMPLETE, completeHandler); fs.openAsync(datos, FileMode.READ); var str:String = ""; function progressHandler(event:ProgressEvent):void { str += fs.readUTFBytes(fs.bytesAvailable); } function completeHandler(event:Event):void { trace("Datos listos"); } @kiwox– 31
  • 32. Bases de Datos SQLite en Adobe AIR @kiwox– 32
  • 33. SQLite SQLConnection  Objeto conector  Localiza el recurso y maneja las transacciones @kiwox– 33
  • 34. SQLite var conn:SQLConnection = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); var folder:File = File.applicationStorageDirectory; var dbFile:File = folder.resolvePath("DBSample.db"); conn.openAsync(dbFile); function openHandler(event:SQLEvent):void { trace(”Base de datos abierta"); } function errorHandler(event:SQLErrorEvent):void { trace(“Error:”, event.error.message); trace(“Detalles:”, event.error.details); } @kiwox– 34
  • 35. SQLite var conn:SQLConnection = new SQLConnection(); var folder:File = File.applicationStorageDirectory; var dbFile:File = folder.resolvePath("DBSample.db"); try { conn.open(dbFile); trace(”Base de datos abierta"); } catch (error:SQLError) { trace("Error:", error.message); trace(”Detalles:", error.details); } @kiwox– 35
  • 36. SQLite SQLStatement  Transacciones individuales  Pueden ser asincrónicas @kiwox– 36
  • 37. SQLite var createStmt:SQLStatement = new SQLStatement(); createStmt.sqlConnection = conn; var sql:String = "CREATE TABLE IF NOT EXISTS employees (" + " empId INTEGER PRIMARY KEY AUTOINCREMENT, " + " firstName TEXT, " + " lastName TEXT, " + " salary NUMERIC CHECK (salary > 0)" + ")"; createStmt.text = sql; createStmt.addEventListener(SQLEvent.RESULT, createResult); createStmt.addEventListener(SQLErrorEvent.ERROR, createError); createStmt.execute(); @kiwox– 37
  • 38. SQLite conn.open(dbFile, OpenMode.UPDATE); conn.begin(); var insertCustomer:SQLStatement = new SQLStatement(); insertCustomer.sqlConnection = conn; insertCustomer.text = "INSERT INTO customers (firstName, lastName) " + "VALUES ('Bob', 'Jones')"; insertCustomer.execute(); var customerId:Number = insertCustomer.getResult().lastInsertRowID; conn.commit(); @kiwox– 38
  • 39. SQLite var insertPhoneNumber:SQLStatement = new SQLStatement(); insertPhoneNumber.sqlConnection = conn; insertPhoneNumber.text = "INSERT INTO customerPhoneNumbers (customerId, number) " + "VALUES (:customerId, '800-555-1234')"; insertPhoneNumber.parameters[":customerId"] = customerId; insertPhoneNumber.execute(); conn.commit(); @kiwox– 39
  • 40. SQLite try { var insertPhoneNumber:SQLStatement = new SQLStatement(); insertPhoneNumber.sqlConnection = conn; insertPhoneNumber.text = "INSERT INTO customerPhoneNumbers (customerId, number) " + "VALUES (:customerId, '800-555-1234')"; insertPhoneNumber.parameters[":customerId"] = customerId; insertPhoneNumber.execute(); conn.commit(); } catch (error:SQLError) { conn.rollback(); } @kiwox– 40
  • 41. SQLite Bases de datos encriptadas  Utilizan una llave en formato ByteArray public function open(reference:Object = null, openMode:String = "create", autoCompact:Boolean = false, pageSize:int = 1024, encryptionKey:ByteArray = null):void @kiwox– 41
  • 42. SQLite var conn:SQLConnection = new SQLConnection(); var encryptionKey:ByteArray = new ByteArray(); encryptionKey.writeUTFBytes(”CadenaDe16Bytes"); conn.openAsync(dbFile, SQLMode.CREATE, null, false, 1024, encryptionKey); @kiwox– 42
  • 43. Demo Manejo de Datos @kiwox– 43
  • 44. Más Información… Recursos  Adobe DevNet: http://www.adobe.com/devnet/devices.html  Tour de Flex: http://www.adobe.com/devnet/flex/tourdeflex.html  Adobe TV: http://tv.adobe.com/  Libro Flex 4.5: http://goo.gl/RcKXJ @kiwox– 44