SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Integração de Sistemas
Legados com Plone
Integração de Sistemas Legados com
Plone
Fabiano Weimar dos Santos [Xiru]
xiru@xiru.org
II PyCon Brasil - 2006
Interlegis - Brasília - DF
O que iremos ver?
●
O Problema
●
Servidores de Web Services
– Python + Twisted- web
– Python + Zope + SOAPSupport
– Java + Apache Tomcat + Apache Axis
●
Clientes de Web Services
– Python + SOAPpy
●
Dicas
O que não iremos ver?
●
Conectores de banco de dados relacional no Zope.
●
Especificações de padrões de Web Services.
O Problema
●
Integrar tecnologias diferentes não é uma tarefa
trivial.
●
O Plone costuma ser muito bem aceito como CMS,
mas não tem tanta aceitação como plataforma de
desenvolvimento de aplicações corporativas.
●
Poucas empresas possuem uma infra- estrutura de
TI uniforme. Mesmo quando isso acontece, sempre
é necessário integrar tecnologias diferentes.
●
Como integrar o Plone com aplicações legadas
escritas em J2EE e .Net (ou mesmo COBOL)?
Web Services
●
Service- oriented architecture (SOA)
– http:/ / en.wikipedia.org/ wiki/ Service- oriented_architecture
●
Simple Object Access Protocol (SOAP)
– http:/ / www.w3.org/ TR/ soap/
●
Web Services Description Language (WSDL)
– http:/ / www.w3.org/ TR/ wsdl
●
Há muitos padrões de Web Services (OASIS)
– http:/ / www.oasis- open.org/ specs/ index.php
Vantagens
●
Portabilidade entre diferentes plataformas de
hardware e software.
●
Interoperabilidade entre diferentes linguagens de
programação.
●
Encapsulamento da modelagem dos dados das
aplicações legadas.
●
O Plone se preocupa apenas com as funcionadades
de CMS e repassa as funcionalidades de aplicações
para servidores de aplicação corportativos.
Desvantagens
●
Implementação não trivial
– Contornável usando bons frameworks e ferramentas.
●
Performance
– Contornável usando boas técnicas de programação.
●
Overhead
Servidor Python + Twisted- web
from twisted.web import soap, xmlrpc, resource, server
import os
def getQuote():
return "PyCon Brasil II"
class XMLRPCQuoter(xmlrpc.XMLRPC):
def xmlrpc_quote(self):
return getQuote()
class SOAPQuoter(soap.SOAPPublisher):
def soap_quote(self):
return getQuote()
Servidor Python + Twisted- web
def main():
from twisted.internet import reactor
root = resource.Resource()
root.putChild('RPC2', XMLRPCQuoter())
root.putChild('SOAP', SOAPQuoter())
reactor.listenTCP(7080, server.Site(root))
reactor.run()
if __name__ == '__main__':
main()
Cliente Python + SOAPpy
import xmlrpclib, SOAPpy
s = xmlrpclib.Server('http://localhost:7080/RPC2')
print "XML-RPC:", s.quote()
s = SOAPpy.SOAPProxy("http://localhost:7080/SOAP")
print "SOAP:", s.quote()
Servidor Java + Apache Tomcat +
Apache Axis
public class TomcatAxis {
public String getQuote() {
return "PyCon Brasil II";
}
}
Cliente Python + SOAPpy (WSDL)
from SOAPpy.WSDL import Proxy
url = 'http://localhost:8080/axis/TomcatAxis.jws?wsdl'
p = Proxy(url)
print p.getQuote()
Dicas
●
Evite implementar Web Services que levam muito
tempo para processar uma requisição.
– Implemente “timeout” nas chamadas WSDL e SOAP.
●
Arquivos binários devem ser encodados em
Base64 para serem passados como parametros.
●
Cuidado com métodos que potencialmente podem
retornar grandes quantidades de dados (vetores).
Dicas
●
Evite implementar métodos que recebam tipos
complexos como parametros. O trabalho de
implementar corretamente o marshalling de
namespaces pode não compensar.
●
Cuidado com chamadas de métodos que
modificam dados. Para evitar problemas de
integridade transacional, evite chamar varios
métodos. Chame apenas um método que receba
um documento XML como parametro.
Links
●
Creating XML- RPC Servers and Clients with
Twisted
– http:/ / tinyurl.com/ 6wl5r
●
Twisted and WSDL
– http:/ / tinyurl.com/ oo7xn
●
Chapter 16. Web Services [DRAFT(1.0)]
Part III. J2EE Applications on Geronimo
– http:/ / tinyurl.com/ nb5fo
Links
●
Which style of WSDL should I use?
– http:/ / tinyurl.com/ b4uql
●
PythonCLServiceTool: Python tools for exposing
legacy applications as Web Services
– http:/ / dsd.lbl.gov/ gtg/ projects/ PythonCLServiceTool/
●
pyGridWare: Python Web Services Resource
Framework
– http:/ / dsd.lbl.gov/ gtg/ projects/ pyGridWare/ index.html

