The slides from this presentation are here

Download Report

Transcript The slides from this presentation are here

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
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
Open Source SOA
IBM Software Group
Why SOA?
Services/Components
(reusable functional
assets)
Wiring (service
composition)
Current It
Infrastructure
Rigid
Fragile
Static
Complex
Bespoke
…
Open Source SOA
Flexible
Resilient
Extendable
Manageable
Reusable
…
IBM Software Group
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
Open Source SOA
IBM Software Group
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
Open Source SOA
IBM Software Group
What Are We Working On – SOA Programming Model
 Service Component Architecture (SCA)

Service definition, assembly, invocation and mediation
Data
Services/Components
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;
…
SCA
 Service Data Objects (SDO)
Wiring

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
Open Source SOA
IBM Software Group
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
Open Source SOA
IBM Software Group
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
Open Source SOA
IBM Software Group
Service Assembly Model
 Model for assembling tightly coupled code
 Model for assembling loosely coupled services
Composite
Composite
Composite
Web Service
Open Source SOA
IBM Software Group
SCA Artefacts
Interface
- Java interface
- WSDL PortType
Interface
- Java interface
- WSDL PortType
Properties
Composite A
Property
setting
Component
A
Service
Wire
Wire
Binding
Web Service
SCA
JCA
JMS
SLSB
…
Open Source SOA
Component
B
Implementation
Java,
C++,
etc..
Reference
Wire
Composite B
Binding
Web Service
SCA
JCA
JMS
SLSB
…
IBM Software Group
Service Component
Properties
Services
References
Component
Type
 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
Open Source SOA
IBM Software Group
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;
}
}
Open Source SOA
IBM Software Group
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
Composite X
Service
Component
A
Component
B
Open Source SOA
Reference
IBM Software Group
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
Open Source SOA
IBM Software Group
Big Bank – Account Composite
Composite
AccountComposite
SCA
SCA
Component
Account
DataService
Component
SCA
Web
Server
Component
Service
Account
Service
SDO
SDO
Account
Service
Component
Reference
SDO
StockQuote
Service
.Net
Web
Service
 SCA is the component model
 Components may be wired together
 SDO DataObjects are the data flowing on wires between
Components
More detail on this sample app:
http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-sca/SCA_BuildingYourFirstApplication_V09.pdf
Open Source SOA
IBM Software Group
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>
Open Source SOA
IBM Software Group
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>
Open Source SOA
IBM Software Group
Why Components?
 Why not just write Java or C++ modules?
Component
(Re)deployment
Component
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
Open Source SOA
Component
Client
Component
Component
IBM Software Group
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
Open Source SOA
IBM Software Group
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
Open Source SOA
IBM Software Group
Service Data Objects
RDB
Typically within a single process
Data Graph
JDBC
DataObject
XML DB
XPath / XQuery
Web App:
Data
Object
Graph
DataCustom
Access
Service
Code
Local
EJB:
EJB:
Invoice
Customer
XML/HTTP
Change
Summary
Web service
CCI / Proprietary
JCA
Open Source SOA
IBM Software Group
Open Source SOA
IBM Software Group
SDO Example – Data Model
Company
name : String
0..*
+departments
Department
name : String
location : String
number : int
0..*
+employees
Employee
name : String
SN : String
+employeeOfTheMonth
manager : boolean
Open Source SOA
IBM Software Group
SDO Example – Resulting SDO Objects
company
name
employee_of_the_month
departments
containment=false
departments[0]
name
location
employees[0]
name
number
departments[1]
employees
employees[1]
name
Open Source SOA
SN is_manager
name
employees[0]
name
SN is_manager
employees
employees[1]
IBM Software Group
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
Open Source SOA
IBM Software Group
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://www128.ibm.com/developerworks/webservices/library/specification/wsscasdosumm/
 SCA 0.9 and SDO 2.0 specifications made available


Jan 06
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/
March 06  SDO for PHP project release 1.0.1



May 06
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
Open Source SOA
IBM Software Group
Open Source SOA Activities
Open Industry SOA
Specs
Industry
Consortium
SCA 0.9
Assembly
Model
Client and
Implementation
Model
JAVA
Implementation
Tools
Java
SDO 2.0.1
SDO
Specification
JAVA
SDO
Specification
CPP
Client and
Implementation
Model
CPP
Open Source SOA
Apache
Tuscany
Eclipse
SOA
Tools
Project
SCA
PHP/PECL
C++
SCA
PHP
Extension
SCA
SDO with
XML Support
SDO with
XML Support
Relational
DAS
Relational
DAS
SDO
XML
DAS
Relational
DAS
IBM Software Group
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
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 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 SOA http://osoa.org/display/PHP/SOA+PHP+Homepage
Open Source SOA
IBM Software Group
Call for Volunteers
 Projects are open to all
 Working to build a diverse community
o Java and C++ implementations of SCA and SDO At Apache
o PHP implementation of SDO at PECL
 Starting to get quite a lot of activity
o 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 improvement
o Documentation, ease of use, features
 Contribute improvements
o 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
Open Source SOA
IBM Software Group
Links
 SCA and SDO specifications and white papers
http://www.ibm.com/developerworks/webservices/library/specification/ws-sca/
http://www.ibm.com/developerworks/webservices/library/specification/ws-sdo/
 Apache Tuscany Web site
http://incubator.apache.org/tuscany/
 Apache Tuscany code
http://svn.apache.org/repos/asf/incubator/tuscany/
 Apache Tuscany Wiki
http://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 Project
http://www.eclipse.org/stp/
 IBM SCA Wiki
http://instawiki.webahead.ibm.com/pilot/wiki/Wiki.jsp?page=Main&wiki=SCA
Open Source SOA
IBM Software Group
Questions?
Open Source SOA