1 / 31

Open Source SOA Apache Tuscany and PHP/SOA

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. Agenda. Why are we doing it Motivation What are we working on SOA Base Programming Model Service Component Architecture (SCA)

gefen
Download Presentation

Open Source SOA Apache Tuscany and PHP/SOA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Open Source SOA Apache Tuscany and PHP/SOA Simon Laws (simonslaws AT googlemail DOT com) Kelvin Goodson (kelvingoodson AT apache DOT com) 20th October, 2006

  2. Agenda • Why are we doing it • Motivation • What are we working on • SOA Base Programming Model • Service Component Architecture (SCA) • Service Data Objects (SDO) • How, Who, Where, When… • Specs, Apache Tuscany, PHP and related activity • Q & A

  3. Why SOA? Services/Components (reusable functional assets) Wiring (service composition) Current It Infrastructure Rigid Fragile Static Complex Bespoke … Flexible Resilient Extendable Manageable Reusable …

  4. Why Are We Doing This In Open Source • Promote a common and open approach to simplified application development • Insulate business logic developers from infrastructure complexity • Gain broad industry support for IBM’s vision of SOA and our strategic programming model for services • Major vendors, the developer community, analysts, and customers • Expand beyond the Java/J2EE platform • Breadth of vision includes “legacy” code, scripting, declarative • Multiple language support is a key element in this

  5. Agenda • Why are we doing it • Motivation • What are we working on • SOA Base Programming Model • Service Component Architecture (SCA) • Service Data Objects (SDO) • How, Who, Where, When… • Specs, Apache Tuscany, PHP and related activity • Q & A

  6. Data SDO SDO 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; … What Are We Working On – SOA Programming Model • Service Component Architecture (SCA) • Service definition, assembly, invocation and mediation Services/Components SCA Wiring • Service Data Objects (SDO) • Data transfer between services and to/from a persistent store • SCA can work without SDO but SDO adds a common view of data • Continue the quest to rebalance the ratio of code to business content by hiding the infrastructure complexity

  7. Agenda • Why are we doing it • The motivation • What are we working on • SOA Programming Model • Service Component Architecture (SCA) • Service Data Objects (SDO) • How, Who, Where, When… • Approach • Apache Tuscany Project and related activity • Q & A

  8. Service Component Architecture (SCA) • Specification produced through collaboration of many (18 to date) industry leaders • E.g. BEA, IBM, Oracle, Sun, SAP, IONA, Sybase • www.osoa.org • A model for building loosely-coupled systems based on a Service Oriented Architecture • Language neutral • Technology neutral • Vendor neutral • Provides higher level of abstraction for service composition to allow the architectural view of a system to be separated from specific implementation technology choices • Aims to make manageable the complexity associated with large-scale systems and enterprise applications

  9. Composite Composite Web Service Service Assembly Model • Model for assembling tightly coupled code • Model for assembling loosely coupled services Composite

  10. Composite B ImplementationJava,C++,etc.. SCA Artefacts

  11. ComponentType Service Component Properties • Services provided to other components • Defined in terms of a business interface • References to services provided by other components • Again, defined in terms of a business interface • Properties configure component behavior Services References

  12. Service Implementation • An implementation of application logic in some programming language • Conforms to the implementation model for that language • Java, C++ already specified, others in development, e.g. PHP • Implementation models try to avoid infrastructure constructs • For example, Java model uses Inversion of Control pattern publicclass HelloWorldImpl implements HelloWorldService { private String greeting;publicvoid setGreeting(String greeting) {this.greeting = greeting; }public String sayHello(String name) { returngreeting + name; } }

  13. ComponentA Composite Assembly • Co-located, connected set of components • Services provided to other module • Defined by Services • Requires services provided by other modules • Defined as References • Wires connect components together Reference Composite X Service ComponentB

  14. Wiring • Wires are used to connect components, services and references • Wiring is transparent to application code • Allows container system to change wiring without impacting the application • How wiring is performed is defined by the container implementation • Wire binding determines format of data • For example, web services, IIOP, REST • Wires can have policies attached to specify quality of service • Declarative Transactions, Security, Reliability • Implementation provided by container in conjunction with binding

  15. Big Bank – Account Composite Web Server SCA Composite AccountComposite SCA Component AccountDataServiceComponent SCA Component AccountServiceComponent SDO • SCA is the component model • Components may be wired together • SDO DataObjects are the data flowing on wires between Components Service AccountService .Net Web Service SDO Reference StockQuoteService SDO More detail on this sample app: http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-sca/SCA_BuildingYourFirstApplication_V09.pdf

  16. SCDL – Component Description • Each programming model concept has a representation in the XML-based Service Component Definition Language (SCDL) <?xml version="1.0" encoding="ASCII"?> <componentType xmlns="http://www.osoa.org/xmlns/sca/0.9" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <service name="AccountService"> <interface.java interface="services.account.AccountService"/> </service> <reference name="accountDataService"> <interface.java interface="services.accountdata.AccountDataService"/> </reference> <reference name="stockQuoteService"> <interface.java interface="services.stockquote.StockQuoteService"/> </reference> <property name="currency" type="xsd:string" default="USD"/> </componentType>

  17. SCDL – Module Description <?xml version="1.0" encoding="ASCII"?> <composite xmlns="http://www.osoa.org/xmlns/sca/0.9" xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9" name="bigbank.accountmodule" > <service name="AccountService"> <interface.java interface="com.bigbank.account.AccountService"/> <binding.ws port="http://www.bigbank.com/account#AccountServiceSOAP"/> <reference>AccountServiceComponent/AccountService</reference> </service> <componentname="AccountServiceComponent"> <implementation.javaclass="services.account.AccountServiceImpl"/> <properties> <v:currency override="may">EURO</v:currency> </properties> <references> <v:accountDataService>AccountDataServiceComponent</v:accountDataService> <v:stockQuoteService>StockQuoteService</v:stockQuoteService> </references> </component> … </module>

  18. Why Components? • Why not just write Java or C++ modules? Component Component (Re)deployment Client Component Client Component reuse Component Client Declarative composition and separation of concerns, for example, policy or binding can be specified independently of he implementation Component Client Component Component

  19. Agenda • Why are we doing it • Motivation • What are we working on • SOA Base Programming Model • Service Component Architecture (SCA) • Service Data Objects (SDO) • How, Who, Where, When… • Specs, Apache Tuscany, PHP and related activity • Q & A

  20. Service Data Objects • Uniform abstraction of data from many different sources • In-memory representation with dynamic or statically typed access • Used for data transfer between services • Data Access Services for persistence in different types of data store • Disconnected usage with optimistic concurrency

  21. Service Data Objects Typically within a single process Data Graph DataObject Data Object Graph Data Access Service Change Summary

  22. SDO Example – Data Model

  23. company name employee_of_the_month departments containment=false departments[0] departments[1] name location number employees name employees employees[0] employees[1] employees[0] employees[1] name name SN is_manager name SN is_manager SDO Example – Resulting SDO Objects

  24. Agenda • Why are we doing it • Motivation • What are we working on • SOA Base Programming Model • Service Component Architecture (SCA) • Service Data Objects (SDO) • How, Who, Where, When… • Specs, Apache Tuscany, PHP and related activity • Q & A

  25. SCA and SDO Timeline To Date Nov 05 • 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 • http://www-128.ibm.com/developerworks/webservices/library/specification/ws-scasdosumm/ • SCA 0.9 and SDO 2.0 specifications made available • http://www-128.ibm.com/developerworks/library/specification/ws-sca/ • http://www-128.ibm.com/developerworks/library/specification/ws-sdo/ • Apache Tuscany incubator project initiated to include: • Java support for • SCA 0.9 supporting Axis/Tomcat and plain J2SE environments • SDO 2.0(subset initially) • Relational DAS support (JDBC/Derby) • C++ support for • SDO 2.0 with XML support only • SCA 0.9 supporting Apache Web server and Axis/C++ • http://incubator.apache.org/tuscany/ • SDO for PHP project release 1.0.1 • Supporting Apache Web server and PHP 5.1 • Hosted on PECL repository (beta available since July 2005) • http://pecl.php.net/package/sdo • Apache Tuscany Java Milestone 1 Release Jan 06 March 06 May 06

  26. Open Source SOA Activities Open Industry SOA Tools Specs Implementation Industry Consortium Eclipse SOA Tools Project PHP/PECL Apache Tuscany SDO 2.0.1 SCA 0.9 Java C++ PHP Extension SDO Specification JAVA Assembly Model SCA SCA SCA SDO with XML Support SDO with XML Support SDO Client and Implementation Model JAVA SDO Specification CPP Relational DAS Relational DAS XML DAS Relational DAS Client and Implementation Model CPP

  27. Apache Software Foundation http://www.apache.org/ • Non-profit corporation No staff, all volunteer Elected membership • Primary goal is to foster open source communities Provide technical infrastructure Provide legal oversight • Technocratic Meritocracy People earn status by what they do • Project communities are very independent Project Management Committee is legal construct • Binding decisions e.g. to release software Project community decides direction and priorities PECL http://pecl.php.net/ • PHP Extension Community Library • Hosted at php.net • Primary goal is to host native extensions for PHP • I.e. extensions written in C/C++ • Extensions written in the PHP language itself are hosted over at PEAR • Less formal that Apache • Run by the PHP community to server their needs • Projects are proposed on the php.pecl.dev mailing list • Get added to PECL if people like the idea PHP SOAhttp://osoa.org/display/PHP/SOA+PHP+Homepage

  28. Call for Volunteers • Projects are open to all • Working to build a diverse community • Java and C++ implementations of SCA and SDO At Apache • PHP implementation of SDO at PECL • Starting to get quite a lot of activity • Particular, for some reason, we are attracting a number of academics from Brazil • How can I help? • Download project and kick the tires • Upcoming Java and C++ M2 releases • PHP SCA 0.1.0 • Give feedback on issues, suggestions for improvement • Documentation, ease of use, features • Contribute improvements • Anything from simple doc changes up to a new container • Feel free to contact us but you and the community get much better value when you interact directly on the projects mailing lists

  29. Links • SCA and SDO specifications and white papershttp://www.ibm.com/developerworks/webservices/library/specification/ws-sca/http://www.ibm.com/developerworks/webservices/library/specification/ws-sdo/ • Apache Tuscany Web sitehttp://incubator.apache.org/tuscany/ • Apache Tuscany codehttp://svn.apache.org/repos/asf/incubator/tuscany/ • Apache Tuscany Wikihttp://wiki.apache.org/ws/Tuscany • PHP Extension Community Library (PECL)http://pecl.php.net • PHP SOA Home Page http://www.osoa.org/display/PHP/SOA+PHP+Homepage • Eclipse SOA Tools Projecthttp://www.eclipse.org/stp/ • IBM SCA Wikihttp://instawiki.webahead.ibm.com/pilot/wiki/Wiki.jsp?page=Main&wiki=SCA

  30. Questions?

More Related