SCA C++, C and COBOL

26
SCA C++, C and COBOL SCA C++, C and COBOL www.oasis-open.org Bryan Aupperle David Haney 18 Sept. 2007

description

www.oasis-open.org. SCA C++, C and COBOL. Bryan Aupperle David Haney 18 Sept. 2007. OASIS Status. C and C++ specifications transitioning from OSOA to OASIS Governed by the SCA-C-C++ TC Policy related annotations Cross standard consistency Compliance test suites - PowerPoint PPT Presentation

Transcript of SCA C++, C and COBOL

Page 1: SCA C++, C and COBOL

SCA C++, C and COBOLSCA C++, C and COBOL

www.oasis-open.org

Bryan AupperleDavid Haney

18 Sept. 2007

Page 2: SCA C++, C and COBOL

OASIS Status C and C++ specifications

transitioning from OSOA to OASIS Governed by the SCA-C-C++ TC

Policy related annotations Cross standard consistency Compliance test suites

COBOL specification continuing development under OSOA SCA-C-C++ TC work will influence

Page 3: SCA C++, C and COBOL

SCDL for C++ interface.cpp

header – C++ header file describing the interface class – (optional) Class defining the interface callbackHeader – (optional) C++ header describing the

callback interface callbackClass – (optional) Class defining the callback

interface remotable – (optional)

implementation.cpp library – Shared library defining the service factory path – (optional) Path to search for the library header – C++ header file describing the implementation class – (optional) Class defining the implementation scope – (optional)

Page 4: SCA C++, C and COBOL

C++ APIs ComponentContext

Primary interface for accessing SCA defined components.

Component Meta Information getCurrent(), getURI(), getProperties(),

getDataFactory() Service Lookup

getService(), getServices() Service References

getServiceReference(), getServiceReferences() getSelfReference()

Page 5: SCA C++, C and COBOL

C++ APIs (cont) ServiceReference

Interface for interacting with service instances

Conversational interface getConversationID(), setConversationID()

Asynchronous interface getCallbackID(), setCallbackID() getCallback(), setCallback()

Page 6: SCA C++, C and COBOL

C++ WSDL Mapping Defines a translation from a C++ class interface

to a WSDL Uses comment annotations to control the

conversion Defines mapping rules for:

primitive types C++ Standard Library types SDO classes, structs, arrays, enums

Defers to the OMG WSDL to C++ Mapping for generating C++ headers from a WSDL.

Page 7: SCA C++, C and COBOL

SCDL for C Interface defined by a set of functions interface.c

header – header file describing the interface callbackHeader – (optional) header file describing the

callback interface remotable – (optional)

implementation.c module – binary executable for the component

implementation library – (optional) indicates whether the service is

implemented as a library or a program location – (optional) location of the module scope – (optional)

Page 8: SCA C++, C and COBOL

C APIs Synchronous Programming

SCALocate(), SCALocateMultiple() – get handle(s) to services SCAInvoke() – invokes an operation of a service SCAProperty<PropertyType>() – get the value of a property SCAGetFaultMessage(), SCASetFaultMessage() – get or set a

fault message for a service operation Asynchronous Programming

SCAGetCallback() – get handle of callback instance SCACallback() – invoke a callback operation SCASetCallback() – set a callback function for a reference SCASetCallbackID(), SCAGetCallbackID() – get or set the callback

ID for a service instance Conversation Services

SCAGetConversationID(), SCASetConversationID() – get or set a user provided conversation ID

SCAEndConversation() – end a conversation

Page 9: SCA C++, C and COBOL

Implementation as Program Support environments where function is

provided by programs API

SCAService() – get name of invoked service SCAOperation() – get name of invoked

operation SCAMessageIn() – get input message

SCAMessageOut() – set output message

Page 10: SCA C++, C and COBOL

SCDL for COBOL interface.cobol

copybook – copybook file describing the interface callbackCopybook – (optional) copybook file that

describing the callback interface location – (optional) location of library containing the

copybook files remotable – (optional)

