41

RIA

Embed Size (px)

DESCRIPTION

Rias have distributed process over server and client, this is a presentation in Sadjad universty of mashhad in may 2011

Citation preview

Page 1: RIA
Page 2: RIA

RIAMohsen Beigi

Salman Namavar

Mostafa Alinaghi pour

Page 3: RIA

WHAT IS RIA ?

DISTRIBUTED PROCESS OVER SERVER AND CLIENT

RICH INTERNET APPLICATIONS

Page 4: RIA

WHAT IS RIA ?SERVER AND CLIENT PROCESSES

SERVER SIDE PROCESS

Executing ScriptsFile management

Database ProcessNetwork Process

CLIENT SIDE PROCESS

Rendering Documents

User InteractionExecuting ScriptsNetwork Process

Page 5: RIA

WHAT IS RIA ?SIMPLE RIA EXAMPLE

ALL PROCESSES ARE IN SERVER SIDE

1

1 REQUEST

2

2 REQUEST

/

3 REQUEST

3

4 REQUEST

=

5 REQUEST

4

Page 6: RIA

WHAT IS RIA ?SIMPLE RIA EXAMPLE

ALL PROCESSES ARE IN CLIENTSIDE

1

0 REQUEST

2 / 3 =4

Page 7: RIA

WHAT IS RIA ?SIMPLE RIA EXAMPLE

DISTRIBUTED PROCESSES

2

0 REQUEST

2 * Sinh(0.1) =

1 REQUEST

2.36253654

Page 8: RIA

WHAT IS RIA ?BEST EXAMPLES

EYE OS GOOGLE INSTANT SEARCH

FACEBOOKGOOGLEANALYTICS

Page 9: RIA

WHAT IS RIA ?RIA REQUIRMENT

SERVER SIDETECHNOLOGIES

CLIENT SIDETECHNOLOGIESAJAX

Page 10: RIA

AJAX

Page 11: RIA

WHAT IS AJAX ?

ASYNCHRONOUS JAVASCRIPT AND XML

LOADING DATA FROM SERVER WITH PARTIAL PAGE REFRESH

JAVASCRIPT HAS THE MAIN ROLE IN THIS COMMUNICATION

Page 12: RIA

WHAT IS AJAX ?AJAX CORE OBJECT

XMLHttpRequest

XMLHttpRequest CONTROLS THE DATA EXCHANGES

IE5 AND IE6 USES AN ActiveXObject INSTEAD OF XMLHttpRequest

Page 13: RIA

WHAT IS AJAX ?XMLHttpRequest

CREATE AN XMLHttpRequest OBJECT

var xmlhttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

Page 14: RIA

WHAT IS AJAX ?XMLHttpRequest

SEND A REQUEST TO A SERVER

