SlideShare a Scribd company logo
1 of 70
SOA
                          fabio.kung@caelum.com.br




Tuesday, March 17, 2009
Tecnologia evolui
                                (legado)




Tuesday, March 17, 2009
mas o que?
                             definição




Tuesday, March 17, 2009
quot;Uma arquitetura em que serviços
        independentes se comunicam de uma
             maneira padronizada.quot;




Tuesday, March 17, 2009
Bilhetagem
                            (Ticketagem)




Tuesday, March 17, 2009
Bilhetagem
                                  (Ticketagem)




                     Financeiro                  CRM



                                     FTP
                                      FS
Tuesday, March 17, 2009
Same Old Architecture
                          SOA




Tuesday, March 17, 2009
Remote Procedure Call
                          (RPC)




Tuesday, March 17, 2009
Remote Procedure Call
                              (RPC)




                 Financeiro           CRM




Tuesday, March 17, 2009
Remote Procedure Call
                              (RPC)




                 Financeiro                   CRM
                                      Lista




Tuesday, March 17, 2009
Remote Procedure Call
                              (RPC)




                                      Cadastro


                 Financeiro                      CRM
                                        Lista


                                      Por Nome




Tuesday, March 17, 2009
• RMI
               • DCOM
               • EJB

Tuesday, March 17, 2009
Corba




Tuesday, March 17, 2009
Corba

  Financeiro                       CRM
     (Java)                       (C++)




Tuesday, March 17, 2009
Corba

  Financeiro                       CRM
                           GIOP
     (Java)                       (C++)
                           IIOP




Tuesday, March 17, 2009
Corba

  Financeiro                                   CRM
                                 GIOP
                          ORB           ORB
     (Java)                                   (C++)
                                 IIOP




Tuesday, March 17, 2009
Corba

  Financeiro                                           CRM
                                     GIOP
                          ORB IDL           IDL ORB
     (Java)                                           (C++)
                                     IIOP




Tuesday, March 17, 2009
Corba

  Financeiro                                               CRM
                                       GIOP
                           ORB IDL              IDL ORB
     (Java)                                               (C++)
                                       IIOP



                                       IDL
                          GP




                                                IIO PIO
                          IO
                            IIO




                                                    P
                                                   G
                                       ORB
                              P




                                     Estoque
                                     (Delphi)
Tuesday, March 17, 2009
• Firewalls
               • Mal suportado
               • Burocracia no desenvolvimento


Tuesday, March 17, 2009
HTTP



Tuesday, March 17, 2009
HTTP
                          XML


Tuesday, March 17, 2009
HTTP
                          XML
                          SOAP


Tuesday, March 17, 2009
Simple Object Access
                         Protocol
                          <soap:envelope>
                            <soap:header>
                              ...
                            </soap:header>

                            <soap:body>
                              ...
                            </soap:body>
                          </soap:envelope>
Tuesday, March 17, 2009
HTTP
                          XML
                          SOAP
                          WSDL

Tuesday, March 17, 2009
WebService Description
                                Language




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                        CRM
     (Java)                                        (C++)




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                        CRM
                                   HTTP
     (Java)                                        (C++)
                                   SOAP




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                             CRM
                           Endpoint




                                             Endpoint
                                      HTTP
     (Java)                                             (C++)
                                      SOAP




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                                           CRM
                           Endpoint




                                                           Endpoint
                                             HTTP

                                      WSDL




                                                    WSDL
     (Java)                                                           (C++)
                                             SOAP




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                                                 CRM
                            Endpoint




                                                                 Endpoint
                                                HTTP

                                       WSDL




                                                          WSDL
     (Java)                                                                 (C++)
                                                SOAP



                                               WSDL
                          HA




                                                            AP P
                                                          SO TT
                          TT P
                           SO




                                                            H
                                               Endpoint
                            P




                                              Estoque
                                              (Delphi)
Tuesday, March 17, 2009
Corba

  Financeiro                                               CRM
                                       GIOP
                           ORB IDL              IDL ORB
     (Java)                                               (C++)
                                       IIOP



                                       IDL
                          GP




                                                IIO PIO
                          IO
                            IIO




                                                    P
                                                   G
                                       ORB
                              P




                                     Estoque
                                     (Delphi)
