BatPlone e WebService: Uma dupla dinâmica



Documentos relacionados
SOA. Service Oriented Architecture. Maxmiliano Franco Braga

Arquiteturas SOA, WOA, e REST

REST Um Estilo de Arquitetura de Sistemas Distribuídos

Integração de sistemas utilizando Web Services do tipo REST

WOW Mobile Rui Miguel Miranda Ramos

Service Oriented Architecture SOA

UFG - Instituto de Informática

Integração de Sis temas Legados com Plone

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Pessoa Física NFE (RFB) Versão: 1.0. Autor: Angelo Bestetti Junior

RestFull WebServices. Rafael Nunes Arquiteto de Software / Instrutor Globalcode. Globalcode Open4Education

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML.

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Webservices. O que é um web service? Características. Por que web services? Tipos de web services

Serviços Web: Introdução

Meu site Plone está lento. O que fazer? Fabiano Weimar dos Santos xiru@xiru.org

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Manual de Integração SMS

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

UNIVERSIDADE. Sistemas Distribuídos

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Estendida (Física) Versão: 1.0. Autor: Angelo Bestetti Junior

Arquiteturas, Padrões e Serviços para Geoprocessamento. Lúbia Vinhas 13/05/2008

Departamento de Informática

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

Sistemas Distribuídos na Web. Pedro Ferreira DI - FCUL

Redes de Computadores Aula 3

INSTALAÇÃO E USO DO GOOGLE APP ENGINE PLUGIN utilizando o Eclipse Galileo

SOA. Fabio Perez Marzullo. Inovando seu negócio por meio de soluções orientadas a serviços. Novatec

Enterprise Java Beans

REST. Caio Nakashima

Guia rápido de uso de Web Services do NFS-e Easy

Sistemas Distribuídos

Web Services utilizando JAX-WS

Projecto Integrador. Introdução ao REST. Material de suporte às aulas de Proj. Integrador (Nuno Preguiça) Copyright DI FCT/ UNL / 1

Webservice LerChaveAutenticadora

TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1

Otimização de infraestrutura. de websites. Fabiano Weimar dos Santos

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Ricardo R. Lecheta. Novatec

Manual Técnico de Utilização do Web Service de Administração do Código de Segurança do Contribuinte - CSC

Prof. Romulo Fagundes Cantanhede. Node.JS. O poder do JavaScript do lado do Servidor

Práticas de Desenvolvimento de Software

MADALENA PEREIRA DA SILVA SLA Sociedade Lageana de Educação DCET Departamento de Ciências Exatas e Tecnológica

Web Services. Autor: Rômulo Rosa Furtado


Criando e consumindo Web service REST com PHP e JSON. Palestrante: Weiberlan Garcia

18/04/2006 Micropagamento F2b Web Services Web rev 00

Construindo portais com Plone. Módulo 3 Templates

CURSO DE PROGRAMAÇÃO EM JAVA

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Projeto SNGPC para Farmácias e Drogarias

Kassius Vargas Prestes

Projecto Integrador. Introdução ao REST. Material de suporte às aulas de Proj. Integrador (Nuno Preguiça) Copyright DI FCT/ UNL / 1

Manual de Integração WebService

QUITETURA AVANÇADA DE SISTEMAS

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Ciência da Computação. alyssonfm@lcc.ufcg.edu.br

Web Services. (Introdução)

PROGRAMA DE MBA em Gestão e Engenharia do Produto. O Produto Internet e suas Aplicações

Interface Web services

SOAP. Web Services & SOAP. Tecnologias de Middleware 2004/2005. Simple Object Access Protocol. Simple Object Access Protocol SOAP

Microsoft.NET. Desenvolvimento Baseado em Componentes

Sistemas Distribuídos

Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior

Objetivos do mini curso. Conhecer a linguagem. Noção de programação utilizando Python. Aprender o báscio.

Scriptlets e Formulários

Programação Web Prof. Wladimir

Rede de Computadores

SOA Introdução. SOA Visão Departamental das Organizações

APLICAÇÕES E SERVIÇOS WEB

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Divisão e Conquista. Túlio Toffolo Marco Antônio Carvalho marco.opt@gmail.com. BCC402 Aula 08 Algoritmos e Programação Avançada

Desenvolvendo um Mashup com a API do Google Maps e com os dados de uma imobiliária

Java II. Sérgio Luiz Ruivace Cerqueira

Computação II Orientação a Objetos

Software e Serviços MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL

Leonardo Gresta Paulino Murta

Minicurso Web Services com PHP

API de Cotações Bolsa Financeira

Aula 4 Arquitetura de software na Web atual: AJAX e Ajax. Prof: Dra. Renata Pontin de Mattos Fortes

Conteúdo da Aula de Hoje. Web Services. Avaliação da Disciplina. O que é um web service? O que é um web service? Vantagens

Manual de Integração

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

Manual Técnico de Utilização do WebService de Cadastro da Capa de Lote Eletrônica CL-e

Web Services. José Mocito. Web Services. Tecnologias de Middleware 2004/2005. Universidade de Lisboa. 11 de Novembro, 2004

2 Conceitos relativos a Web services e sua composição

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

UNIVERSIDADE. Sistemas Distribuídos

Plataforma para Agentes

Allisson Barros 12/ Daniel Luz 13/ Leandro Bergmann 14/ Luiz Fernando Vieira 13/ Uriel Silva 12/

Transcrição:

BatPlone e WebService: Uma dupla dinâmica Plone Symposium South America Brasília 2012

