Jasper van Baten AmsterCHEM Michel Pons CO-LaN Bill Barrett USEPA Michael Hlavinka BR&E Mark Stijnman Shell Global Solutions.

Similar documents
1.264 Lecture 16. Legacy Middleware

Communication. Distributed Systems Santa Clara University 2016

Today: Distributed Objects. Distributed Objects

Good afternoon, my name is Sergej Blagov and two years ago I undertook the leadership of Thermodynamics Special Interest Group from my precursor

Chapter 15: Distributed Communication. Sockets Remote Procedure Calls (RPCs) Remote Method Invocation (RMI) CORBA Object Registration

Distributed Systems Middleware

Distributed Technologies - overview & GIPSY Communication Procedure

RPC flow. 4.3 Remote procedure calls IDL. RPC components. Procedure. Program. sum (j,k) int j,k; {return j+k;} i = sum (3,7); Local procedure call

CAPE-OPEN Delivering the power of component software and open standard interfaces in Computer-Aided Process Engineering

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Distributed and Agent Systems

MTAT Enterprise System Integration. Lecture 2: Middleware & Web Services

RPC and RMI. 2501ICT Nathan

Verteilte Systeme (Distributed Systems)

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008

Distributed Objects. Object-Oriented Application Development

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI

Challenges in component based programming. Lena Buffoni

CO-LaN Annual meeting Sept 2014, Frankfurt, Germany

Today: Distributed Middleware. Middleware

Introduction to Mobile Development

Outline. EEC-681/781 Distributed Computing Systems. The OSI Network Architecture. Inter-Process Communications (IPC) Lecture 4

(D)COM Microsoft s response to CORBA. Alessandro RISSO - PS/CO

CAPE-OPEN Delivering the power of component software and open standard interfaces in Computer-Aided Process Engineering

Chapter 16. Layering a computing infrastructure

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan.

CORBA Navigator, A Versatile CORBA Client and its application to Network Management

DS 2009: middleware. David Evans


Architecture of Distributed Systems Component-based Systems

Distributed Systems Principles and Paradigms

Chapter 4 Communication

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

Module 1 - Distributed System Architectures & Models

Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive.

Distributed Objects. Chapter Distributing Objects Overview

RMI & RPC. CS 475, Spring 2019 Concurrent & Distributed Systems

G Programming Languages Spring 2010 Lecture 6. Robert Grimm, New York University

OPC UA C++ Toolkits Release Notes November 2018

Contents. Java RMI. Java RMI. Java RMI system elements. Example application processes/machines Client machine Process/Application A

Implementing Remote Procedure Calls*

Distributed Computing

CSci Introduction to Distributed Systems. Communication: RPC

Consuming CAPE-OPEN Thermodynamics from Multi-threaded applications Dr. Jasper van Baten, AmsterCHEM, Las Rozas, Spain. Summary.

416 Distributed Systems. RPC Day 2 Jan 12, 2018

Advanced Topics in Operating Systems

Written by: Dave Matuszek

NAGWare f95 Recent and Future Developments

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java

Distributed Programming with RMI. Overview CORBA DCOM. Prepared By: Shiba R. Tamrakar

UNIT 4 CORBA 4/2/2013 Middleware 59

CORBA COMMON OBJECT REQUEST BROKER ARCHITECTURE OVERVIEW OF CORBA, OMG'S OBJECT TECHNOLOGY FOR DISTRIBUTED APPLICATIONS CORBA

Overview. Distributed Systems. Distributed Software Architecture Using Middleware. Components of a system are not always held on the same host

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

C++\CLI. Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017

Piqi-RPC. Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP. Friday, March 25, 2011

RMI. Remote Method Invocation. 16-Dec-16

Petro-SIM Simulator and CAPE-OPEN: Experiences and Successes

What s New In DFC. Quick Review. Agenda. Quick Review Release 5.3 Q&A Post 5.3 plans. David Folk Product Manager

Distributed Middleware. Distributed Objects

JAC444 - Lecture 11. Remote Method Invocation Segment 2 - Develop RMI Application. Jordan Anastasiade Java Programming Language Course

SAI/ST course Distributed Systems

September 10,

CORBA and COM TIP. Two practical techniques for object composition. X LIU, School of Computing, Napier University

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING ACADEMIC YEAR (ODD SEMESTER) QUESTION BANK

416 Distributed Systems. RPC Day 2 Jan 11, 2017

Architectures of Distributed Systems 2011/2012

