from a to web (2009)

21
TMT CALENDAR HTTP Requests, Remoting e ValueObjects

Upload: luca-bianchi

Post on 17-Jul-2015

115 views

Category:

Technology


0 download

TRANSCRIPT

TMT CALENDAR

HTTP Requests, Remoting e ValueObjects

AGENDA

1. TMT Calendar

2. HTTP Service e URL Loader

3. RemoteObject

4. ValueObject

5. Confronti

TMT_CALENDAR

TMT_CALENDAR

HTTP REQUEST

• Viene invocato un URL sul server– HttpService – OOP friendly

– URLLoader – simile ad AS2

• I dati sono in formato testuale ( = cast)

HTTPSERVICE - SINTASSI

<mx:HTTPService

id = “myService”

url= “http://www.miapaginacfml.cfm”

resultFormat = “e4x”

fault = “faultHandler(event)”

result = “resultHandler(event)” >

</mx:HTTPService>

Posso lanciare la chiamata con myService.send([parameters])

[parameters] deve essere un tipo base o un XML

ESEMPIO: CONFIG LOADING

• Parametri generati dinamicamente

• Caricato allo startup

• XML

• Nella versione HTML il file viene letto con un accesso al disco,

• <cfsilent> garantisce sicurezza

CONFIG/CALENDAR.CFM

CONFIG/FLEX.CFM

La versione Flex non usa <cfsilent> perchè accede via HTTP

DENTRO IL CONFIGOBJ

Com.lk2.core.components.config.RemoteConfigObj

THE CHICKEN-EGG PROBLEM

• I parametri sono caricati dal configFile

• La path del configFile è un parametro

• Come ottengo l’url del contenitore di param?

• Una soluzione: FlashVars

• Brutto, scomodo e non CF-oriented

LK2SWF

• Un custom tag wrapper per l’SWF e tutti parametri

• I parametri sono configurabili tramite gli attributi del tag

• I parametri dell’applicazione sono passati tramite struct

• Si può usare anche il configXML

• Supporto per il flex debugger

• includeJS – per escludere il JavaScript di caricamento

• alternativeText, alternativeInclude – per gestire la generazione di contenuto in assenza del FlashPlayer

REMOTING

• Invoco direttamente i metodi dei CFC

• I dati sono passati in formato binario

• Posso mandare al client un CFC

REMOTEOBJECT - SINTASSI

<mx:RemoteObject

id = “myRO”

destination= “ColdFusion”

source= “percorso.al.mio.cfc”

</mx:RemoteObject>

I metodi del CFC sono invocati direttamente con myRO.getHelloWorld([parameters])

[parameters] può essere qualunque cosa… anche un’oggetto AS..

Cos’è l’attributo “destination”? (remoting-config.xml)

Definire dei channel dinamici? (RemoteObjectFactory.as)

VALUEOBJECTS

• Mapping 1:1 tra CFC e classi AS3

• Le classi sono legate dal metadato RemoteClass

• ProvaRO

MAPPING DI DATI

String

Array[]

Struct[]

Query

CFC Class

CFC Date

CFC Numeric

CF XML

String

Array

Object (non tipizzato)

ArrayCollection

Object (tipizzato se uso VO)

ActionScript Date

ActionScript Numeric

ActionSctipt XML Object

ColdFusion ActionScript

ACTION MESSAGE FORMAT 3

• Dati Binari

• Dati Compressi

• Similitudini con JAVA RMI

• HTTPS

• Le destinazioni sono in services-config.xml

• Specifiche rilasciate Open

• Implementazioni non solo CF (es. AMFPHP)

• Si può usare anche per invocare comandi sul back-end

• Il Remoting non consente di inviare dati “raw” al CFC

• Come gestisco immagini/audio/ecc.?

CONFRONTI

• Dati nativamente XML (es.configObj)

• E4X

• WebServices

• Prestazioni

• Evita marshall/unmarshall

• Oggetti complessi

HttpService Remoting

RIFERIMENTI

• TMT Calendar (GPL2)

– Demo su http://visual.unipv.it

– SVN su http://code.google.com/p/tmt-calendar/

• LK2SWF (GPL2) e ProvaRO– Scaricabile da http://www.lk2multimedia.com

• LK2FlexFramework (GPL2)

– SVN su http://code.google.com/p/lk2flexframework/

• Slide (a breve) su CFMentor http://www.cfmentor.com

Q & A

Q & A