The PS/SL Middleware Project. 28 July 2000Alessandro RISSO The PS/SL Middleware Project Outline What...
-
Upload
griffin-lee -
Category
Documents
-
view
229 -
download
2
Transcript of The PS/SL Middleware Project. 28 July 2000Alessandro RISSO The PS/SL Middleware Project Outline What...
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