3. Remote Procedure Call

Performance Evaluation of Java And C++ Distributed Applications In A CORBA Environment

Interprocess Communication Tanenbaum, van Steen: Ch2 (Ch3) CoDoKi: Ch2, Ch3, Ch5

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title

CHAPTER - 4 REMOTE COMMUNICATION

5 Distributed Objects: The Java Approach

Distributed Systems. Distributed Object Systems 2 Java RMI. Java RMI. Example. Applet continued. Applet. slides2.pdf Sep 9,

Advanced Distributed Systems

CORBA (Common Object Request Broker Architecture)

Skykomish A MOF-Based CIM-Development Environment. Michael T. Peterson Mazama Sofware LLC

Distributed Systems Principles and Paradigms

E&CE 454/750-5: Spring 2010 Programming Assignment 1 Due: 11:59 PM Friday 11 th June 2010

System types. Distributed systems

Protocol Buffers, grpc

CS 5523 Operating Systems: Remote Objects and RMI

Configuration. Monday, November 30, :28 AM. Configuration

Intel Threading Building Blocks (Intel TBB) 2.1. In-Depth

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar

Scripted Components Dr. James A. Bednar

Jaguar: Enabling Efficient Communication and I/O in Java

Distributed Systems 8. Remote Procedure Calls

Remote Invocation Vladimir Vlassov and Johan Montelius

ibaan OpenWorld Adapter Suite 2.3 Installation and Configuration Guide for Connector for CORBA

CSC C69: OPERATING SYSTEMS

Type Checking and Type Equality

Communication. Overview

Overview. Communication types and role of Middleware Remote Procedure Call (RPC) Message Oriented Communication Multicasting 2/36

I would like tothank my advisor, Petr Tνuma, for his expert advice he gave me with extraordinary patience and for providing me with study materials an

Remote Access Networked Models in a Collaborative Power Industry Application

IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft.NET Framework Agent Fix Pack 13.

MOM MESSAGE ORIENTED MIDDLEWARE OVERVIEW OF MESSAGE ORIENTED MIDDLEWARE TECHNOLOGIES AND CONCEPTS. MOM Message Oriented Middleware

C++ Programming Lecture 4 Software Engineering Group

DISTRIBUTED OBJECTS AND REMOTE INVOCATION

Do Less By Default BRUCE RICHARDSON - INTEL THOMAS MONJALON - MELLANOX

Transcription:

Jasper van Baten AmsterCHEM Michel Pons CO-LaN Bill Barrett USEPA Michael Hlavinka BR&E Mark Stijnman Shell Global Solutions Slide 1

Slide 2 Introduction Targets for new middleware Evaluation of targets in Phase I Enumerate Phase I deliverables Conclusions

Slide 3 PME Built-in models External PMC 1 middleware External PMC 2

Slide 4 PME PMC Middleware Boolean ICapeUnit::Validate(String message)

Slide 5 COM: Common Object Model Microsoft, Windows (built-in) CORBA Common Object Request Broker Architecture Platform independent Requires extern ORB software COM much more used nearly no CORBA implementations

Slide 6 Threading model? Server type? wrong design Poor performance Yes Do I own data? No VARIANT don t clean up clean up COM Memory leaks Application crash Weak typing Inefficient Error prone

Slide 7 Windows bound, cannot be ported =? COM was introduced in 1993 COM fading out?

Slide 8 Platform independent, independent of specific vendor (Microsoft) Easier on programmers Strong data typing More efficient Less error prone code Open source Fully COM compatible

Slide 9 CAPE-OPEN Binary Interop Architecture Phase 1: native, C++, in-process, Windows, thermo 1.1 Phase 2: Phase 3: COM interop (proof of concept) entire interface set, code generation, IDL based (full functionality, no marshalling) other platforms, inter-platform interop

Slide 10 Openness requires independence of particular OS vendor Applications exist on Mac + Linux Market seems to go to web-based C binary interface (not C++)

Slide 11

Slide 12 #include <COBIA.h> class PropertyPackage : public CapeOpenObject<PropertyPackage>, public CapeUtilitiesAdapter<PropertyPackage>, public CapeIdentificationAdapter<PropertyPackage>, public CapeThermoCompoundsAdapter<PropertyPackage>, public CapeThermoPhasesAdapter<PropertyPackage>, public CapeThermoPropertyRoutineAdapter<PropertyPackage>, public CapeThermoEquilibriumRoutineAdapter<PropertyPackage>, public CapeThermoUniversalConstantAdapter<PropertyPackage>, public CapeThermoMaterialContextAdapter<PropertyPackage> {

