The PS/SL Middleware Project. 28 July 2000Alessandro RISSO The PS/SL Middleware Project Outline What...

38
The PS/SL Middleware The PS/SL Middleware Project Project

Transcript of The PS/SL Middleware Project. 28 July 2000Alessandro RISSO The PS/SL Middleware Project Outline What...

The PS/SL Middleware ProjectThe PS/SL Middleware Project

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

OutlineOutline

What is Middleware ?Project OverviewTechnical description

• Functionality

• Technology

• Architecture and APIsMilestones

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

The PS/SL Middleware ProjectThe PS/SL Middleware Project

Mandate• Launched in early 1999 to provide communication

infrastructure for existing accelerators

Members• PS/CO: Steen Jensen, Alessandro Risso, Nikolai Trofimov

• SL/CO: Vito Baggiolini, Francois Chevrier, Francesco Calderini, Kris Kostro, Marc Vanden Eynden

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

What is Middleware ?What is Middleware ? Middleware definition

• “communication glue between distributed software components”

• infrastructure to exchange data and commands between different parts of a distributed control system

Based on a Device/Property model• HW and SW entities are represented as “devices”

• Devices have “properties” that can be read or modified

Functionality of Accelerator Middleware• Set/Get of device properties

• Monitoring of device properties

• Diffusion of information

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Project OverviewProject Overview March 1999

• Workshop on MW technologies August 1999

• Requirements from PS/SL control & equipment groups published

Autumn 1999• Selection of technology

January 2000• Technical choices published in the “Whitepaper”

Spring 2000• Elaboration of Architecture and APIs

Summer 2000• A Prototype is under development

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

OutlineOutline

What is Middleware ?Project OverviewTechnical description

• Functionality

• Technology

• Architecture and APIsMilestones

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Functional RequirementsFunctional Requirements

Set/Get of device properties• blocking & non-blocking; on cycle event

Monitoring of device properties• Publish/subscribe on value change; on cycle event

Directory Service• Lookup of device servers locations, configuration, etc.

Security/Access Control & Reservation Facility Programming environment:

• Support for Object-Oriented software• Java and C/C++ Application Programming Interfaces (API’s)

Integration of industrial control components• OPC-based devices

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Functionality Version 1.0Functionality Version 1.0(December 2000)(December 2000)

Set/Get of device properties• blocking & nonblocking; on cycle event

Monitoring of device properties• Publish/subscribe on value change; on cycle event

Directory Service• Lookup of device servers locations, etc.

Security/Access Control & Reservation Facility Programming environment:

• Support for Object-Oriented software• Java and C/C++ Application Programming Interfaces (APIs)

Integration of industrial control components• OPC-based devices

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Further RequirementsFurther Requirements

Reliability, scalability, performance Availability on Multi-Platform Support & tools for maintenance

Approach• Adopt open standards

• Minimize in-house development

• Use commercial middleware products

• Isolate commercial products from our applications => technology independent APIs

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

OutlineOutline

What is Middleware ?Project OverviewTechnical description

• Functionality

• Technology

• Architecture and APIsMilestones

Chosen TechnologyChosen Technology

CORBA for Set/Get• “Object-Oriented RPC”

• Available on multiple platforms & languages

MoM for Publish/Subscribe• Support for the Java Message

Service (JMS) API

• Publication of data to a “topic”

CORBA MoM

Technical Details onTechnical Details onMW WhitepaperMW Whitepaper

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Evaluated ProductsEvaluated Products

CORBA• HARDPack (Lockheed Martin/USA)

• omniORB2 (AT&T/UK)

• ORBexpress (OIS/USA)

• ORBacus (OOC/USA)

MoM• IBUS (SoftWired/CH)

• SmartSockets (Talarian/USA)

• SonicMQ (Progress Software/USA)

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

CORBA EvaluationCORBA Evaluation

Performance & Scalability Interoperability

• Java/C++ clients connected to Java/C++ servers

• Different products deployed on different platforms

Java ClientLINUX

C++ ServerLynxOS

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

MoM EvaluationMoM Evaluation

Four major test cases have been defined • Latency by message size

• Latency with multiple subscribers