implementation.cobol program –binary executable for the component

implementation location – (optional) location of library containing the

binary executable scope – (optional)

Page 11: SCA C++, C and COBOL

COBOL APIs Same functions as in C

Synchronous Programming SCAProperty is not typed

Program-Based Implemenation Support

Asynchronous Programming Conversation Services

Page 12: SCA C++, C and COBOL

C & COBOL WSDL Mapping Defines a translation between language

structures and WSDL Defines type mapping rules for:

Primitive types Structs or Groups SDO Variable length strings and unbounded arrays

Defines mapping rules between operations and functions

Page 13: SCA C++, C and COBOL

Annotations Contained in comments, processed by tools Interface

Invocation attribute OneWay Remotable Callback

EndConversation Implementation

Scope Lifecycle Conversation information Property Reference

Page 14: SCA C++, C and COBOL

Open Implementations Apache Tuscany Native

http://incubator.apache.org/tuscany/sca-native.html

Implements pre-1.0 C++ specification Working towards 1.0 compliance

Page 15: SCA C++, C and COBOL

OASIS References SCA-C-C++ TC

http://www.oasis-open.org/apps/org/workgroup/sca-c-cpp/description.php

SCA-C-C++ Charter http://www.oasis-open.org/committees/

sca-c-cpp/charter.php

Page 16: SCA C++, C and COBOL

OSOA References OSOA SCA Specifications

http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications

Final Specifications SCA C++ Client and Implementation

Draft Specifications SCA C Client and Implementation SCA COBOL Client and Implementation

Page 17: SCA C++, C and COBOL

Other References OMG WSDL to C++ Specification

http://www.omg.org/docs/ptc/06-08-01.pdf

Page 18: SCA C++, C and COBOL

Backup

Page 19: SCA C++, C and COBOL

C++ APIs (cont) Supplemental APIs

RefCountingPointer Defines a reference-counted pointer interface

SCAException Provides a hierarchy of exception classes for use

with the SCA API.• SCANullPointerException• ServiceRuntimeException• ServiceUnavailableException• NoRegisteredCallbackException• ConversationEndedException• MultipleServicesException

Page 20: SCA C++, C and COBOL

C++ Annotations Contained in comments, processed by tools Interface Header File

@Remotable @Callback @OneWay @EndConversation

Implementation Header File @Scope @EagerInit @AllowsPassByReference @Conversation @Property @Reference

Page 21: SCA C++, C and COBOL

C Annotations Contained in comments, processed by tools Header File

@Operation, @Callback @Remotable, @OneWay @EndConversation

Implementation File @Service @Reference @Property @Scope @Init, @Destroy, @EagerInit @AllowPassByReference @Conversation

Page 22: SCA C++, C and COBOL

COBOL Annotations Contained in comments, processed by tools Interface File

@Operation, @Callback @Remotable, @OneWay @EndConversation

Implementation File @Service @Reference @Property @Scope @Init, @Destroy, @EagerInit @AllowPassByReference @Conversation

Page 23: SCA C++, C and COBOL

C++ Example Interface SCDL

<service name=“LoanService”><interface.cpp header=“LoanService.h”/>

</service>

Implementation SCDL

<component name=“LoanServiceImpl”><implementation.cpp library=“loan” header=“LoanServiceImpl.h”/>

</component>

Page 24: SCA C++, C and COBOL

C++ Example (cont) LoanService Interface

class LoanService {public: virtual bool approveLoan( unsigned long customerNumber, unsigned long loanAmount) = 0;};

Page 25: SCA C++, C and COBOL

C++ Example (cont) LoanServiceImpl Interface

class LoanServiceImpl :public LoanService {public: virtual bool approveLoan( unsigned long customerNumber, unsigned long loanAmount) { // … }};

Page 26: SCA C++, C and COBOL

C++ Example (cont) SCA Application

int main(void) { ComponentContextPtr context = ComponentContext::getCurrent(); LoanService* service = (LoanService*) context->getService(“loanService”); bool result = service->approveLoan(12345, 100);

}