Slide 13 //ICapeIdentification std::wstring packagename; //On Windows, wstring void getcomponentname(/*out,retval*/capestring name) { name=packagename; } void putcomponentname(/*in*/const CapeString name) { if (name.empty()) { throw cape_open_error(cobiaerr_invalidargument); } packagename=name; }

Slide 14 //ICapeIdentification std::wstring packagename; //On Windows, wstring void getcomponentname(/*out,retval*/capestring name) { name=packagename; } Strong argument typing void putcomponentname(/*in*/const CapeString name) { if (name.empty()) { throw cape_open_error(cobiaerr_invalidargument); } packagename=name; }

Slide 15 //ICapeIdentification std::wstring packagename; //On Windows, wstring void getcomponentname(/*out,retval*/capestring name) { name=packagename; } void putcomponentname(/*in*/const CapeString name) { if (name.empty()) { throw cape_open_error(cobiaerr_invalidargument); } packagename=name; } Exception throwing

Slide 16 //ICapeIdentification Generated stub code void getcomponentname(/*out,retval*/capestring name) { } void putcomponentname(/*in*/const CapeString name) { }

Slide 17 Data types are passed as interfaces Data is strongly typed, e.g. CapeArrayDouble void get(capedouble *&data,capesize &size); CapeResult setsize(capesize size,capedouble *&data);

Slide 18 Wrapped up on C++ interfaces: void GetSinglePhaseProp(, /*out,retval*/capearraydouble results) { //we can set a scalar directly double T; results.set(t); //we can set a vector like this size_t ncompounds; results.setsize(ncompounds); for (size_t i=0;i<ncompounds;i++) { results[i]=10; } //or directly access the data memcpy(results.data(),x,sizeof(double)*10);

Slide 19 CapeArrayDoubleImpl Derives from std::vector<double> CapeArrayDoubleAdapter Wraps around existing std::vector<double> ConstCapeArrayDouble For outbound data, wraps around fixed size double* CobiaArrayDouble Middle-ware implemented version

Slide 20 Declare: or CapeArrayDoubleImpl propvalue; std::vector<double> data; CapeArrayDoubleAdapter propvalue(data); Use: proppack.getsinglephaseproperty(...,propvalue);... proppack.getsinglephaseproperty(...,propvalue);

Slide 21 No explicit allocations or de-allocations All responsibility in C++ wrapper classes No type checking C++ exception handling on wrapper level callee can throw exception caller can catch exception

Slide 22 COM PMCs are usable from COBIA PMEs COBIA PMCs are usable from COM PMEs Efficiency is close to COM-COM interop

COBIA COM Slide 23

Slide 24 Platform independent, independent of specific vendor (Microsoft) Easier on programmers Strong data typing More efficient Less error prone code Open source Fully COM compatible

Slide 25 Registry Per-user + machine wide XML based C++ interfaces to registry Testing coved by Unit Testing Interacts with COM registry COBIA PMCs appear in COM registry COM PMCs appear in COBIA registry

Slide 26 Data types Several implementation flavours String encoding UTF-16 (Windows), UTF-8 Testing covered by Unit Testing Used in Test PMC Used in Test PME Additional interface binding in COMBIA

Slide 27 C++ Language binding Selected interfaces All thermo 1.1 Identification Utilities Simulation environment + diagnostics Prototyped stub code Tested in TestPMC + TestPME

Slide 28 COM/COBIA interop (COMBIA) Tested in PMC + PME Test PME Command line based Tested vs Test PMC Tested vs COM interop, various PMCs

Slide 29 PMC registration utility Compiles on variety of platforms MSVC Windows x86, x64 (*) Intel Windows x86, x64 (*) GCC/MinGW Windows x86, x64 (*) GCC/Ubuntu-linux x86, x64 (*) Interop verified

Slide 30 Test PMC Revised Ideal Thermo Library COBIA binding as PPM Tested vs TestPME Tested vs COM interop, various PMEs Deliveries verified by M&T SIG

Slide 31 COBIA Phase 1 delivered Tailored to the needs of CAPE-OPEN Easier coding, less error prone, more efficient Paves the way to Linux, Mac,. But: not integrated into OS, requires installer!

Slide 32 All code is available to CO-LaN members Trying is encouraged! Feedback is welcome! (code resides on CO-LaN code repository)