open source soa apache tuscany and php/soa

31
http://w3.ibm.com/ibm/presentations 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) 20 th October, 2006

Upload: gefen

Post on 13-Jan-2016

33 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 2: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 3: Open Source SOA  Apache Tuscany and PHP/SOA

IBM Software Group

Open Source SOA

Why SOA?

Current It Infrastructure

Services/Components (reusable functional assets)

Wiring (service composition)

FlexibleResilientExtendableManageableReusable…

RigidFragileStaticComplexBespoke…

Page 4: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 5: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 6: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 7: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 8: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 9: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 10: Open Source SOA  Apache Tuscany and PHP/SOA

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..

Page 11: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 12: Open Source SOA  Apache Tuscany and PHP/SOA

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; }}

Page 13: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 14: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 15: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 16: Open Source SOA  Apache Tuscany and PHP/SOA

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>

Page 17: Open Source SOA  Apache Tuscany and PHP/SOA

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>

Page 18: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 19: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 20: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 21: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 22: Open Source SOA  Apache Tuscany and PHP/SOA

IBM Software Group

Open Source SOA

Page 23: Open Source SOA  Apache Tuscany and PHP/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

Page 24: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 25: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 26: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 27: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 28: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 29: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 30: Open Source SOA  Apache Tuscany and PHP/SOA

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

Page 31: Open Source SOA  Apache Tuscany and PHP/SOA

IBM Software Group

Open Source SOA

Questions?