Tuesday, March 17, 2009
WebServices SOAP

  Financeiro                                                                 CRM
                            Endpoint




                                                                 Endpoint
                                                HTTP

                                       WSDL




                                                          WSDL
     (Java)                                                                 (C++)
                                                SOAP



                                               WSDL
                          HA




                                                            AP P
                                                          SO TT
                          TT P
                           SO




                                                            H
                                               Endpoint
                            P




                                              Estoque
                                              (Delphi)
Tuesday, March 17, 2009
Same Old Architecture
                          SOA




Tuesday, March 17, 2009
Interoperabilidade



Tuesday, March 17, 2009
Amazon



Tuesday, March 17, 2009
<types>
  <xs:schema xmlns:xs=quot;http://www.w3.org/2001/XMLSchemaquot; ...>


    <xs:element name=quot;ItemSearchquot;>
      <xs:complexType>
        <xs:sequence>
          <xs:element name=quot;AWSAccessKeyIdquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/>


             <xs:element name=quot;Requestquot; type=quot;tns:ItemSearchRequestquot;
            minOccurs=quot;0quot; maxOccurs=quot;unboundedquot;/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>


    <xs:complexType name=quot;ItemSearchRequestquot;>
      <xs:sequence>
         <xs:element name=quot;Authorquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/>
         <xs:element name=quot;Keywordsquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/>
         ...
      </xs:sequence>
    </xs:complexType>
  </xs:schema>
</types>


<message name=quot;ItemSearchRequestMsgquot;>


  <part name=quot;bodyquot; element=quot;tns:ItemSearchquot;/>
</message>


<portType name=quot;AWSECommerceServicePortTypequot;>
  <operation name=quot;ItemSearchquot;>


      <input message=quot;tns:ItemSearchRequestMsgquot;/>
      <output message=quot;tns:ItemSearchResponseMsgquot;/>
  </operation>
</portType>

<binding name=quot;AWSECommerceServiceBindingquot; type=quot;tns:AWSECommerceServicePortTypequot;>
  ...
</binding>
<service name=quot;AWSECommerceServicequot;>


  <port name=quot;AWSECommerceServicePortquot; binding=quot;tns:AWSECommerceServiceBindingquot;>
    <soap:address
      location=quot;http://soap.amazon.com/onca/soap?Service=AWSECommerceServicequot;/>
Tuesday, March 17, 2009
  </port>
• JAX-WS
                          wsimport
                    ✓



               • Apache CXF
                          WSDL2Java
                    ✓



               • Axis 2
               • WCF (.Net)

Tuesday, March 17, 2009
WS-*

               • WS-Transaction
               • WS-Security
               • WS-Addressing
               • WS-Reliability
               • ...

Tuesday, March 17, 2009
WCF (MS)
                              +
                          Metro (Sun)


Tuesday, March 17, 2009
WebServices
                              W3C



      quot;Sistema de software projetado para
    suportar interações entre máquinas numa
          rede, de forma interoperável.quot;



                                        granularidade alta
Tuesday, March 17, 2009
POX
                          Plain Old XML




Tuesday, March 17, 2009
Flickr
        http://api.flickr.com/services/rest/?method=flickr.interestingness.getList




Tuesday, March 17, 2009
<?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?>
  <rsp stat=quot;okquot;>
    <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;>
      <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot;
         server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot;
         server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot;
         server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
    </photos>
  </rsp>




Tuesday, March 17, 2009
<?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?>
  <rsp stat=quot;okquot;>
    <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;>
      <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot;
         server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot;
         server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot;
 http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg
         server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
    </photos>
  </rsp>




Tuesday, March 17, 2009
JSON
                          JavaScript Object Notation




Tuesday, March 17, 2009
var john = {
                    type: 'Person',
                    name: 'John Doe',
                    email: 'john@doe.com',
                    address: {
                      street: 'Doe Street',
                      number: 1223,
                      city: 'New York'
                    }
                  }

Tuesday, March 17, 2009
var john = {
                    type: 'Person',
                    name: 'John Doe',
                    email: 'john@doe.com',
                    address: {
                      street: 'Doe Street',
                      number: 1223,
                      city: 'New York'
                    }
                  }