xmlhttp.open("GET",“test.txt",true);xmlhttp.send();

xmlhttp.open(“POST",“test.txt",true);xmlhttp.send(‘page=1&ISBN=2564523652’);

Page 15: RIA

WHAT IS AJAX ?XMLHttpRequest

Server Response

responseText

responseXML

Page 16: RIA

WHAT IS AJAX ?XMLHttpRequest

readyState

0: request not initialized

1: server connection established

2: request received

3: processing request

4: request finished and response is ready

Page 17: RIA

WHAT IS AJAX ?XMLHttpRequest

STATUS

Page 18: RIA

WHAT IS AJAX ?XMLHttpRequest

ASYNCHRONOUS - TRUE OR FALSE?

Page 19: RIA

WHAT IS AJAX ?XMLHttpRequest

GET OR POST ?

Page 20: RIA

SYNCHRONIZATION

Page 21: RIA

SYNCHRONIZATION

THE IMPORTANCE OF SYNCHRONIZATION

SERVER TO CLIENT SYNCHRONIZATION

CLIENT TO SERVER SYNCHRONIZATION

Page 22: RIA

SERVER TO CLIENT SYNCHRONIZATION

RECIVING INFORMATIN IN TIME PERIODS

CHANGES INFORMING

HTTP CHUNKING

SYNCHRONIZATION

Page 23: RIA

HTTP CHUNKING

SYNCHRONIZATION

Page 24: RIA

CLIENT TO SERVER SYNCHRONIZATION

SENDING WITH EVERY CHANGE

GATHERING AND SENDING

SYNCHRONIZATION

Page 25: RIA

PERFORMANCE

Page 26: RIA

PERFORMANCE

GENERAL PERFORMANCE

CLIENT SIDE PERFORMANCE

SERVER SIDE PERFORMANCE

Page 27: RIA

PERFORMANCE

MERGE CSS FILES TO INTO ONE FILE

GENERAL PERFORMANCE

MERGE JAVASCRIPT FILES TO INTO ONE FILEMERGE IMAGES FILES TO INTO ONE FILE

.btn1{ background-image: url(images/icons.png); background-position:0px 0px; width:20px; height:20px}.btn2{ background-image: url(images/icons.png); background-position:50px 85px; width:15px; height:15px}

COMPRESS FILES WITH SERVER COMPRESSIONCACHING IS YOUR FRIENDUSE IP INSTEAD OF URL IF POSSIBLEUSE GET INSTEAD OF POST IF POSSIBLEKEEP YOUR CSS FILE SMALL

.elem1{ margin-top:10px; margin-right:5px; margin-bottom:6px; margin-left:8px}.elem2{ margin: 10px 5px 6px 8px;}

OPTIMIZE YOUR HTML CODE

Page 28: RIA

PERFORMANCECLIENT SIDE PERFORMANCE

CACHE YOUR OBJECTS

<script type="text/javascript"> for (i=0;i<document.images.length;i++) document.images[i].src="blank.gif" </script>

<script type="text/javascript"> var theimages=document.images; for (i=0;i<theimages.length;i++) theimages[i].src="blank.gif“ </script>

CONTROL YOUR INTERVALS AND TIMEOUTSUSE JAVASCRIPT LIBRARIES IF YOU NEEDAVOID USING EVAL OR THE FUNCTION CONSTRUCTOR

function addMethod(object, property, code) { object[property] = new Function(code);} addMethod(myObj, 'methodName', 'this.localVar=foo');

function addMethod(object, property, func) {object[property] = func;}addMethod(myObj, 'methodName', function () { 'this.localVar=foo'; });

Page 29: RIA

PERFORMANCESERVER SIDE PERFORMANCE

PROFILE YOUR CODE TO PINPOINT BOTTLENECKSUPGRADE YOUR VERSION OF LANGUAGEUSE OUTPUT BUFFERINGAVOID DOING SQL QUERIES WITHIN A LOOPKNOW YOUR DBMS FOR BEST QUERY PERFORMANCE

Page 30: RIA

DEBUGGING

Page 31: RIA

DEBUGGING

CLIENT SIDE DEBUGGING

SERVER SIDE DEBUGGING

Page 32: RIA

DEBUGGINGCLIENT SIDE DEBUGGING

FireBug

Chrome Developer Tools

Opera Dragonfly

Page 33: RIA

DEBUGGINGSERVER SIDE DEBUGGING

REAL TIME DEBUGGING

DEBUGGING IN REAL SITUATION

USE IDE LANGUAGE DEBUGGING TOOLS

LOG INTO FILE

SEND DEBUG INFORMATION TO CLIENT SIDE

Page 34: RIA

DEBUGGINGSEND DEBUG INFORMATION TO CLIENT SIDE

FIRE PHP

<?php

include_once ‘inc/FirePHP.php’;

FB::log('Log message'); FB::info('Info message'); FB::warn('Warn message'); FB::error('Error message');?>

Page 35: RIA

CASE STUDY

Page 36: RIA

CASE STUDY

JAVASCRIPT FRAMEWORKS

CLIENT SIDE STORAGES

GOOGLE GEARS

MASHUP

YAHOO PIPES

Page 37: RIA

CASE STUDY

jQuery

Dojo

Prototype

JAVASCRIPT FRAMEWORKS

Page 38: RIA

CASE STUDY

POWER IN SELECTORS

JAVASCRIPT FRAMEWORKS - jQuery

33% USED FOR AJAX APPLICATIONS

FLEXIBLE FOR CREATING PLUGIN

MOBILE COMPATIBLE

Page 39: RIA

CASE STUDY

ASYNCHRONOUS COMMUNICATION

JAVASCRIPT FRAMEWORKS - Dojo

PACKAGING SYSTEM

CLIENT-SIDE DATA STORAGE

SUPPORT FOR ADOBE INTEGRATED RUNTIME

Page 40: RIA

CASE STUDY

IMPROVING JAVASCRIPT CLASS-BASED OBJECT LAKE

JAVASCRIPT FRAMEWORKS - Prototype

45% USED FOR AJAX APPLICATIONS

JSON COMPATIBLE

Page 41: RIA

REFERENCES

GOOGLE

WIKIPEDIA

Ajax Reference – MC Graw Hill

WWW.W3.ORG

SMASHINMAGAZINE.COM

RIA Application - WILEY

WWW.PLAVEB.COM

[email protected]