Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação

Download Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação

Post on 17-Apr-2015

102 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

<ul><li> Slide 1 </li> <li> Tpicos avanados em internet B Carlos Oberdan Rolim Cincia da Computao </li> <li> Slide 2 </li> <li> JSON (JavaScript Object Notation) </li> <li> Slide 3 </li> <li> O que JSON JSON um formato para troca de informaes Usado por aplicaes que fazem uso de Ajax Aspectos mais importantes na troca de dados: Simplicidade Extensabilidade Interoperabilidade Leitura humana </li> <li> Slide 4 </li> <li> O que JSON Subconjunto da ECMA-262 Third Edition. Independente de linguagem Baseado em texto Formato leve Simples de parsear </li> <li> Slide 5 </li> <li> O que JSON uma notao aplicada em JavaScript para que seja possvel a definio de objetos (estruturas) complexas Sua forma de aplicao assemelha-se a um objeto abstrado do mundo real o qual trabalhamos em POO Fornece a capacidade de atribuir mtodos de execuo (funes) que estaro diretamente ligadas ao objeto criado prototype </li> <li> Slide 6 </li> <li> O que JSON Bastante utilizado para auxiliar a execuo de chamadas AJAX onde o retorno obtido da execuo no servidor obedece aos padres de criao de objetos JSON para que os dados retornados possam ser lidos em JavaScript. Desta forma, a programao no servidor gera Strings que sero interpretadas no cdigo JavaScript atravs da funo eval() ao qual dar a origem a um objeto em JavaScript </li> <li> Slide 7 </li> <li> O que NO No um formato de documento No uma linguagem de marcao No um formato de serializao: No possui estruturas ciclicas ou recorrentes No possui estruturas invisveis No possui funes </li> <li> Slide 8 </li> <li> Histrico 1999 ECMAScript Third Edition (European Computer Manufacturers Association) Linguagem de programao baseada em scripts Base de criao do JavaScript e ActionScript 2001 State Software, Inc. 2002 JSON.org 2005 Ajax 2006 RFC 4627 </li> <li> Slide 9 </li> <li> Linguagens Chinese English French German Italian Japanese Korean </li> <li> Slide 10 </li> <li> Linguagens ActionScript C / C++ C# Cold Fusion Delphi E Erlang Java Lisp Perl Objective-C Objective CAML PHP Python Rebol Ruby Scheme Squeak </li> <li> Slide 11 </li> <li> Como funciona JSON um subset de JavaScript. Pode ser parseado atravs de um parser JavaScript Pode representar desde objetos simples at objetos complexos Valores suportados String Number Boolean Objetos Arrays Null </li> <li> Slide 12 </li> <li> Valores Strings Numbers Booleans Objects Arrays null </li> <li> Slide 13 </li> <li> Valores </li> <li> Slide 14 </li> <li> Strings Sequencia de 0 ou mais caracteres Unicode No Um caracter representado como uma string de tamanho 1 Envolvido por aspas duplas Barra de escape </li> <li> Slide 15 </li> <li> String </li> <li> Slide 16 </li> <li> Numbers Integer Real Scientific No octal or hex No NaN or Infinity Use null instead </li> <li> Slide 17 </li> <li> Number </li> <li> Slide 18 </li> <li> Booleans true false </li> <li> Slide 19 </li> <li> null Um valor que no nada </li> <li> Slide 20 </li> <li> Object So conjuntos no ordenados de pares formados por chave/valor (key/value) Objetos so envolvidos por { }, separa pares key/value : separa keys e values Keys so strings Values so valores JSON struct, record, hashtable, object </li> <li> Slide 21 </li> <li> Object </li> <li> Slide 22 </li> <li> {"name":"Jack B. Nimble","at large": true,"grade":"A","level":3, "format":{"type":"rect","width":1920, "height":1080,"interlace":false, "framerate":24}} </li> <li> Slide 23 </li> <li> Object { "name": "Jack B. Nimble", "at large": true, "grade": "A", "format": { "type": "rect", "width": 1920, "height": 1080, "interlace": false, "framerate": 24 } </li> <li> Slide 24 </li> <li> Array So sequencias ordenadas de valores So envolvidas por [], separa valores JSON no fala nada sobre indices. Uma implementao pode iniciar em 0 ou 1. </li> <li> Slide 25 </li> <li> Array </li> <li> Slide 26 </li> <li> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] [ [0, -1, 0], [1, 0, 0], [0, 0, 1] ] </li> <li> Slide 27 </li> <li> Arrays vs Objects Use objetos quando as chaves so strings arbitrarias Use arrays quando as chaves so inteiros sequenciais No confundir com o termo Array Associativo </li> <li> Slide 28 </li> <li> JSON x XML JSON muito usado em AJAX. O The X do AJAX vm de XML { "fullname": "Swati Kumar", "org": "Columbia", } Em XML Swati Kumar Columbia </li> <li> Slide 29 </li> <li> JSON x XML JSON no lado cliente var name = eval('(' + req.responseText + ')').fullname.value; Para acessar um elemento composto eval('(' + req.responseText + ')').xyz.abc.value; Pode-se perceber que qualquer nvel de profundidade acessado facilmente </li> <li> Slide 30 </li> <li> JSON x XML XML no lado cliente var root = req.responseXML; var name = root.getElementsByTagName(fullname); Para acessar um elemento composto root.getElementsByTagName(xyz)[0].firstChild Para acessar nveis mais profundos existe mais overhead Reduzida extensabilidade em XML </li> <li> Slide 31 </li> <li> Aspectos de segurana Same Origin Policy - JavaScript pode acessar o contedo de uma pgina web somente se a pgina e o JavaScript originam do mesmo domnio JavaScripts malficos podem ler informaes sensveis de outros sites usando as credenciais do cliente e enviar esses dados de volta ao atacante Embora o JavaScript malfico no possa manipular diretamente o contedo, ele pode visualizar a execuo e armazenar os valores retornados Esse problema foi agravado com JSON j que arrays JSON so por si prprias objetos JavaScript e qualquer script malfico pode ver esses objetos diretamente </li> <li> Slide 32 </li> <li> Onde JSON pode ser usado Devido ao seu formato leve pode ser usado para transferir quantidade mdia de dados Pode ser renderizado em HTML Aplicaes AJAX Usar em aplicaes baseadas em browser </li> <li> Slide 33 </li> <li> Forma de uso Devido ao conceito de Orientao a Objetos aplicado ao JavaScript no incomum que ao JSON sejam atribudos atributos privados e pblicos. Estes atributos tero comportamentos diferenciados dentro do objeto obedecendo s regras de modificadores utilizadas em Orientao a Objetos Atributos privados acessados apenas por cdigos executados dentro dos mtodos pertencentes ao objeto Atributos pblicos estaro disponveis para acesso externo a quem instancia este objeto </li> <li> Slide 34 </li> <li> Forma de uso Existem duas formas de gerar objetos JSON. 1 - Trabalhando com construo do objeto a partir de funes as quais acabam por fazer papel de construtor do objeto JavaScript. 2 - Trabalhando com interpretao de Strings contendo os padres de notao JSON. </li> <li> Slide 35 </li> <li> Forma de uso Primeira forma Criao de JSON a partir de funes function DefinicaoObjeto() { this.Atributo1 = "Primeiro Atributo"; //atributo pblico var Atributo2 = "Segundo Atributo"; //atributo privado this.ValorConcatenado = this.Atributo1 + " - " + Atributo2; //atributo publico; } var meuObj = new DefinicaoObjeto(); // momento de criao do JSON </li> <li> Slide 36 </li> <li> Forma de uso Atributo1 this indica que pertencer ao objeto e no ao contexto local Atributo2 Contexto local no estando acessvel a quem instanciar o objeto Criao do objeto JSON Para acessar seus atributos pblicos alert(meuObj.Atributo1); alert(meuObj.ValorConcatenado); </li> <li> Slide 37 </li> <li> Forma de uso Segunda forma Criao de JSON a partir de strings Devem seguir alguns padres de notao para que o Compilador JavaScript consiga interpret-las e criar uma estrutura complexa, ou seja, criar o objeto A diferena entre criao do JSON a partir de mtodos e a criao do JSON a partir de Strings est pura e claramente em sua origem de existncia, pois a partir do momento que o objeto foi criado, no existem mais diferenas e sua utilizao igual para ambos os casos </li> <li> Slide 38 </li> <li> Forma de uso var meuObj = eval('({' + "Retorno:{'Atributo1':'Valor1','Atributo2':'Valor2'}" + '})'); alert(meuObj.Retorno.Atributo1); alert(meuObj.Retorno.Atributo2); O mtodo javaScript chamado eval() serve para que o Compliador JavaScript resolva a instruo da String JSON e crie o objeto. A Composio da String fragmentada em 3 partes. 1 - Definir o objeto. 2 - Definir o atributo. 3 - Definir o valor. Azul = definio do objeto. Indica que Retorno um objeto complexo Preto = Atributo Laranja = Valor </li> <li> Slide 39 </li> <li> Forma de uso Criao de estrutura complexa atravs de strings var meuObj = eval('({' + "Retorno:[{'Atributo1':'Valor1','Atributo2':'Valor2'},{'Atributo1':' Valor3', 'Atributo2':'Valor4'}]" + '})'); alert(meuObj.Retorno[0].Atributo1); alert(meuObj.Retorno[1].Atributo2); Para definio de um array usar [ ] Separao de grupos de atributos que se encontram dentro de { } por vrgulas, ficando desta forma: {},{} Acesso atravs de meuObj.Retorno[0].Atributo1 </li> </ul>

Recommended

View more >