Tuesday, March 17, 2009
json.org




Tuesday, March 17, 2009
http://delicious.com
                                http://del.icio.us




Tuesday, March 17, 2009
[
       {
            u:quot;https://jaxb.dev.java.net/guide/quot;,
            d:quot;jaxb: Unofficial JAXB Guidequot;,
            t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;]
       },
       {
            u:quot;http://www.artima.com/intv/gosling3P.htmlquot;,
            d:quot;James Gosling on Java, May 2001quot;,
            t:[quot;javaquot;,quot;inheritancequot;,quot;compositionquot;,quot;designquot;]
       },
       ...
   ]


                          http://delicious.com/feeds/json/fck?raw

Tuesday, March 17, 2009
String url = quot;http://delicious.com/feeds/json/fck?rawquot;;

   HttpClient client = new HttpClient();
   GetMethod get = new GetMethod(url);
   client.executeMethod(get);
   String response = get.getResponseBodyAsString();

   JSONArray x = JSONArray.fromObject(response);
   for (JSONObject bookmark : x) {
     System.out.println(quot;Descrição: quot; + bookmark.get(quot;dquot;));
     System.out.println(quot;Endereço: quot; + bookmark.get(quot;uquot;));
     System.out.println(quot;Tags: quot; + bookmark.get(quot;tquot;));
   }



                          http://json-lib.sourceforge.net/

Tuesday, March 17, 2009
$(‘content’).load(serviceURL);   HTTP
                          .
                          .
                                               Service
                          .




Tuesday, March 17, 2009
$(‘content’).load(serviceURL);   HTTP
                          .
                          .
                                                 Service
                          .

       var data = eval(response);         JSON




Tuesday, March 17, 2009
$(‘content’).load(serviceURL);       HTTP
                          .
                          .
                                                          Service
                          .

       var data = eval(response);              JSON


                              var john = {
                                name: 'John Doe',
                                email: 'john@doe.com',
                                address: {
                                  street: 'Doe Street',
                                  number: 1223,
                                  city: 'New York'
                                }
                              }

Tuesday, March 17, 2009
<script type=quot;text/javascriptquot;
           src=quot;http://delicious.com/feeds/json/fckquot;>
         </script>




Tuesday, March 17, 2009
<script type=quot;text/javascriptquot;
           src=quot;http://delicious.com/feeds/json/fckquot;>
         </script>




             var Delicious = [
               {
                 u:quot;https://jaxb.dev.java.net/guide/quot;,
                 d:quot;jaxb: Unofficial JAXB Guidequot;,
                 t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;]
               }, ...
             ]
Tuesday, March 17, 2009
REST
                          REpresentational State Transfer




Tuesday, March 17, 2009
Recursos

   GET
   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos

                                     Clientes da
   GET                                Empresa

   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                     /clientes
                                      Clientes da
   GET                                 Empresa

   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                     /clientes
                                      Clientes da
   GET                                 Empresa

   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                      /clientes
                                       Clientes da
   GET                                  Empresa

   POST                              /clientes/1
   PUT                                  Cliente de

   DELETE                                  id=1

   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                      /clientes
                                         Clientes da
   GET                                    Empresa

   POST                              /clientes/1
   PUT                                   Cliente de

   DELETE                                   id=1

   HEADER                            /clientes/nome/a
   TRACE                                 Clientes de
                                          nome a*
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                      /clientes
                                         Clientes da
   GET                                    Empresa

   POST                              /clientes/1
   PUT                                   Cliente de

   DELETE                                   id=1

                               XML
   HEADER                            /clientes/nome/a
                              JSON
   TRACE                      HTML       Clientes de
                                          nome a*
   OPTIONS
Tuesday, March 17, 2009
Muitas opções
                          processos envolvem diversas




Tuesday, March 17, 2009
Tuesday, March 17, 2009
ESB
                          Enterprise Service Bus




Tuesday, March 17, 2009
Tuesday, March 17, 2009
• Localidade
               • Transformação de Mensagens
               • Orquestração / Coreografia
               • CEP


Tuesday, March 17, 2009
Dúvidas?




                                                 Obrigado!


                          fabio.kung@caelum.com.br
Tuesday, March 17, 2009