O que vamos abordar? - O que são e para que servem os WebServices? - Vantagens e Desvantagens - WebService SOAP vs Rest - Exemplos de Integração - Dicas de Otimização - Conclusões

O que são e para que servem os WebServices? WebService é uma solução utilizada na INTEGRAÇÃO de sistemas e na comunicação entre APLICAÇÕES DIFERENTES. Os WebServices são COMPONENTES que permitem às aplicações enviar e receber dados em formato XML(!). Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML(!). Aplicação A (Portal Plone) XML WebService Aplicação B (Sistema Legislativo em Java)

Vantagens e Desvantagens Vantagens - Permite a integração entre aplicação escritas em linguagens diferentes - Permite a integração de aplicações dispersas geograficamente (Internet) - Isolamento em camadas (negócio e apresentação) - Inteligível e intuitiva para o ser humano, o que facilita o desenvolvimento de novos aplicativos Desvantagens - Adiciona complexidade as aplicações - Segurança - Pode comprometer a performance da aplicação consumidora - Tipicamente o tamanho do pacote é muito superior aos dados efetivamente úteis

WebServices SOAP vs Rest SOAP Simple(?) Object Access Protocol Rest Representational State Transfer - Mais complexo, lento e pesado - Mais simples, rápido e leve - Mais Seguro (pacote fechado ) - Menos seguro (mais pode usar SSL/HTTPS) - Melhor para operações que precisam ser continuadas (Stateful) - Resultado XML, formatado por um WSDL - Melhor para operações isoladas (Stateless) - Pode ter qualquer formato, inclusive XML e JSON - Permite definição de tipos de dados - Todos os dados são do tipo STRING - Dificuldade para testar e fazer cache em Proxys HTTP - Facilidade para testar e fazer cache em Proxys HTTP - Tamanho do pacote de dados maior - Tamanho do pacote de dados menor

Exemplos de Integração - Google, Yahoo, Amazon, ebay, Buscapé - Câmara dos Deputados (Dados Abertos) package br.gov.camara; import javax.ws.rs.get; import javax.ws.rs.path; from bottle import route, run @route('/hello/:name') def index(name='world'): return '<b>hello %s!</b>' % name run(host='localhost', port=8080) @Path("/hello") public class Hello { @GET @Produces(MediaType.TEXT_PLAIN) public String sayplaintexthello() { return "Hello"; } @GET @Produces(MediaType.TEXT_XML) public String sayxmlhello() { return "<?xml version=\"1.0\"?>" + "<hello> Hello" + "</hello>"; } } @GET @Produces(MediaType.TEXT_HTML) public String sayhtmlhello() { return "<html> " + "<title>" + "Hello Jersey" + "</title>" + "<body><h1>" + "Hello" + "</body></h1>" + "</html> "; }

Exemplos de Integração # -*- coding: utf-8 -*- import SOAPpy from SOAPpy import SOAPProxy TIMEOUT = 60 class Webservices(BrowserView): def webservice_caller(self, wsdl, metodo, parametros, timeout = TIMEOUT, map = {}): if isinstance(parametros, dict) and parametros.get('timeout', None) is not None: timeout = parametros['timeout'] SOAPpy.Config.methodAttributeParameters = map p = SOAPpy.WSDL.Proxy(wsdl, timeout = timeout) if isinstance(parametros, dict): ret = getattr(p, metodo)(**parametros) else: if not isinstance(parametros, tuple): parametros = (parametros,) ret = getattr(p, metodo)(*parametros) return ret

Exemplos de Integração # -*- coding: utf-8 -*- from restful_lib import Connection import simplejson, urllib class Webservices(BrowserView): def restful_caller(self, url, metodo, parametros, http_metodo): try: conn = Connection(url) except: return 'Erro na conexão com ' + url ret = None if http_metodo.upper() == 'GET': try: headers = {'Content-type': 'text/xml', 'Accept':'text/xml'} ret = conn.request_get(resource = metodo, args = parametros, headers) except: ret = 'ERRO na chamada metodo ' + metodo return ret def wsrestful_json_caller(self, url, parametros): url = url + '?' + urllib.urlencode(parametros) result = simplejson.load(urllib.urlopen(url)) return result

Exemplos de Integração #@viewcache(timeout=900) //@memoize def ws_obtemlistadeputados(self): dados = [] parms=() try: dados = self.webservice_caller(wsdl=self.url_wsdl, metodo='obtemdeputados', parametros=parms) except Exception, ex: pass return dados parms=(primeiraletra,codlotacao) webservices = context.restrictedtraverse('@@view_camara_webservice') wsdl = getattr(context,'webserviceserver')+'?wsdl' metodo='listadeputados' o = webservices.webservice_caller(wsdl,metodo,parametros=parms, timeout=60) return o ws = context.restrictedtraverse('@@view_camara_webservice') return ws.wsrestful_json_caller(url, cidade=goiania )

Dicas de Utilização - Uso de Cache em diferentes níveis > Proxy > Zope (@memoize) > MemCached (@viewcache) - WebServices otimizados e que tragam apenas as informações pertinentes - Usuários de BD com permissões restritas - Ajustar o timeout ou usar de forma Assincrona

Conclusões - Se utilizada da forma correta é uma solução eficaz - Avaliar sempre se não seria possível uma abordagem mais direta (Ex: SqlAlchemy) - Sempre que possível, utilizar REST

Obrigado Fábio Surrage de Medeiros fabio.medeiros@camara.gov.br Rafahela Bazzanella, Clayton Caetano, Wilton Alencar