Mais conteúdo relacionado

Semelhante a Integração de sistemas legados com Plone

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com pythonUFPA
 
Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua Renzo Nuccitelli
 
Construindo apps com SignalR - AspNet Conference Brasil
Construindo apps com SignalR - AspNet Conference BrasilConstruindo apps com SignalR - AspNet Conference Brasil
Construindo apps com SignalR - AspNet Conference BrasilAndré Paulovich
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSJackson F. de A. Mafra
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Emerson Macedo
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Fabiano Weimar
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 

Semelhante a Integração de sistemas legados com Plone (20)

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Python cherrypy
Python cherrypyPython cherrypy
Python cherrypy
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
PHP no Google AppEngine
PHP no Google AppEnginePHP no Google AppEngine
PHP no Google AppEngine
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com python
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Construindo apps com SignalR - AspNet Conference Brasil
Construindo apps com SignalR - AspNet Conference BrasilConstruindo apps com SignalR - AspNet Conference Brasil
Construindo apps com SignalR - AspNet Conference Brasil
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 

Mais de Fabiano Weimar

Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)Fabiano Weimar
 
Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Fabiano Weimar
 
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo AlheioPortal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo AlheioFabiano Weimar
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneFabiano Weimar
 
Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)Fabiano Weimar
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFabiano Weimar
 
Adaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisAdaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisFabiano Weimar
 
Plone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingPlone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingFabiano Weimar
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesFabiano Weimar
 
Understanding Plone Security
Understanding Plone SecurityUnderstanding Plone Security
Understanding Plone SecurityFabiano Weimar
 
Tips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsTips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsFabiano Weimar
 
Dicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonDicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonFabiano Weimar
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECFabiano Weimar
 
Sistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOSistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOFabiano Weimar
 
Reconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiroReconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiroFabiano Weimar
 

Mais de Fabiano Weimar (20)

Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
 
Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???
 
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo AlheioPortal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo Plone
 
Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)Algoritmos genéticos em python - PyConBrasil 3 (2007)
Algoritmos genéticos em python - PyConBrasil 3 (2007)
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.caching
 
Adaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisAdaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveis
 
Plone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingPlone Yak Shaving and Bikeshedding
Plone Yak Shaving and Bikeshedding
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websites
 
Understanding Plone Security
Understanding Plone SecurityUnderstanding Plone Security
Understanding Plone Security
 
Tips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsTips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile Platforms
 
Segurança no plone
Segurança no ploneSegurança no plone
Segurança no plone
 
Dicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonDicas e truques de otimização de websites python
Dicas e truques de otimização de websites python
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UEC
 
Sistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOSistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDO
 
Novidades do plone 4
Novidades do plone 4Novidades do plone 4
Novidades do plone 4
 
O novo plone 4
O novo plone 4O novo plone 4
O novo plone 4
 
Reconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiroReconhecimento de fala em português brasileiro
Reconhecimento de fala em português brasileiro
 
IPv6
IPv6IPv6
IPv6
 
Plone na nuvem
Plone na nuvemPlone na nuvem
Plone na nuvem
 

