SlideShare une entreprise Scribd logo
1  sur  55
Best Practices for Designing and Building the Services of an SOA Guido Schmutz Technology Manager, Oracle ACE Director for FMW & SOA Trivadis AG, Switzerland
Abstract ,[object Object]
Guido Schmutz ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Trivadis Facts & Figures ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],~350 employees ~180 employees ~20 employees
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object]
Principles of Service-Orientation
Service Design Principles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object]
Development Approaches ,[object Object],[object Object],[object Object],Bottom-Up DB Files Applications API Components Domain Produktion Verkauf F&E Rohstoffeingang Produktgenehmigung Service Service Service Service Service Service Top-Down
Contract-First Web Service Design ,[object Object],[object Object],[object Object],Source: Thomas Erl, Principles of Service Design
Contract-First is fine ….. ,[object Object],[object Object],[object Object],[object Object],[object Object]
“ I like Contract First design, BUT  “ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<wsdl:definitions xmlns:tns=&quot;http://trivadis.com/service/credit-card/v1&quot;    ...   name=&quot;CreditCardValidation-v1&quot;> <wsdl:types> <xsd:schema ...> </wsdl:types> <wsdl:message name=&quot;validateCardRequest&quot;> <wsdl:part name=&quot;request&quot;    element=&quot;tns:validateCreditCardPaymentRequest&quot;/> </wsdl:message> <wsdl:message name=&quot;validateCardResponse&quot;> <wsdl:part name=&quot;reply&quot;    element=&quot;tns:validateCreditCardPaymentResponse&quot;/> </wsdl:message> <wsdl:message name=&quot;invalidCreditCardNumberFault&quot;> <wsdl:part name=&quot;error„ element=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:message> <wsdl:portType name=&quot;CreditCardValidationPT&quot;> <wsdl:operation name=&quot;validateCard&quot;> <wsdl:input message=&quot;tns:validateCardRequest&quot;/> <wsdl:output message=&quot;tns:validateCardResponse&quot;/> <wsdl:fault name=&quot;InvalidCreditCardNumberFault&quot;    message=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:operation> </wsdl:portType> <wsdl:binding ...> <wsdl:service ...> </wsdl:definitions> <xs:schema xmlns:xs=„...&quot;    xmlns:tns=&quot;http://www.trivadis.com/cdm/credit-card/v1&quot;    targetNamespace= „http://www.trivadis.com/cdm/credit-card/v1 “ elementFormDefault=&quot;qualified&quot;    attributeFormDefault=&quot;unqualified&quot; version=&quot;1.0&quot;> <xs:element name=&quot;creditCard&quot; type=&quot;tns:CreditCardT&quot;/> <xs:complexType name=&quot;CreditCardT&quot;> <xs:sequence> <xs:element name=&quot;creditCardKind&quot;    type=&quot;tns:CreditCardKindT&quot;/> <xs:element name=&quot;cardNumber&quot; type=&quot;xs:string&quot;/> <xs:element name=&quot;cardholderFirstName&quot;    type=&quot;xs:string&quot; minOccurs=&quot;0&quot;/> <xs:element name=&quot;cardholderLastName&quot;    type=&quot;xs:string&quot;/> <xs:element name=&quot;expirationMonth&quot;    type=&quot;tns:MonthT&quot;/> <xs:element name=&quot;expirationYear&quot;    type=&quot;tns:YearT&quot;/> </xs:sequence> <xs:attribute name=&quot;id&quot; type=&quot;xs:int&quot;/> </xs:complexType> <xs:simpleType name=&quot;CreditCardKindT&quot;> <xs:restriction base=&quot;xs:string&quot;> <xs:enumeration value=&quot;visa&quot;/> <xs:enumeration value=&quot;mastercard&quot;/> <xs:enumeration value=&quot;amexco&quot;/> </xs:restriction> </xs:simpleType> ... /xs:schema>
Alternative: UML with “WS profile” ,[object Object]
CBDI-SAE UML Profile  for SOA http://everware-cbdi.com Service Implementation Architecture Showing Services and Automation Units Business Type Model Showing Domains Service Deloyment Architecture Showing Deployments
Using DSL to simplify WSDL generation <wsdl:definitions xmlns:tns=&quot;http://trivadis.com/service/credit-card/v1&quot;    ...   name=&quot;CreditCardValidation-v1&quot;> <wsdl:types> <xsd:schema ...> </wsdl:types> <wsdl:message name=&quot;validateCardRequest&quot;> <wsdl:part name=&quot;request&quot;    element=&quot;tns:validateCreditCardPaymentRequest&quot;/> </wsdl:message> <wsdl:message name=&quot;validateCardResponse&quot;> <wsdl:part name=&quot;reply&quot;    element=&quot;tns:validateCreditCardPaymentResponse&quot;/> </wsdl:message> <wsdl:message name=&quot;invalidCreditCardNumberFault&quot;> <wsdl:part name=&quot;error„ element=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:message> <wsdl:portType name=&quot;CreditCardValidationPT&quot;> <wsdl:operation name=&quot;validateCard&quot;> <wsdl:input message=&quot;tns:validateCardRequest&quot;/> <wsdl:output message=&quot;tns:validateCardResponse&quot;/> <wsdl:fault name=&quot;InvalidCreditCardNumberFault&quot;    message=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:operation> </wsdl:portType> <wsdl:binding ...> <wsdl:service ...> </wsdl:definitions> abstract message common { requestNr : String [1:1] } Import common.msgtype namespace service.credit-card(1.0) using cdm.credit-card(1.0) as cc message validateCardRequest extends common { creditCard : cc.CreditCard forAmount : Double } message validateCardResponse { requestNr : String[1:1] reservationNumber : String } fault invalidCreditCardNumber { code : String creditCard : cc.CreditCard } service CreditCardValidation { sync operation validateCard  throws invalidCreditCardNumber input validateCardRequest output validateCardResponse }
Domain Specific Language (DSL) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Prototype based on Eclipse XText available
Service Contract Template => DSL service  CreditCardValidation { version  : 1.0 namespace  : CreditCard business-properties  { name: Kreditkarten-Validierung purpose: domain: CreditCard technical-properties  { owner: xxxx service-type: BAS, BES execution-frequency: 100 per day operation  validate-card    throws InvalidCreditCardNumber, ServiceFault { operation-group: read-only updating: true resultCache: true atomicTx: true idempotent: true can-particpate-in-tx: true pattern: one-way | request-response input-message { RequestNr : ct.Text[1:1] CreditCard : cc.CreditCard  } output-message ValidateCardResponse { RequestNr : core.Text CreditCard : cc.CreditCard
WS-I: check your contracts! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Message Exchange Patterns (MEP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Web Service Application Application One-Way Notification Request/Response Solicit Response
Standardized Service Data Models –  Canonical Data Model Source: Enterprise Integration Patterns (www.eaipatterns.com)
Standardized Service Data Models –  Canonical Data Model
Service Usage Scope Level of coupling Typical WS-Attribute:  Granularity Scope Cross Organisational Document or RPC style, LOB data representations  Function call, RPC or RMI Within Department Inside Application Tight Loose Within Organization Document style, industry standard  data formats  Document style, enterprise data  formats
SOA Logical Architecture – Service Categorization Source: Oracle
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],What type of applications do we find today? Application C Application A Tables PL/SQL PL/SQL Tables ORM Java Application B Tables PL/SQL Java Storage Data Access Business Logic
PL/SQL Implementation of Use Case ,[object Object],[object Object]
Java Implementation for Use Case ,[object Object],[object Object]
[object Object],[object Object],Service-enable applications directly Application C Application A Tables PL/SQL PL/SQL Tables ORM Java Application B Tables PL/SQL Java Resource Data Access Business Logic ???? Web Service  Facade Java Java
Service Interface for Use Case
JAX-WS – WSDL First
JAX-WS – WSDL First Transformation JAXB Annotations JAX-WS Annotations EJB Annotations
Java with JAX-WS - Code First Determines XSD Determines WSDL
Native Database Web Service (11g) ,[object Object],[object Object],[object Object],[object Object]
Native Database Web Service (11g)
[object Object],[object Object],[object Object],Service Enablement of DB logic using Oracle Service Bus (OSB) OSB OSB OSB Application A Tables PL/SQL PL/SQL Resource Data Access Business Logic Mediation Web Service  Facade Adapter Application A Tables Mediation Adapter Application A Tables PL/SQL PL/SQL Mediation DB Servlet SOA Platform
OSB and DB Adapter for request-driven access to information ,[object Object],[object Object],[object Object],[object Object],[object Object],SQL
Demo: Database Adapter on OSB
[object Object],[object Object],[object Object],Service Enablement of Java using Oracle Service Bus (OSB OSB OSB Resource Data Access Business Logic Mediation Web Service  Facade Transport Mediation Adapter SOA Platform Application C Tables ORM Java Application B Tables PL/SQL Java Java
OSB HTTP Transport to wrap JAX-WS service ,[object Object],[object Object],[object Object],[object Object],[object Object],SOAP Webservice Transform from/to canonical model
OSB HTTP Transport to wrap JAX-WS Code First service Proxy Service XQuery Transformation Business Service HTTP Transport  Transformation
OSB EJB Transport to call EJB ,[object Object],[object Object],[object Object],[object Object],[object Object],RMI / IIOP Transaction propagation
OSB EJB Transport to call EJB ,[object Object],[object Object]
Service Enablement in BPEL/BPMN Application A Tables PL/SQL PL/SQL Resource Data Access Business Logic OSB Web Service  Facade BPEL and BPMN Application C Tables ORM Java Application B Tables PL/SQL Java Java Java SOA Platform Mediation Adapter Mediation Mediation Orchestration
Automatic Build & Deployment ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object]
Service Versioning ,[object Object],[object Object],[object Object],The ripple effects of changes
Service Versioning ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Implementing Versioning on ESB ,[object Object],[object Object],One Endpoint per Major Version One Endpoint per Version
Service Versioning ,[object Object]
Service Versioning ,[object Object]
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object]
Summary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
My other sessions @ Kscope11 ,[object Object],[object Object]
Best Practices for Designing and Building the Services of an SOA Please Fill Out Your Evaluations Guido Schmutz Technology Manager, Oracle ACE Director for FMW & SOA Trivadis AG, Switzerland Feedback-URL:  http://ezsession.com/kscope

Contenu connexe

Plus de Guido Schmutz

Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?
Guido Schmutz
 
Location Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache KafkaLocation Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache Kafka
Guido Schmutz
 
Location Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using KafkaLocation Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using Kafka
Guido Schmutz
 
Streaming Visualisation
Streaming VisualisationStreaming Visualisation
Streaming Visualisation
Guido Schmutz
 
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Guido Schmutz
 

Plus de Guido Schmutz (20)

30 Minutes to the Analytics Platform with Infrastructure as Code
30 Minutes to the Analytics Platform with Infrastructure as Code30 Minutes to the Analytics Platform with Infrastructure as Code
30 Minutes to the Analytics Platform with Infrastructure as Code
 
Event Broker (Kafka) in a Modern Data Architecture
Event Broker (Kafka) in a Modern Data ArchitectureEvent Broker (Kafka) in a Modern Data Architecture
Event Broker (Kafka) in a Modern Data Architecture
 
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-FormatsBig Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
 
Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?
 
Event Hub (i.e. Kafka) in Modern Data Architecture
Event Hub (i.e. Kafka) in Modern Data ArchitectureEvent Hub (i.e. Kafka) in Modern Data Architecture
Event Hub (i.e. Kafka) in Modern Data Architecture
 
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache KafkaSolutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
 
Event Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
Event Hub (i.e. Kafka) in Modern Data (Analytics) ArchitectureEvent Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
Event Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Location Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache KafkaLocation Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache Kafka
 
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS and Apache KafkaSolutions for bi-directional integration between Oracle RDBMS and Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafka
 
What is Apache Kafka? Why is it so popular? Should I use it?
What is Apache Kafka? Why is it so popular? Should I use it?What is Apache Kafka? Why is it so popular? Should I use it?
What is Apache Kafka? Why is it so popular? Should I use it?
 
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache KafkaSolutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
 
Location Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using KafkaLocation Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using Kafka
 
Streaming Visualisation
Streaming VisualisationStreaming Visualisation
Streaming Visualisation
 
Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?
 
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
 
Fundamentals Big Data and AI Architecture
Fundamentals Big Data and AI ArchitectureFundamentals Big Data and AI Architecture
Fundamentals Big Data and AI Architecture
 
Location Analytics - Real-Time Geofencing using Kafka
Location Analytics - Real-Time Geofencing using Kafka Location Analytics - Real-Time Geofencing using Kafka
Location Analytics - Real-Time Geofencing using Kafka
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Dernier (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Best Practices for Designing and Building the Services of an SOA

  • 1. Best Practices for Designing and Building the Services of an SOA Guido Schmutz Technology Manager, Oracle ACE Director for FMW & SOA Trivadis AG, Switzerland
  • 2.
  • 3.
  • 4.
  • 5.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. CBDI-SAE UML Profile for SOA http://everware-cbdi.com Service Implementation Architecture Showing Services and Automation Units Business Type Model Showing Domains Service Deloyment Architecture Showing Deployments
  • 15. Using DSL to simplify WSDL generation <wsdl:definitions xmlns:tns=&quot;http://trivadis.com/service/credit-card/v1&quot; ... name=&quot;CreditCardValidation-v1&quot;> <wsdl:types> <xsd:schema ...> </wsdl:types> <wsdl:message name=&quot;validateCardRequest&quot;> <wsdl:part name=&quot;request&quot; element=&quot;tns:validateCreditCardPaymentRequest&quot;/> </wsdl:message> <wsdl:message name=&quot;validateCardResponse&quot;> <wsdl:part name=&quot;reply&quot; element=&quot;tns:validateCreditCardPaymentResponse&quot;/> </wsdl:message> <wsdl:message name=&quot;invalidCreditCardNumberFault&quot;> <wsdl:part name=&quot;error„ element=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:message> <wsdl:portType name=&quot;CreditCardValidationPT&quot;> <wsdl:operation name=&quot;validateCard&quot;> <wsdl:input message=&quot;tns:validateCardRequest&quot;/> <wsdl:output message=&quot;tns:validateCardResponse&quot;/> <wsdl:fault name=&quot;InvalidCreditCardNumberFault&quot; message=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:operation> </wsdl:portType> <wsdl:binding ...> <wsdl:service ...> </wsdl:definitions> abstract message common { requestNr : String [1:1] } Import common.msgtype namespace service.credit-card(1.0) using cdm.credit-card(1.0) as cc message validateCardRequest extends common { creditCard : cc.CreditCard forAmount : Double } message validateCardResponse { requestNr : String[1:1] reservationNumber : String } fault invalidCreditCardNumber { code : String creditCard : cc.CreditCard } service CreditCardValidation { sync operation validateCard throws invalidCreditCardNumber input validateCardRequest output validateCardResponse }
  • 16.
  • 17. Prototype based on Eclipse XText available
  • 18. Service Contract Template => DSL service CreditCardValidation { version : 1.0 namespace : CreditCard business-properties { name: Kreditkarten-Validierung purpose: domain: CreditCard technical-properties { owner: xxxx service-type: BAS, BES execution-frequency: 100 per day operation validate-card throws InvalidCreditCardNumber, ServiceFault { operation-group: read-only updating: true resultCache: true atomicTx: true idempotent: true can-particpate-in-tx: true pattern: one-way | request-response input-message { RequestNr : ct.Text[1:1] CreditCard : cc.CreditCard } output-message ValidateCardResponse { RequestNr : core.Text CreditCard : cc.CreditCard
  • 19.
  • 20.
  • 21. Standardized Service Data Models – Canonical Data Model Source: Enterprise Integration Patterns (www.eaipatterns.com)
  • 22. Standardized Service Data Models – Canonical Data Model
  • 23. Service Usage Scope Level of coupling Typical WS-Attribute: Granularity Scope Cross Organisational Document or RPC style, LOB data representations Function call, RPC or RMI Within Department Inside Application Tight Loose Within Organization Document style, industry standard data formats Document style, enterprise data formats
  • 24. SOA Logical Architecture – Service Categorization Source: Oracle
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 32. JAX-WS – WSDL First Transformation JAXB Annotations JAX-WS Annotations EJB Annotations
  • 33. Java with JAX-WS - Code First Determines XSD Determines WSDL
  • 34.
  • 35. Native Database Web Service (11g)
  • 36.
  • 37.
  • 39.
  • 40.
  • 41. OSB HTTP Transport to wrap JAX-WS Code First service Proxy Service XQuery Transformation Business Service HTTP Transport Transformation
  • 42.
  • 43.
  • 44. Service Enablement in BPEL/BPMN Application A Tables PL/SQL PL/SQL Resource Data Access Business Logic OSB Web Service Facade BPEL and BPMN Application C Tables ORM Java Application B Tables PL/SQL Java Java Java SOA Platform Mediation Adapter Mediation Mediation Orchestration
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55. Best Practices for Designing and Building the Services of an SOA Please Fill Out Your Evaluations Guido Schmutz Technology Manager, Oracle ACE Director for FMW & SOA Trivadis AG, Switzerland Feedback-URL: http://ezsession.com/kscope

Notes de l'éditeur

  1. This is your opening slide.
  2. Use this template for all your content slides. There are also other layout slides you can feel free to use.
  3. Use this template for all your content slides. There are also other layout slides you can feel free to use.
  4. Use this template for all your content slides. There are also other layout slides you can feel free to use.
  5. Use this template for all your content slides. There are also other layout slides you can feel free to use.
  6. Use this template for all your content slides. There are also other layout slides you can feel free to use.
  7. This is the final slide of the presentation.