More Related Content

More from Fabio Kung

Linux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environmentLinux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environmentFabio Kung
 
Dicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no CloudDicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no CloudFabio Kung
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionFabio Kung
 
Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!Fabio Kung
 
Cloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como ServiçoCloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como ServiçoFabio Kung
 
Usando o Cloud
Usando o CloudUsando o Cloud
Usando o CloudFabio Kung
 
Storage para virtualização
Storage para virtualizaçãoStorage para virtualização
Storage para virtualizaçãoFabio Kung
 
Automacao devops
Automacao devopsAutomacao devops
Automacao devopsFabio Kung
 
DSLs Internas e Ruby
DSLs Internas e RubyDSLs Internas e Ruby
DSLs Internas e RubyFabio Kung
 
Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?Fabio Kung
 
Ruby, muito mais que reflexivo
Ruby, muito mais que reflexivoRuby, muito mais que reflexivo
Ruby, muito mais que reflexivoFabio Kung
 
JRuby on Rails
JRuby on RailsJRuby on Rails
JRuby on RailsFabio Kung
 

More from Fabio Kung (12)

Linux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environmentLinux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environment
 
Dicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no CloudDicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no Cloud
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
 
Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!
 
Cloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como ServiçoCloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como Serviço
 
Usando o Cloud
Usando o CloudUsando o Cloud
Usando o Cloud
 
Storage para virtualização
Storage para virtualizaçãoStorage para virtualização
Storage para virtualização
 
Automacao devops
Automacao devopsAutomacao devops
Automacao devops
 
DSLs Internas e Ruby
DSLs Internas e RubyDSLs Internas e Ruby
DSLs Internas e Ruby
 
Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?
 
Ruby, muito mais que reflexivo
Ruby, muito mais que reflexivoRuby, muito mais que reflexivo
Ruby, muito mais que reflexivo
 
JRuby on Rails
JRuby on RailsJRuby on Rails
JRuby on Rails
 