• Latency with message filtering

• Throughput Tested JMS API compatibility on different products Tests run under LINUX & NT

Product fine tuning, license policy, pricing with MoM companies

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

OutlineOutline

What is Middleware ?Project OverviewTechnical description

• Functionality

• Technology

• Architecture and APIsMilestones

CDEV API SL Beans API Other

MW Integration Layer

MoM Subscriber Abstr.ORB Abstraction Layer

MoM Communication

MoM Publisher Abstr.

CORBA Communication

ORB Abstraction Layer

Device Server Framework

OtherGM Library

PS GTWSL-EquipSL GTW

OPC ClientOPC GTW

Client Program

Device Server

Corba Communication

MoM Communication

Corba Communication

Corba to MoM Gateway

2-T

ier

Arc

hit

ectu

re

Publish for Lynx

2-T

ier

Arc

hit

ectu

re Client Program

Device Server

Corba Communication

Corba to MoM Gateway

Corba Communication

MoM Communication

Application Server, Virtual Devices

Device Server

Corba Communication

Corba to MoM Gateway

Corba Communication

GUI Program

Corba Communication

MoM Communication

MoM Communication

3-T

ier

Arc

hit

ectu

re

CDEV API SL Beans API Other

MW Integration Layer

MoM Subscriber Abstr.ORB Abstraction Layer

MoM Communication

MoM Publisher Abstr.

CORBA Communication

ORB Abstraction Layer

Device Server Framework

OtherGM Library

PS GTWSL-EquipSL GTW

OPC ClientOPC GTW

CORBAN.Trofimov

MOMF.ChevrierF.CalderiniM.V.Eynden

INTEGRATION LAYER

V.Baggiolini

SERVER FRAMEWORK

A.RissoS.Jensen

CONFIG.SERVICES

K.Kostro

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

OutlineOutline

What is Middleware ?Project OverviewTechnical description

• Functionality

• Technology

• Architecture and Client, Server & Config. APIsMilestones

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Client & Server APIClient & Server APIfor MW V.1for MW V.1

Java Client API• Available on all platforms supporting a JVM 1.2.x

C/C++ Server API• Available on LynxOS only

APIs Available in Future• C/C++ Client API, Java Server API and “Windows” API

• Extended Pub/Sub functionality for non Device-Oriented systems

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Java Client API Classes Java Client API Classes (DRAFT)(DRAFT)

One generic RemoteDevice class (Proxy)• one instance per device

• set/get, monitorOn/Off methods

A few additional classes and interfaces•CycleSelector, Filter, ReplyListener• Exceptions

RemoteDevice Constructors•RemoteDevice(String DeviceName);•RemoteDevice(String DeviceClassName,

String DeviceName);

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Set/Get MethodsSet/Get Methods(DRAFT)(DRAFT)

Synchronous (“blocking”) get/set•int getInt(String propName);•void setInt(String propName, int value);

Asynchronous (“non-blocking”) get/set•void getInt(String propName,ReplyListener rl)

Cycle-dependent, asynchronous get/set• void getInt(String propName,

CycleSelector sel,ReplyListener rl); Filtered, cycle-dependent, asynchronous get/set• void getInt(String propName,

CycleSelector sel,Filter f, ReplyListener rl);

CL

IEN

T A

PI

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

MonitorOn/Off MethodsMonitorOn/Off Methods(DRAFT)(DRAFT)

Monitor a property on-change:•MonToken monitorOn(String propName,

monListener l);•void monitorOff(MonToken mt);

Monitor a property with CycleSelector:•MonToken monitorOn(String propName,

CycleSelector cs, monListener l);

CL

IEN

T A

PI

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Type-specific, overloaded methodsType-specific, overloaded methods (DRAFT) (DRAFT)

In RemoteDevice class: One group of methods per primitive type•setInt() setLong() setFloat() setDouble() setByte() setChar() setBoolean()

One group of methods for Object types•setObject() can be used for anything, including

Arrays and Data/DataEntry Complex data types are passed with setObject()

• they are extracted and packed into Data/Data-Entry using Reflection

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Active & Passive DevicesActive & Passive Devices

