The slides from this presentation are here


Published on

1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Existing systems They have islands of business logic. Useful components Inversion Of Control Dependency Injection .
  • The slides from this presentation are here

    1. 1. Open Source SOA Apache Tuscany and PHP/SOA Simon Laws (simonslaws AT googlemail DOT com) Kelvin Goodson (kelvingoodson AT apache DOT com) 20 th October, 2006
    2. 2. Agenda <ul><li>Why are we doing it </li></ul><ul><ul><li>Motivation </li></ul></ul><ul><li>What are we working on </li></ul><ul><ul><li>SOA Base Programming Model </li></ul></ul><ul><ul><li>Service Component Architecture (SCA) </li></ul></ul><ul><ul><li>Service Data Objects (SDO) </li></ul></ul><ul><li>How, Who, Where, When… </li></ul><ul><ul><li>Specs, Apache Tuscany, PHP and related activity </li></ul></ul><ul><li>Q & A </li></ul>
    3. 3. Why SOA? Current It Infrastructure Services/Components (reusable functional assets) Wiring (service composition) Flexible Resilient Extendable Manageable Reusable … Rigid Fragile Static Complex Bespoke …
    4. 4. Why Are We Doing This In Open Source <ul><li>Promote a common and open approach to simplified application development </li></ul><ul><ul><li>Insulate business logic developers from infrastructure complexity </li></ul></ul><ul><li>Gain broad industry support for IBM’s vision of SOA and our strategic programming model for services </li></ul><ul><ul><li>Major vendors, the developer community, analysts, and customers </li></ul></ul><ul><li>Expand beyond the Java/J2EE platform </li></ul><ul><ul><li>Breadth of vision includes “legacy” code, scripting, declarative </li></ul></ul><ul><ul><li>Multiple language support is a key element in this </li></ul></ul>
    5. 5. Agenda <ul><li>Why are we doing it </li></ul><ul><ul><li>Motivation </li></ul></ul><ul><li>What are we working on </li></ul><ul><ul><li>SOA Base Programming Model </li></ul></ul><ul><ul><li>Service Component Architecture (SCA) </li></ul></ul><ul><ul><li>Service Data Objects (SDO) </li></ul></ul><ul><li>How, Who, Where, When… </li></ul><ul><ul><li>Specs, Apache Tuscany, PHP and related activity </li></ul></ul><ul><li>Q & A </li></ul>
    6. 6. What Are We Working On – SOA Programming Model Services/Components Wiring <ul><li>Service Component Architecture (SCA) </li></ul><ul><ul><li>Service definition, assembly, invocation and mediation </li></ul></ul>SCA <ul><li>Service Data Objects (SDO) </li></ul><ul><ul><li>Data transfer between services and to/from a persistent store </li></ul></ul><ul><ul><li>SCA can work without SDO but SDO adds a common view of data </li></ul></ul><ul><li>Continue the quest to rebalance the ratio of code to business content by hiding the infrastructure complexity </li></ul>Business Logic Implementation // Print out the top level elements of the document for ( int i=0; i < pl.size(); i++ ) { const Property& p = pl[i]; if ( newdob->isSet(p)) { if ( p.getType().isDataType() ) { cout << newdob->getCString(i) << endl; … Data SDO SDO
    7. 7. Agenda <ul><li>Why are we doing it </li></ul><ul><ul><li>The motivation </li></ul></ul><ul><li>What are we working on </li></ul><ul><ul><li>SOA Programming Model </li></ul></ul><ul><ul><li>Service Component Architecture (SCA) </li></ul></ul><ul><ul><li>Service Data Objects (SDO) </li></ul></ul><ul><li>How, Who, Where, When… </li></ul><ul><ul><li>Approach </li></ul></ul><ul><ul><li>Apache Tuscany Project and related activity </li></ul></ul><ul><li>Q & A </li></ul>
    8. 8. Service Component Architecture (SCA) <ul><li>Specification produced through collaboration of many (18 to date) industry leaders </li></ul><ul><ul><li>E.g. BEA, IBM, Oracle, Sun, SAP, IONA, Sybase </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>A model for building loosely-coupled systems based on a Service Oriented Architecture </li></ul><ul><ul><li>Language neutral </li></ul></ul><ul><ul><li>Technology neutral </li></ul></ul><ul><ul><li>Vendor neutral </li></ul></ul><ul><li>Provides higher level of abstraction for service composition to allow the architectural view of a system to be separated from specific implementation technology choices </li></ul><ul><li>Aims to make manageable the complexity associated with large-scale systems and enterprise applications </li></ul>
    9. 9. Service Assembly Model <ul><li>Model for assembling tightly coupled code </li></ul><ul><li>Model for assembling loosely coupled services </li></ul>Composite Composite Composite Web Service
    10. 10. SCA Artefacts Composite B Implementation Java, C++, etc..
    11. 11. Service Component <ul><li>Services provided to other components </li></ul><ul><ul><li>Defined in terms of a business interface </li></ul></ul><ul><li>References to services provided by other components </li></ul><ul><ul><li>Again, defined in terms of a business interface </li></ul></ul><ul><li>Properties configure component behavior </li></ul>References Properties Services Component Type
    12. 12. Service Implementation <ul><li>An implementation of application logic in some programming language </li></ul><ul><ul><li>Conforms to the implementation model for that language </li></ul></ul><ul><ul><li>Java, C++ already specified, others in development, e.g. PHP </li></ul></ul><ul><li>Implementation models try to avoid infrastructure constructs </li></ul><ul><ul><li>For example, Java model uses Inversion of Control pattern </li></ul></ul>public class HelloWorldImpl implements HelloWorldService { private String greeting ; public void setGreeting(String greeting) { this. greeting = greeting; } public String sayHello(String name) { return greeting + name; } }
    13. 13. Composite Assembly <ul><li>Co-located, connected set of components </li></ul><ul><li>Services provided to other module </li></ul><ul><ul><li>Defined by Services </li></ul></ul><ul><li>Requires services provided by other modules </li></ul><ul><ul><li>Defined as References </li></ul></ul><ul><li>Wires connect components together </li></ul>Composite X Component B Service Reference Component A
    14. 14. Wiring <ul><li>Wires are used to connect components, services and references </li></ul><ul><ul><li>Wiring is transparent to application code </li></ul></ul><ul><ul><li>Allows container system to change wiring without impacting the application </li></ul></ul><ul><ul><li>How wiring is performed is defined by the container implementation </li></ul></ul><ul><li>Wire binding determines format of data </li></ul><ul><ul><li>For example, web services, IIOP, REST </li></ul></ul><ul><li>Wires can have policies attached to specify quality of service </li></ul><ul><ul><li>Declarative Transactions, Security, Reliability </li></ul></ul><ul><ul><li>Implementation provided by container in conjunction with binding </li></ul></ul>
    15. 15. Big Bank – Account Composite <ul><li>SCA is the component model </li></ul><ul><li>Components may be wired together </li></ul><ul><li>SDO DataObjects are the data flowing on wires between Components </li></ul>Component Account Service Component Component Account DataService Component Service Account Service Reference StockQuote Service Composite AccountComposite Web Server .Net Web Service SCA SCA SCA SDO SDO SDO More detail on this sample app:
    16. 16. SCDL – Component Description <ul><li>Each programming model concept has a representation in the XML-based Service Component Definition Language (SCDL) </li></ul><? xml version = &quot;1.0&quot; encoding = &quot;ASCII&quot; ?> < componentType xmlns = &quot;; xmlns:xsd = &quot;; > < service name = &quot;AccountService&quot; > < interface = &quot;services.account.AccountService&quot; /> </ service > < reference name = &quot;accountDataService&quot; > < interface = &quot;services.accountdata.AccountDataService&quot; /> </ reference > < reference name = &quot;stockQuoteService&quot; > < interface = &quot;services.stockquote.StockQuoteService&quot; /> </ reference > < property name = &quot;currency&quot; type = &quot;xsd:string&quot; default = &quot;USD&quot; /> </ componentType >
    17. 17. SCDL – Module Description <? xml version = &quot;1.0&quot; encoding = &quot;ASCII&quot; ?> < composite xmlns = &quot;; xmlns:v = &quot;; name = &quot;bigbank.accountmodule&quot; > <service name =&quot; AccountService &quot;> < interface =&quot; com.bigbank.account.AccountService &quot;/> < port =&quot; &quot;/> <reference> AccountServiceComponent/AccountService </reference> </service> <component name = &quot;AccountServiceComponent&quot; > < class = &quot;services.account.AccountServiceImpl&quot; /> <properties> < v:currency override = &quot;may&quot; > EURO </ v:currency > </ properties > <references> < v:accountDataService > AccountDataServiceComponent </ v:accountDataService > < v:stockQuoteService > StockQuoteService </ v:stockQuoteService > </ references > </ component > … </ module >
    18. 18. Why Components? <ul><li>Why not just write Java or C++ modules? </li></ul>Component (Re)deployment Component reuse Client Client Client Client Component Component Component Component Component Component Declarative composition and separation of concerns, for example, policy or binding can be specified independently of he implementation
    19. 19. Agenda <ul><li>Why are we doing it </li></ul><ul><ul><li>Motivation </li></ul></ul><ul><li>What are we working on </li></ul><ul><ul><li>SOA Base Programming Model </li></ul></ul><ul><ul><li>Service Component Architecture (SCA) </li></ul></ul><ul><ul><li>Service Data Objects (SDO) </li></ul></ul><ul><li>How, Who, Where, When… </li></ul><ul><ul><li>Specs, Apache Tuscany, PHP and related activity </li></ul></ul><ul><li>Q & A </li></ul>
    20. 20. Service Data Objects <ul><li>Uniform abstraction of data from many different sources </li></ul><ul><li>In-memory representation with dynamic or statically typed access </li></ul><ul><li>Used for data transfer between services </li></ul><ul><li>Data Access Services for persistence in different types of data store </li></ul><ul><li>Disconnected usage with optimistic concurrency </li></ul>
    21. 21. Service Data Objects Data Access Service Data Object Graph Change Summary Data Graph DataObject Typically within a single process
    22. 23. SDO Example – Data Model
    23. 24. SDO Example – Resulting SDO Objects departments[0] departments name departments[1] name location number employees[0] employees[1] name name SN is_manager name employees[0] employees[1] name SN is_manager employees employees company employee_of_the_month containment=false
    24. 25. Agenda <ul><li>Why are we doing it </li></ul><ul><ul><li>Motivation </li></ul></ul><ul><li>What are we working on </li></ul><ul><ul><li>SOA Base Programming Model </li></ul></ul><ul><ul><li>Service Component Architecture (SCA) </li></ul></ul><ul><ul><li>Service Data Objects (SDO) </li></ul></ul><ul><li>How, Who, Where, When… </li></ul><ul><ul><li>Specs, Apache Tuscany, PHP and related activity </li></ul></ul><ul><li>Q & A </li></ul>
    25. 26. SCA and SDO Timeline To Date <ul><li>An industry consortium including IBM, BEA Systems, IONA, Oracle, SAP, Siebel, Sybase, Zend and Interface21 announce their intention to work together defining SCA and SDO </li></ul><ul><ul><li> </li></ul></ul><ul><li>SCA 0.9 and SDO 2.0 specifications made available </li></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>Apache Tuscany incubator project initiated to include: </li></ul><ul><ul><li>Java support for </li></ul></ul><ul><ul><li>SCA 0.9 supporting Axis/Tomcat and plain J2SE environments </li></ul></ul><ul><ul><li>SDO 2.0(subset initially) </li></ul></ul><ul><ul><li>Relational DAS support (JDBC/Derby) </li></ul></ul><ul><ul><li>C++ support for </li></ul></ul><ul><ul><li>SDO 2.0 with XML support only </li></ul></ul><ul><ul><li>SCA 0.9 supporting Apache Web server and Axis/C++ </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>SDO for PHP project release 1.0.1 </li></ul><ul><ul><li>Supporting Apache Web server and PHP 5.1 </li></ul></ul><ul><ul><li>Hosted on PECL repository (beta available since July 2005) </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>Apache Tuscany Java Milestone 1 Release </li></ul>Nov 05 Jan 06 March 06 May 06
    26. 27. Open Source SOA Activities Open Industry SOA Specs Implementation SCA 0.9 SDO 2.0.1 Apache Tuscany Java C++ PHP/PECL SDO SCA SCA SDO with XML Support SCA Assembly Model Industry Consortium Client and Implementation Model JAVA Relational DAS PHP Extension SDO with XML Support XML DAS Relational DAS Client and Implementation Model CPP SDO Specification JAVA SDO Specification CPP Relational DAS Tools Eclipse SOA Tools Project
    27. 28. Apache Software Foundation http:// / <ul><li>Non-profit corporation </li></ul><ul><ul><li>No staff, all volunteer </li></ul></ul><ul><ul><li>Elected membership </li></ul></ul><ul><li>Primary goal is to foster open source communities </li></ul><ul><ul><li>Provide technical infrastructure </li></ul></ul><ul><ul><li>Provide legal oversight </li></ul></ul><ul><li>Technocratic Meritocracy </li></ul><ul><ul><li>People earn status by what they do </li></ul></ul><ul><li>Project communities are very independent </li></ul><ul><ul><li>Project Management Committee is legal construct </li></ul></ul><ul><ul><ul><li>Binding decisions e.g. to release software </li></ul></ul></ul><ul><ul><li>Project community decides direction and priorities </li></ul></ul>PECL <ul><li>PHP Extension Community Library </li></ul><ul><ul><li>Hosted at </li></ul></ul><ul><li>Primary goal is to host native extensions for PHP </li></ul><ul><ul><li>I.e. extensions written in C/C++ </li></ul></ul><ul><ul><li>Extensions written in the PHP language itself are hosted over at PEAR </li></ul></ul><ul><li>Less formal that Apache </li></ul><ul><ul><li>Run by the PHP community to server their needs </li></ul></ul><ul><ul><li>Projects are proposed on the mailing list </li></ul></ul><ul><ul><li>Get added to PECL if people like the idea </li></ul></ul>PHP SOA
    28. 29. Call for Volunteers <ul><li>Projects are open to all </li></ul><ul><ul><li>Working to build a diverse community </li></ul></ul><ul><ul><ul><li>Java and C++ implementations of SCA and SDO At Apache </li></ul></ul></ul><ul><ul><ul><li>PHP implementation of SDO at PECL </li></ul></ul></ul><ul><ul><li>Starting to get quite a lot of activity </li></ul></ul><ul><ul><ul><li>Particular, for some reason, we are attracting a number of academics from Brazil </li></ul></ul></ul><ul><li>How can I help? </li></ul><ul><ul><li>Download project and kick the tires </li></ul></ul><ul><ul><ul><li>Upcoming Java and C++ M2 releases </li></ul></ul></ul><ul><ul><ul><li>PHP SCA 0.1.0 </li></ul></ul></ul><ul><ul><li>Give feedback on issues, suggestions for improvement </li></ul></ul><ul><ul><ul><li>Documentation, ease of use, features </li></ul></ul></ul><ul><ul><li>Contribute improvements </li></ul></ul><ul><ul><ul><li>Anything from simple doc changes up to a new container </li></ul></ul></ul><ul><ul><li>Feel free to contact us but you and the community get much better value when you interact directly on the projects mailing lists </li></ul></ul>
    29. 30. Links <ul><li>SCA and SDO specifications and white papers </li></ul><ul><li>Apache Tuscany Web site http:// / </li></ul><ul><li>Apache Tuscany code http:// / </li></ul><ul><li>Apache Tuscany Wiki http:// </li></ul><ul><li>PHP Extension Community Library (PECL) </li></ul><ul><li>PHP SOA Home Page </li></ul><ul><li> </li></ul><ul><li>Eclipse SOA Tools Project </li></ul><ul><li>IBM SCA Wiki http:// = Main&wiki =SCA </li></ul>
    30. 31. Questions?