Recently uploaded

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Recently uploaded (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

SOA não precisa ser buzzword

  • 1. SOA fabio.kung@caelum.com.br Tuesday, March 17, 2009
  • 2. Tecnologia evolui (legado) Tuesday, March 17, 2009
  • 3. mas o que? definição Tuesday, March 17, 2009
  • 4. quot;Uma arquitetura em que serviços independentes se comunicam de uma maneira padronizada.quot; Tuesday, March 17, 2009
  • 5. Bilhetagem (Ticketagem) Tuesday, March 17, 2009
  • 6. Bilhetagem (Ticketagem) Financeiro CRM FTP FS Tuesday, March 17, 2009
  • 7. Same Old Architecture SOA Tuesday, March 17, 2009
  • 8. Remote Procedure Call (RPC) Tuesday, March 17, 2009
  • 9. Remote Procedure Call (RPC) Financeiro CRM Tuesday, March 17, 2009
  • 10. Remote Procedure Call (RPC) Financeiro CRM Lista Tuesday, March 17, 2009
  • 11. Remote Procedure Call (RPC) Cadastro Financeiro CRM Lista Por Nome Tuesday, March 17, 2009
  • 12. • RMI • DCOM • EJB Tuesday, March 17, 2009
  • 14. Corba Financeiro CRM (Java) (C++) Tuesday, March 17, 2009
  • 15. Corba Financeiro CRM GIOP (Java) (C++) IIOP Tuesday, March 17, 2009
  • 16. Corba Financeiro CRM GIOP ORB ORB (Java) (C++) IIOP Tuesday, March 17, 2009
  • 17. Corba Financeiro CRM GIOP ORB IDL IDL ORB (Java) (C++) IIOP Tuesday, March 17, 2009
  • 18. Corba Financeiro CRM GIOP ORB IDL IDL ORB (Java) (C++) IIOP IDL GP IIO PIO IO IIO P G ORB P Estoque (Delphi) Tuesday, March 17, 2009
  • 19. • Firewalls • Mal suportado • Burocracia no desenvolvimento Tuesday, March 17, 2009
  • 21. HTTP XML Tuesday, March 17, 2009
  • 22. HTTP XML SOAP Tuesday, March 17, 2009
  • 23. Simple Object Access Protocol <soap:envelope> <soap:header> ... </soap:header> <soap:body> ... </soap:body> </soap:envelope> Tuesday, March 17, 2009
  • 24. HTTP XML SOAP WSDL Tuesday, March 17, 2009
  • 25. WebService Description Language Tuesday, March 17, 2009
  • 26. WebService Description Language Financeiro CRM (Java) (C++) Tuesday, March 17, 2009
  • 27. WebService Description Language Financeiro CRM HTTP (Java) (C++) SOAP Tuesday, March 17, 2009
  • 28. WebService Description Language Financeiro CRM Endpoint Endpoint HTTP (Java) (C++) SOAP Tuesday, March 17, 2009
  • 29. WebService Description Language Financeiro CRM Endpoint Endpoint HTTP WSDL WSDL (Java) (C++) SOAP Tuesday, March 17, 2009
  • 30. WebService Description Language Financeiro CRM Endpoint Endpoint HTTP WSDL WSDL (Java) (C++) SOAP WSDL HA AP P SO TT TT P SO H Endpoint P Estoque (Delphi) Tuesday, March 17, 2009
  • 31. Corba Financeiro CRM GIOP ORB IDL IDL ORB (Java) (C++) IIOP IDL GP IIO PIO IO IIO P G ORB P Estoque (Delphi) Tuesday, March 17, 2009
  • 32. WebServices SOAP Financeiro CRM Endpoint Endpoint HTTP WSDL WSDL (Java) (C++) SOAP WSDL HA AP P SO TT TT P SO H Endpoint P Estoque (Delphi) Tuesday, March 17, 2009
  • 33. Same Old Architecture SOA Tuesday, March 17, 2009
  • 36. <types> <xs:schema xmlns:xs=quot;http://www.w3.org/2001/XMLSchemaquot; ...> <xs:element name=quot;ItemSearchquot;> <xs:complexType> <xs:sequence> <xs:element name=quot;AWSAccessKeyIdquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/> <xs:element name=quot;Requestquot; type=quot;tns:ItemSearchRequestquot; minOccurs=quot;0quot; maxOccurs=quot;unboundedquot;/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name=quot;ItemSearchRequestquot;> <xs:sequence> <xs:element name=quot;Authorquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/> <xs:element name=quot;Keywordsquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/> ... </xs:sequence> </xs:complexType> </xs:schema> </types> <message name=quot;ItemSearchRequestMsgquot;> <part name=quot;bodyquot; element=quot;tns:ItemSearchquot;/> </message> <portType name=quot;AWSECommerceServicePortTypequot;> <operation name=quot;ItemSearchquot;> <input message=quot;tns:ItemSearchRequestMsgquot;/> <output message=quot;tns:ItemSearchResponseMsgquot;/> </operation> </portType> <binding name=quot;AWSECommerceServiceBindingquot; type=quot;tns:AWSECommerceServicePortTypequot;> ... </binding> <service name=quot;AWSECommerceServicequot;> <port name=quot;AWSECommerceServicePortquot; binding=quot;tns:AWSECommerceServiceBindingquot;> <soap:address location=quot;http://soap.amazon.com/onca/soap?Service=AWSECommerceServicequot;/> Tuesday, March 17, 2009 </port>
  • 37. • JAX-WS wsimport ✓ • Apache CXF WSDL2Java ✓ • Axis 2 • WCF (.Net) Tuesday, March 17, 2009
  • 38. WS-* • WS-Transaction • WS-Security • WS-Addressing • WS-Reliability • ... Tuesday, March 17, 2009
  • 39. WCF (MS) + Metro (Sun) Tuesday, March 17, 2009
  • 40. WebServices W3C quot;Sistema de software projetado para suportar interações entre máquinas numa rede, de forma interoperável.quot; granularidade alta Tuesday, March 17, 2009
  • 41. POX Plain Old XML Tuesday, March 17, 2009
  • 42. Flickr http://api.flickr.com/services/rest/?method=flickr.interestingness.getList Tuesday, March 17, 2009
  • 43. <?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?> <rsp stat=quot;okquot;> <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;> <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot; server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot; server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot; server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> </photos> </rsp> Tuesday, March 17, 2009
  • 44. <?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?> <rsp stat=quot;okquot;> <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;> <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot; server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot; server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot; http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> </photos> </rsp> Tuesday, March 17, 2009
  • 45. JSON JavaScript Object Notation Tuesday, March 17, 2009
  • 46. var john = { type: 'Person', name: 'John Doe', email: 'john@doe.com', address: { street: 'Doe Street', number: 1223, city: 'New York' } } Tuesday, March 17, 2009
  • 47. var john = { type: 'Person', name: 'John Doe', email: 'john@doe.com', address: { street: 'Doe Street', number: 1223, city: 'New York' } } Tuesday, March 17, 2009
  • 49. http://delicious.com http://del.icio.us Tuesday, March 17, 2009
  • 50. [ { u:quot;https://jaxb.dev.java.net/guide/quot;, d:quot;jaxb: Unofficial JAXB Guidequot;, t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;] }, { u:quot;http://www.artima.com/intv/gosling3P.htmlquot;, d:quot;James Gosling on Java, May 2001quot;, t:[quot;javaquot;,quot;inheritancequot;,quot;compositionquot;,quot;designquot;] }, ... ] http://delicious.com/feeds/json/fck?raw Tuesday, March 17, 2009
  • 51. String url = quot;http://delicious.com/feeds/json/fck?rawquot;; HttpClient client = new HttpClient(); GetMethod get = new GetMethod(url); client.executeMethod(get); String response = get.getResponseBodyAsString(); JSONArray x = JSONArray.fromObject(response); for (JSONObject bookmark : x) { System.out.println(quot;Descrição: quot; + bookmark.get(quot;dquot;)); System.out.println(quot;Endereço: quot; + bookmark.get(quot;uquot;)); System.out.println(quot;Tags: quot; + bookmark.get(quot;tquot;)); } http://json-lib.sourceforge.net/ Tuesday, March 17, 2009
  • 52. $(‘content’).load(serviceURL); HTTP . . Service . Tuesday, March 17, 2009
  • 53. $(‘content’).load(serviceURL); HTTP . . Service . var data = eval(response); JSON Tuesday, March 17, 2009
  • 54. $(‘content’).load(serviceURL); HTTP . . Service . var data = eval(response); JSON var john = { name: 'John Doe', email: 'john@doe.com', address: { street: 'Doe Street', number: 1223, city: 'New York' } } Tuesday, March 17, 2009
  • 55. <script type=quot;text/javascriptquot; src=quot;http://delicious.com/feeds/json/fckquot;> </script> Tuesday, March 17, 2009
  • 56. <script type=quot;text/javascriptquot; src=quot;http://delicious.com/feeds/json/fckquot;> </script> var Delicious = [ { u:quot;https://jaxb.dev.java.net/guide/quot;, d:quot;jaxb: Unofficial JAXB Guidequot;, t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;] }, ... ] Tuesday, March 17, 2009
  • 57. REST REpresentational State Transfer Tuesday, March 17, 2009
  • 58. Recursos GET POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 59. Recursos Clientes da GET Empresa POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 60. Recursos /clientes Clientes da GET Empresa POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 61. Recursos /clientes Clientes da GET Empresa POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 62. Recursos /clientes Clientes da GET Empresa POST /clientes/1 PUT Cliente de DELETE id=1 HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 63. Recursos /clientes Clientes da GET Empresa POST /clientes/1 PUT Cliente de DELETE id=1 HEADER /clientes/nome/a TRACE Clientes de nome a* OPTIONS Tuesday, March 17, 2009
  • 64. Recursos /clientes Clientes da GET Empresa POST /clientes/1 PUT Cliente de DELETE id=1 XML HEADER /clientes/nome/a JSON TRACE HTML Clientes de nome a* OPTIONS Tuesday, March 17, 2009
  • 65. Muitas opções processos envolvem diversas Tuesday, March 17, 2009
  • 67. ESB Enterprise Service Bus Tuesday, March 17, 2009
  • 69. • Localidade • Transformação de Mensagens • Orquestração / Coreografia • CEP Tuesday, March 17, 2009
  • 70. Dúvidas? Obrigado! fabio.kung@caelum.com.br Tuesday, March 17, 2009

Editor's Notes