Active Devices publish data spontaneously• e.g. OPC Server publishes data to an OPC Client

Passive Devices need to be polled• e.g. EM Property values stored in a Data Table are

polled via the GM library

SE

RV

ER

SID

E

Get Set Poll Active DeviceListener

MonitorOnActive Device

Subscriber

Any PollingMechanism

GET SET MonitorON-OFF LISTENERS

PollingEngine

ForwardingEngine

Subscriptions

Device Server

Subscription Manager

Ser

ver

Fra

mew

ork

Ad

apte

r

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

IOPoint DefinitionIOPoint Definition

Device Class POWERDevice Instance pow.xyz-123Property ACQCycle Selector /SEQUENCE/CYCLE/…/…

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

C++ C++ ServerServer API Classes API Classes

One generic DeviceServer class• Singleton in V.1 (a single instance for all served devices)

• set/get, monitorOn/Off methods

A few additional Classes & Helper Methods•IOPoint, CycleSelector, Filter, Data,...

• getDeviceName, getDeviceClass etc. for IOPoint• getInteger, setInteger, etc. for Data/DataEntry

• Exceptions

Interfaces for devices control• C++ API during the prototyping phase

• C API expected by the end of the year

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Get/Set InterfacesGet/Set Interfaces(DRAFT)(DRAFT)

set (IOPoint iop, Data value, CycleSelector sel)

get (IOPoint iop, Data value, CycleSelector sel)

get (IOPoint iop, Data value, CycleSelector sel, Filter f)

One can implement only the interfaces supported by the device

SE

RV

ER

AP

I

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Polling Engine & InterfacesPolling Engine & Interfaces(Passive Device Only(Passive Device Only - DRAFT - DRAFT))

Polling Engine & Interfaces•Poller getPoller (IOPoint iop)•void run() •void stop()•Boolean isRunning()

Polling Interface •void poll(IOPoint iop, Data value,

ValueQualifier vq)•ValueQualifer signals that the value changed,

unchanged, or ask to use the default comparison algorithm

SE

RV

ER

AP

I

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Server Framework Poll MethodServer Framework Poll Method(Passive Device Only(Passive Device Only - DRAFT - DRAFT))

poll()

• It is called by the Poller upon reception of an event

• It walks through the his subscription list and, for each entry, it executes the implementation of the poll(IOPoint iop, Data value,…)interface

• It then validates and pushes the operation results to the listeners

We will provide some common polling engine implementations: • e.g. Periodic poller, PLS poller

SE

RV

ER

AP

I

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

MonitorOn / Off InterfacesMonitorOn / Off Interfaces & Push Method & Push Method

(Active Devices Only(Active Devices Only - DRAFT - DRAFT))

Device Adapter (Subscriber)•monitorOn(IOPoint iop)

• It executes the device specific subscription & activates the listener

•monitorOff(IOPoint iop)• It executes the device specific unsubscribe

Active Device Listener (Publisher)•push(IOPoint iop, Data value,

ValueQualifier vq)

SE

RV

ER

AP

I

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

API for MW ConfigurationAPI for MW Configuration Main Functionality

• Resolve MW Server name based on Device name

• Server Configuration• Framework (General)• Device Adapter (Specific)

Corba & MoM use their own address resolution and repository• Naming Service for CORBA

• Topic management via JNDI (Java Naming & Directory Interface) for MoM

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

OutlineOutline

What is Middleware ?Project OverviewTechnical description

• Functionality

• Technology

• Architecture and APIsMilestones

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

Important MilestonesImportant Milestones

• End of Summer 00: Running Prototype • API’s and Architecture defined and implemented

• Most of Version 1.0 functionality

• Deployed in a testbed

• Simulated devices

• End of 2000: Middleware V1.0 • Full Version 1.0 functionality

• Operational version

• Devices fully integrated

28 July 2000 Alessandro RISSO The PS/SL Middleware Project

DocumentationDocumentation

http://proj-cmw.web.cern.ch/proj-cmw/• Workshop on existing MW technologies

• User Requirement Document

• The technology and techniques for the PS/SL Middleware – White Paper –

• This presentation