380 likes | 394 Views
Learn about the PS/SL Middleware Project, its technical description, functionality, technology used, and evaluation of CORBA and MoM. Explore the milestones achieved and future requirements.
E N D
Outline • What is Middleware ? • Project Overview • Technical description • Functionality • Technology • Architecture and APIs • Milestones Alessandro RISSO The PS/SL Middleware Project
The 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 Alessandro RISSO The PS/SL Middleware Project
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 Alessandro RISSO The PS/SL Middleware Project
Project 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 Alessandro RISSO The PS/SL Middleware Project
Outline • What is Middleware ? • Project Overview • Technical description • Functionality • Technology • Architecture and APIs • Milestones Alessandro RISSO The PS/SL Middleware Project
Functional 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 Alessandro RISSO The PS/SL Middleware Project
Functionality Version 1.0(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 Alessandro RISSO The PS/SL Middleware Project
Further 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 Alessandro RISSO The PS/SL Middleware Project
Outline • What is Middleware ? • Project Overview • Technical description • Functionality • Technology • Architecture and APIs • Milestones Alessandro RISSO The PS/SL Middleware Project
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” Chosen Technology MoM CORBA Technical Details on MW Whitepaper
Evaluated 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) Alessandro RISSO The PS/SL Middleware Project
CORBA Evaluation • Performance & Scalability • Interoperability • Java/C++ clients connected to Java/C++ servers • Different products deployed on different platforms Java Client LINUX C++ Server LynxOS Alessandro RISSO The PS/SL Middleware Project
MoM 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 Alessandro RISSO The PS/SL Middleware Project
Outline • What is Middleware ? • Project Overview • Technical description • Functionality • Technology • Architecture and APIs • Milestones Alessandro RISSO The PS/SL Middleware Project
CDEV API SL Beans API Other MW Integration Layer ORB Abstraction Layer MoM Subscriber Abstr. CORBA Communication MoM Communication ORB Abstraction Layer MoM Publisher Abstr. Device Server Framework PS GTW SL GTW OPC GTW Other GM Library SL-Equip OPC Client
Client Program MoM Communication 2-Tier Architecture Corba to MoM Gateway Publish for Lynx Corba Communication Corba Communication Device Server
Client Program MoM Communication 2-Tier Architecture Corba to MoM Gateway Corba Communication Corba Communication Device Server
GUI Program Corba Communication MoM Communication Application Server, Virtual Devices 3-Tier Architecture MoM Communication Corba to MoM Gateway Corba Communication Corba Communication Device Server
INTEGRATION LAYER V.Baggiolini CDEV API SL Beans API Other MW Integration Layer CORBA N.Trofimov MOM F.Chevrier F.Calderini M.V.Eynden ORB Abstraction Layer MoM Subscriber Abstr. CORBA Communication MoM Communication SERVER FRAMEWORK A.Risso S.Jensen CONFIG.SERVICES K.Kostro ORB Abstraction Layer MoM Publisher Abstr. Device Server Framework PS GTW SL GTW OPC GTW Other GM Library SL-Equip OPC Client
Outline • What is Middleware ? • Project Overview • Technical description • Functionality • Technology • Architecture and Client, Server & Config. APIs • Milestones Alessandro RISSO The PS/SL Middleware Project
Client & Server APIfor 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 Alessandro RISSO The PS/SL Middleware Project
Java Client API Classes (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); Alessandro RISSO The PS/SL Middleware Project
Set/Get Methods(DRAFT) CLIENT API • 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); Alessandro RISSO The PS/SL Middleware Project
MonitorOn/Off Methods(DRAFT) CLIENT API • 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); Alessandro RISSO The PS/SL Middleware Project
Type-specific, overloaded methods (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 Alessandro RISSO The PS/SL Middleware Project
Active & Passive Devices SERVER SIDE • 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 Alessandro RISSO The PS/SL Middleware Project
GET SET MonitorON-OFF LISTENERS Device Server Subscription Manager Server Framework Subscriptions Polling Engine Forwarding Engine Get Set Poll Any Polling Mechanism MonitorOn Active Device Subscriber Active Device Listener Adapter
IOPoint Definition • Device Class POWER • Device Instance pow.xyz-123 • Property ACQ • Cycle Selector /SEQUENCE/CYCLE/…/… Alessandro RISSO The PS/SL Middleware Project
C++ Server 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 Alessandro RISSO The PS/SL Middleware Project
Get/Set Interfaces(DRAFT) SERVER API • 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 Alessandro RISSO The PS/SL Middleware Project
Polling Engine & Interfaces(Passive Device Only - DRAFT) SERVER API • 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 Alessandro RISSO The PS/SL Middleware Project
Server Framework Poll Method(Passive Device Only - DRAFT) SERVER API • 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 Alessandro RISSO The PS/SL Middleware Project
MonitorOn / Off Interfaces & Push Method(Active Devices Only - DRAFT) SERVER API • 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) Alessandro RISSO The PS/SL Middleware Project
API 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 Alessandro RISSO The PS/SL Middleware Project
Outline • What is Middleware ? • Project Overview • Technical description • Functionality • Technology • Architecture and APIs • Milestones Alessandro RISSO The PS/SL Middleware Project
Important 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 Alessandro RISSO The PS/SL Middleware Project
Documentation • 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 Alessandro RISSO The PS/SL Middleware Project