Integração de sistemas legados com Plone

  • 2. Integração de Sistemas Legados com Plone Fabiano Weimar dos Santos [Xiru] xiru@xiru.org II PyCon Brasil - 2006 Interlegis - Brasília - DF
  • 3. O que iremos ver? ● O Problema ● Servidores de Web Services – Python + Twisted- web – Python + Zope + SOAPSupport – Java + Apache Tomcat + Apache Axis ● Clientes de Web Services – Python + SOAPpy ● Dicas
  • 4. O que não iremos ver? ● Conectores de banco de dados relacional no Zope. ● Especificações de padrões de Web Services.
  • 5. O Problema ● Integrar tecnologias diferentes não é uma tarefa trivial. ● O Plone costuma ser muito bem aceito como CMS, mas não tem tanta aceitação como plataforma de desenvolvimento de aplicações corporativas. ● Poucas empresas possuem uma infra- estrutura de TI uniforme. Mesmo quando isso acontece, sempre é necessário integrar tecnologias diferentes. ● Como integrar o Plone com aplicações legadas escritas em J2EE e .Net (ou mesmo COBOL)?
  • 6. Web Services ● Service- oriented architecture (SOA) – http:/ / en.wikipedia.org/ wiki/ Service- oriented_architecture ● Simple Object Access Protocol (SOAP) – http:/ / www.w3.org/ TR/ soap/ ● Web Services Description Language (WSDL) – http:/ / www.w3.org/ TR/ wsdl ● Há muitos padrões de Web Services (OASIS) – http:/ / www.oasis- open.org/ specs/ index.php
  • 7. Vantagens ● Portabilidade entre diferentes plataformas de hardware e software. ● Interoperabilidade entre diferentes linguagens de programação. ● Encapsulamento da modelagem dos dados das aplicações legadas. ● O Plone se preocupa apenas com as funcionadades de CMS e repassa as funcionalidades de aplicações para servidores de aplicação corportativos.
  • 8. Desvantagens ● Implementação não trivial – Contornável usando bons frameworks e ferramentas. ● Performance – Contornável usando boas técnicas de programação. ● Overhead
  • 9. Servidor Python + Twisted- web from twisted.web import soap, xmlrpc, resource, server import os def getQuote(): return "PyCon Brasil II" class XMLRPCQuoter(xmlrpc.XMLRPC): def xmlrpc_quote(self): return getQuote() class SOAPQuoter(soap.SOAPPublisher): def soap_quote(self): return getQuote()
  • 10. Servidor Python + Twisted- web def main(): from twisted.internet import reactor root = resource.Resource() root.putChild('RPC2', XMLRPCQuoter()) root.putChild('SOAP', SOAPQuoter()) reactor.listenTCP(7080, server.Site(root)) reactor.run() if __name__ == '__main__': main()
  • 11. Cliente Python + SOAPpy import xmlrpclib, SOAPpy s = xmlrpclib.Server('http://localhost:7080/RPC2') print "XML-RPC:", s.quote() s = SOAPpy.SOAPProxy("http://localhost:7080/SOAP") print "SOAP:", s.quote()
  • 12. Servidor Java + Apache Tomcat + Apache Axis public class TomcatAxis { public String getQuote() { return "PyCon Brasil II"; } }
  • 13. Cliente Python + SOAPpy (WSDL) from SOAPpy.WSDL import Proxy url = 'http://localhost:8080/axis/TomcatAxis.jws?wsdl' p = Proxy(url) print p.getQuote()
  • 14. Dicas ● Evite implementar Web Services que levam muito tempo para processar uma requisição. – Implemente “timeout” nas chamadas WSDL e SOAP. ● Arquivos binários devem ser encodados em Base64 para serem passados como parametros. ● Cuidado com métodos que potencialmente podem retornar grandes quantidades de dados (vetores).
  • 15. Dicas ● Evite implementar métodos que recebam tipos complexos como parametros. O trabalho de implementar corretamente o marshalling de namespaces pode não compensar. ● Cuidado com chamadas de métodos que modificam dados. Para evitar problemas de integridade transacional, evite chamar varios métodos. Chame apenas um método que receba um documento XML como parametro.
  • 16. Links ● Creating XML- RPC Servers and Clients with Twisted – http:/ / tinyurl.com/ 6wl5r ● Twisted and WSDL – http:/ / tinyurl.com/ oo7xn ● Chapter 16. Web Services [DRAFT(1.0)] Part III. J2EE Applications on Geronimo – http:/ / tinyurl.com/ nb5fo
  • 17. Links ● Which style of WSDL should I use? – http:/ / tinyurl.com/ b4uql ● PythonCLServiceTool: Python tools for exposing legacy applications as Web Services – http:/ / dsd.lbl.gov/ gtg/ projects/ PythonCLServiceTool/ ● pyGridWare: Python Web Services Resource Framework – http:/ / dsd.lbl.gov/ gtg/ projects/ pyGridWare/ index.html