45
Hosted by Tikal. www.tikalk.com Cost-Benefit Open Source Israel Israel JB JB oss oss U U ser ser G G roup roup Session Session 09 09 Flex Flex RIAvolutionize your web app RIAvolutionize your web app Ilan Avigdor Ilan Avigdor "Tikal Knowledge" "Tikal Knowledge" [email protected] [email protected]

FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

  • Upload
    lamnhan

  • View
    222

  • Download
    4

Embed Size (px)

Citation preview

Page 1: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

HostedbyTikal. www.tikalk.com Cost-BenefitOpenSource

IsraelIsraelJBJBossossUUserserGGrouproupSessionSession0909

FlexFlexRIAvolutionizeyourwebappRIAvolutionizeyourwebapp

IlanAvigdorIlanAvigdor"TikalKnowledge""TikalKnowledge"[email protected]@Tikalk.com

Page 2: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 2 www.tikalk.com

Israel

JBUG

AgendaAgenda

Introduction Architecture

»Client+Demo

»Communication

»Server Conclusions

Page 3: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 3 www.tikalk.com

Israel

JBUG

RIA ConceptsRIA Concepts

DesktopRich,InternetReach

Applicationvs.Site

Pluginvs.Browser

Runsonclientmachine

Page 4: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 4 www.tikalk.com

Israel

JBUG

FLEX ConceptsFLEX Concepts

Layeronflashfordevelopers

ActionScript3.0

CompiledforAVM2

Page 5: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 5 www.tikalk.com

Israel

JBUG

Advantages - RIAAdvantages - RIA

ForUsers

»Desktop-likeexperience

»Responsiveness

»Cross-browser

»Statefull(nounnecessarypage

reloads)

Page 6: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 6 www.tikalk.com

Israel

JBUG

Advantages - RIAAdvantages - RIA

ForDevelopers

»OOP–Webforthenon-webbers

»Statefull

»Maintenance-Onecodebaseforweb

anddesktop

»Effortlessdeployment

Page 7: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 7 www.tikalk.com

Israel

JBUG

Disadvantages – RIADisadvantages – RIA

Plugindependency

Initialloadandinitialization

Desktop-like

»Memoryleaks

»CPUbottlenecks

Page 8: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 8 www.tikalk.com

Israel

JBUG

Advantages – Adobe FLEXAdvantages – Adobe FLEX

Capabilities

Ubiquity

DeploymentFlexibility

ProvenTechnology

Expressiveness

Openness

Innovation

Page 9: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 9 www.tikalk.com

Israel

JBUG

Disadvantages – Adobe FlexDisadvantages – Adobe Flex

LimitedtoFlashplayerabilities

SWFisproprietary

PopUpwindowslimitedtobrowsersize

MultiThreadingnotsupported

Searchengines–Not

Page 10: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 10 www.tikalk.com

Israel

JBUG

ArchitectureArchitecture

Page 11: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 11 www.tikalk.com

Israel

JBUG

ArchitectureArchitecture

Client

Communicationwithserver

Server

Page 12: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 12 www.tikalk.com

Israel

JBUG

Flex Client FeaturesFlex Client Features

RichComponentLibrary Displaylistprogramming MXML EventModel Effects Styling&skinning Binding Charting(notincluded) Constraintbasedlayout

Page 13: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 13 www.tikalk.com

Israel

JBUG

Flex Client Features Flex Client Features cont.cont.

Drag&Drop Historymanagement Printing Communicationwithwrapper Sharedobject Highlycustomizable Richmediaintegration Modularity

Page 14: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 14 www.tikalk.com

Israel

JBUG

Flex Visual ComponentsFlex Visual Components

General Buttons Date Loaders Menu Text Containers Repeaters

Page 15: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 15 www.tikalk.com

Israel

JBUG

Flex ComponentsFlex Components

Print Validators Formatters Effects States Transitions Datavizualization

