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

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 

Kürzlich hochgeladen (19)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 

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