19
6st ACS Workshop UTFSM ACS Course ACS Course Component, Component, Container, Container, Lifecycle Lifecycle Management Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

Embed Size (px)

Citation preview

Page 1: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

6st ACS Workshop UTFSM

ACS CourseACS CourseComponent, Container, Component, Container, Lifecycle ManagementLifecycle Management

6st ACS Workshop UTFSM, Valparaiso, ChileH. Sommer, G. Chiozzi

Page 2: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

2UTFSM Valparaiso, Chile, Nov 2009 6st ACS Workshop UTFSM

Container/Component

ACS container

Com

pone

nt

My container starts and stops me

and offers its services,some of which I don’t notice

I only care about the Lifecycle IF of my components

Com

pone

nt

Page 3: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

3UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Component

• Deployable unit of ALMA software– same concept from device level to data flow application

– 1…many PL classes per component

– 1…many components per subsystem

• Functional interface defined in CORBA IDL

• Deployed inside a Container

• Well-defined lifecycle (initialization, finalization)

• Accessible as a plain CORBA object if required

• Focus on functionality with little overhead for remote communication and deployment

• Concept promotes modular and decoupled application code

• Similar ideas in EJB, .NET, CCM

Page 4: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

4UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Container

• Centrally handles technical concerns and hides them from application developers

– Deployment, Start-up

– Selection und configuration of various ORBs; here CORBA alone is much too complicated.

– Selection of CORBA Services, integration with ACS Services (Error, Logging, configuration, …)

– Convenient access to other components and resources

• New technical aspects can be integrated in the future, w/o modifying application software

Page 5: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

5UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Container/Component IFs

container

Com

p

CORBAORBs

Services

lifecycleinterface:initrunshutdown

Com

p

functionalinterface:observereadValue

container service IFgetNamegetLoggergetComponent

other ACS

services

Manager deployment

configurations

Page 6: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

6UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Tight vs. Porous Container

por. containertight container

Com

p

CORBA, ACS servicesC

omp

Com

p

functional interface is intercepted by container,for logging/exception handling, security, …

container manages Lifecycle and offers services, but exposes the component’s functional interface directly – less overhead

Page 7: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

7UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Component Offshoots

Com

p

CORBA, ACS services

Com

p

Com

p

Offshoot uses same Container Services instance

• Remotely visible object created by a component

• Life is limited to that of the component

• Offshoots are conceptually “in between” components and PL-objects• See FAQ http://almasw.hq.eso.org/almasw/bin/view/ACS/FAQGOffshoots

Page 8: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

8UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Interactions(component activation & retrieval)

C++ Container

Com

p2

Com

p1

CDBdeployment

configurations

Java Container

Com

p2

Com

p1

Container IF

Manager

Manager IF

(2) which Containercan run “myComp”?

(0)login (3)

activate(“myComp”)returns a referenceto that component

(1)get(“myComp”)

Container IF

CORBA stubs and skeletons are everywhere,but not shown…

Page 9: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

9UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Interactions (component activation & retrieval)

1. Manager and CDB (with deployment info) run

2. Containers are logged in to the Manager with their names, e.g. “TelescopeContainer” or “PipelineContainer1”

3. We assume that one Component is running already…

4. The Component requests a reference to another Component from its Container

5. Container asks Manager for that other Component

6. Manager asks CDB which Container can host the Component(can be the same or a different container as before)

7. Manager tells Container to load the new Component

Page 10: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

10UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Interactions (component activation & retrieval)

8. Container returns reference to new Component to the Manager

9. Manager returns reference to new Component to first Container

10. Now the Container gives its Component the reference to the other Component.

It is not allowedto pass directly Component references

between Componentsas parameters of interfaces.

Components must be passed around ALWAYS by name and arequest to the Manager must be issued using the

Container Services getComponent() interface.

Page 11: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

11UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Component’s client view

Com

p

IDLfunctionalinterface:observe()

Client(a component)

ACSManager

1 -Ask for reference to component

IDL stub

2a – invoke c.observe()

Interface repository

2b.1 - Retrieve interface

2b.2 - Dynamic invocation

Page 12: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

12UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Interactions (Administration)

CDB(static) deployment

configurationsContainer

Com

p2

Com

p1

Con

t. I

F

Manager

Manager IF

Object Explorer Client IF

Admin Client

Client IF

IF Repositoryknows

component IFs

Generic client for any component, allows to call IF methods

All about clients, containers, components

Page 13: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

13UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Object Explorer

Page 14: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

14UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

ACS Command Center

Page 15: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

15UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Container/Component evolution

• In recent releases we have improved decoupling of Components and Containers:– Full separation between Container and Container Services

• Cleaner interfaces• Easier to replace Container implementation

– Dynamic components– Tasks

• We have implemented automatic and dynamic deployment of Containers (ACS Daemon).

• Configuration of the runtime system is being discussed. We are working on better tools to keep aligned the configuration of the various ALMA deployments

Page 16: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

16UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Questions (& Answers)

Page 17: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

17UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Additional slides for discussion

Page 18: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

18UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Component/Container: buy vs. build

• Same idea as .NET, EJB, CCM– .NET binds to Microsoft platform– EJB binds to Java programming language– CCM is still immature and there are no reliable free

implementations • Off-the-shelf Component Container implementations are complex and

require a wholesale commitment from developers to use the languages and tools supplied.

• Focus for these Component/Container implementations are big enterprise business systems

• We aim at staying as much a possible compatible with CMM concepts to allow adopting an implementation, when available.

Page 19: 6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi

ALMA Project

19UTFSM Valparaiso, Chile, Nov 2009

6st ACS Workshop UTFSM

Component/Container vs. EJB

• ALMA components mostly stateless– manipulate entity objects (passed by value)– talk to backend systems

• Thus stateless session beans or Message Driven Beans would be used

• Would only gain instance pooling with resulting thread-safety• Availability of free application servers more doubtful than with

CORBA• Integration with CORBA not as easy (IDL, services, exceptions)• Modifications of EJB container for XML entities more

difficult…