open source soa apache tuscany and php/soa
DESCRIPTION
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) - PowerPoint PPT PresentationTRANSCRIPT
IBM Software Group
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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
Why SOA?
Current It Infrastructure
Services/Components (reusable functional assets)
Wiring (service composition)
FlexibleResilientExtendableManageableReusable…
RigidFragileStaticComplexBespoke…
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
What Are We Working On – SOA Programming Model
Services/Components
Wiring
Service Component Architecture (SCA) Service definition, assembly, invocation and mediation
Business LogicImplementation
// Print out the top level elements of the documentfor ( 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;…
SCA
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
Data
SDOSDO
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
Service Assembly Model
Model for assembling tightly coupled code Model for assembling loosely coupled services
Composite
Composite
Web Service
Composite
IBM Software Group
Open Source SOA
SCA Artefacts
Composite A
ComponentAService
BindingWeb ServiceSCAJCAJMSSLSB…
BindingWeb ServiceSCAJCAJMSSLSB…
ComponentB
Interface- Java interface- WSDL PortType
Interface- Java interface- WSDL PortType
Wire WireWire
Reference
Propertysetting
Properties
Composite BImplementationJava,C++,etc..
IBM Software Group
Open Source SOA
Service Component
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
ComponentType
References
Properties
Services
IBM Software Group
Open Source SOA
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
public class HelloWorldImpl implements HelloWorldService { private String greeting; public void setGreeting(String greeting) { this.greeting = greeting; }
public String sayHello(String name) { return greeting + name; }}
IBM Software Group
Open Source SOA
Composite Assembly
Co-located, connected set of componentsServices provided to other module
Defined by ServicesRequires services provided by other modules
Defined as ReferencesWires connect components together
Composite X
ComponentA
ComponentB
ServiceReference
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
Big Bank – Account Composite
SCA is the component modelComponents may be wired togetherSDO DataObjects are the data flowing on wires between
Components
Component
AccountServiceComponent
Component
AccountDataServiceComponent
Service
AccountService
Reference
StockQuoteService
Composite AccountComposite
WebServer
.NetWeb
Service
SCA
SCASCA
SDO
SDO
SDO
More detail on this sample app:http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-sca/SCA_BuildingYourFirstApplication_V09.pdf
IBM Software Group
Open Source SOA
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>
IBM Software Group
Open Source SOA
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>
<component name="AccountServiceComponent"> <implementation.java class="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>
IBM Software Group
Open Source SOA
Why Components?Why not just write Java or C++ modules?
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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
Service Data Objects
Web App:Custom Code
EJB: Invoice
JCA
Web service
EJB: Customer
RDB
XML DBJDBC
XPath / XQuery
Local
XML/HTTP
CCI / Proprietary
Data Access Service
DataObjectGraph
ChangeSummary
Data GraphDataObject
Typically within a single process
IBM Software Group
Open Source SOA
IBM Software Group
Open Source SOA
SDO Example – Data Model
Department
name : Stringlocation : Stringnumber : int
Company
name : String
0..* +departments0..*
Employee
name : StringSN : Stringmanager : boolean
0..*+employees
0..*
+employeeOfTheMonth
IBM Software Group
Open Source SOA
SDO Example – Resulting SDO Objects
departments[0]
departmentsname
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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
SCA and SDO Timeline To Date 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
Nov 05
Jan 06
March 06
May 06
IBM Software Group
Open Source SOA
Open Source SOA ActivitiesOpen Industry SOA
Specs Implementation
SCA 0.9 SDO 2.0.1
Apache Tuscany
Java C++
PHP/PECL
SDO
SCASCA
SDO withXML Support
SCAAssembly
Model
IndustryConsortium
Client andImplementation
ModelJAVA
RelationalDAS
PHPExtension
SDO withXML Support
XMLDAS
RelationalDASClient and
ImplementationModelCPP
SDOSpecification
JAVA
SDOSpecification
CPPRelational
DAS
Tools
EclipseSOA Tools
Project
IBM Software Group
Open Source SOA
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 MeritocracyPeople earn status by what they do
Project communities are very independentProject Management Committee is legal construct
oBinding 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 ApacheRun by the PHP community to server their needsProjects are proposed on the php.pecl.dev mailing listGet added to PECL if people like the idea
PHP SOA http://osoa.org/display/PHP/SOA+PHP+Homepage
IBM Software Group
Open Source SOA
Call for Volunteers
Projects are open to all Working to build a diverse community
o Java and C++ implementations of SCA and SDO At Apacheo PHP implementation of SDO at PECL
Starting to get quite a lot of activityo Particular, for some reason, we are attracting a number of academics
from Brazil
How can I help? Download project and kick the tires
o Upcoming Java and C++ M2 releases o PHP SCA 0.1.0
Give feedback on issues, suggestions for improvemento Documentation, ease of use, features
Contribute improvementso 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
IBM Software Group
Open Source SOA
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
IBM Software Group
Open Source SOA
Questions?