» Charts

» DataGrid

» OLAPDataGrid

Page 16: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 16 www.tikalk.com

Israel

JBUG

Display ProgrammingDisplay Programming

Page 17: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 17 www.tikalk.com

Israel

JBUG

MXMLMXML

<mx:Application ><mx:Button id="button" />

/mx:Application>

Equalspublic class Example extends Application

{internal var button:Button;

public function Example() {super();button = new Button();addChild(button);

}

Page 18: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 18 www.tikalk.com

Israel

JBUG

Flex Event ModelFlex Event Model

Page 19: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 19 www.tikalk.com

Israel

JBUG

Flex BindingFlex Binding

<mx:Application> <mx:TextInputid="src"/> <mx:Textid="dest" text="{src.text.toUpperCase()}"/></mx:Application>

Page 20: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 20 www.tikalk.com

Israel

JBUG ArchitectureArchitecture

Client – MVC ArchitectureClient – MVC Architecture

Page 21: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 21 www.tikalk.com

Israel

JBUG

Why?

»Out-Of-The-BoxMVCframework

»Crossprojects

»Betterscalability

Which?

»Cairngorm

»PureMVC

ArchitectureFlex Frameworks

Page 22: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 22 www.tikalk.com

Israel

JBUG

DEMO

Page 23: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 23 www.tikalk.com

Israel

JBUG

Protocols

CommunicationPatterns

»RPC

»DataPush

ArchitectureCommunication With Server

Page 24: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 24 www.tikalk.com

Israel

JBUG

HTTP

SOAP

XML

Binary(POP3,SMTP,IMAP,andNNTP)

RTMP

JSON

AMF3

Communication With ServerProtocols

Page 25: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 25 www.tikalk.com

Israel

JBUG

Hosted by Tikal 15 www.tikalk.com

Communication with ServerCommunication with ServerProtocols benchmarkProtocols benchmark

Page 26: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 26 www.tikalk.com

Israel

JBUG

Fluorine-.Net

Red5–java

Cinnamon–java

SabreAMF–PHP5

Rubyamf–Rails

PyAMF-Python

Communication With ServerAMF3 ImplementationsAMF3 Implementations

Page 27: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 27 www.tikalk.com

Israel

JBUG

RequestResponse

»HTTP

»WebServices

»Remoting

DataPush

»Sockets-Bidirectionalconnection

»Messaging-Pub/Sub

Communication With ServerCommunication PatternsCommunication Patterns

Page 28: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 28 www.tikalk.com

Israel

JBUG Communication with ServerCommunication with Server

HTTPHTTP

<mx:HTTPService url="http://localhost/req.php"method="POST">

<mx:request> <username>UserName</username><address>Address</address>

</mx:request></mx:HTTPService>

Page 29: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 29 www.tikalk.com

Israel

JBUG Communication with ServerCommunication with Server

Web ServiceWeb Service

<mx:WebService id="userReq" wsdl=”http://Localhost/users.cfc?wsdl">

<mx:operation name="returnRecords" result="returnRecordsHandler()" />

<mx:operation name="insertRec"result="insertCFCHandler()" />

</mx:WebService>

private function clickHandler():void { userReq.insertRec(n.text,address.text); }

Page 30: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 30 www.tikalk.com

Israel

JBUG Communication with ServerCommunication with Server

RemotingRemoting

<mx:RemoteObject id="userReq"destination="ColdFusion"source="flexapp.returnusers">

<mx:method name="insertRecord"result="insertHandler()"/>

</mx:RemoteObject>

private function Onclick():void{userReq.insertRecord( name.text,

address.text); }

Page 31: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 31 www.tikalk.com

Israel

JBUG Communication with ServerCommunication with Server

SocketsSockets<mx:Application >

private function Onconnect(event:Event):void{

trace("Connected");}

private function Ondata(event:DataEvent){trace ("data arrived" + event.data);}

<net:XMLSocket id="sock"connect="Onconnect()" data="OnData()"/>

<mx:Buttonclick="{sock.connect('localhost',4444)}"/>

</mx:Application>

Page 32: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 32 www.tikalk.com

Israel

JBUG Communication with ServerCommunication with Server

Messaging RegistrationMessaging Registration<mx:Producer id="chat"

destination="MyTransientTopic" /> <mx:Consumer id="chatSubscriber"

destination="MyTransientTopic"

message="receive(event)" />

Page 33: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 33 www.tikalk.com

Israel

JBUG Communication with ServerCommunication with Server

Messaging Send/ReceiveMessaging Send/Receiveprivate function sendChatMessage():void {

msg = new AsyncMessage();

msg.body = input.text;

chat.send(msg);

}

receive(event:MessageEvent):void{

var msg:AsyncMessage = event.message as AsyncMessage; output.text += msg.body ;

}

Page 34: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 34 www.tikalk.com

Israel

JBUG

LiveCycleES–J2EE

LiveCycleDS–J2EE

BlazeDS(opensource)–J2EE

Granite(opensource)–J2EE

WebOrb(opensource)

».NET,J2EE,ROR,PHP

ArchitectureArchitectureServer side PlatformsServer side Platforms

Page 35: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 35 www.tikalk.com

Israel

JBUG Server side PlatformsServer side Platforms

LiveCycle ESLiveCycle ES

Page 36: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 36 www.tikalk.com

Israel

JBUG Server side PlatformsServer side Platforms

LiveCycle DS vs. BlazeDSLiveCycle DS vs. BlazeDS

LiveCycle DS ExpressLiveCycle DS Express LiveCycle DS CommunityLiveCycle DS Community

Page 37: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 37 www.tikalk.com

Israel

JBUG

.Net»Remoting,DataManagementMessaging,RTMP,AMF

Java»Remoting,DataManagementMessaging

Rubi»Remoting

PHP»Remoting

Server side PlatformsServer side PlatformsWebOrbWebOrb

Page 38: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 38 www.tikalk.com

Israel

JBUG

Stable(Productionready)»AMF3»Ejb3services(sessionbeans)»Ejb3persistence(Hibernate)withlazy-loadingsupport»SpringserviceswithAcegisecurity»Pojoservices

Experimental(beta)»Datapush(Gravity)»Seamservices»Guice/Warpservices

Server side PlatformsServer side PlatformsGraniteGranite

Page 39: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 39 www.tikalk.com

Israel

JBUG

QA?

Page 40: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 40 www.tikalk.com

Israel

JBUG

Appendix

Page 41: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 41 www.tikalk.com

Israel

JBUG Architecture

Client – Cairngorm Architecture

Page 42: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 42 www.tikalk.com

Israel

JBUG Architecture

Client – PureMVC Architecture

Page 43: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 43 www.tikalk.com

Israel

JBUG

DevelopedandusedbyAdobeConsulting

Pros

»defacto-standardformostorganizations

»Easytolearn

Flex frameworksCairngorm

Page 44: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 44 www.tikalk.com

Israel

JBUG

ConsCons

»Extensiveuseofsingletons

»Doesnotofferanelegantwayforits

controllertocommunicatebacktoits

views(workaroundexists)

»Problematicwhenusingmodules.

Flex frameworksCairngorm

Page 45: FlexFlex - tikalk.com · FlexFlex RIAvolutionize RIAvolutionize your your web appweb app Ilan Avigdor Ilan Avigdor "Tikal Knowledge ... Plugin vs. Browser

Hosted by Tikal 45 www.tikalk.com

Israel

JBUG

NoFlexdependencyorawareness Pros»CleanerseparationofviewandVos»Considered"better"

Cons»NoServiceLocator-liketool»NoModel-ViewDataBinding»Requiresmorework»Morecomplex

Flex frameworksPureMVC