Middleware and ORB CS 314 Operating Systems Department of Computer Science Southern Illinois University Edwardsville Fall, 2018 Dr. Hiroshi Fujinoki E-mail: hfujino@siue.edu Middleware/001
motivation for middleware CS 314 Operating Systems What is “middleware”? “Middleware is a general term for any programming that serves to "glue together" or mediate between two separate programs.” The two separate programs are “user applications” and “operating systems” for most middleware The primary motivations for middleware To provide more complex and high-level services to a computer system without increasing OS kernel size This was the primary motivation for middleware in the mid 80’s. To provide more complex and high-level services to user application programs without dependent on particular OS Glue different existing software systems together without applying any modification to them Middleware/002
(application-mode process) CS 314 Operating Systems What is “middleware”? Application Program (application-mode process) API Call System Call Operating System Middleware/003
(application-mode process) CS 314 Operating Systems What is “middleware”? Without Middleware Operating System Application Processes With Middleware Operating System Application Program (application-mode process) API Call System Call API Call System Call API Call System Call Complex & Large Middleware/004
CS 314 Operating Systems What is “middleware”? User Applications Used (directly) by Whom? Execution Mode (USER or KERNEL) Purposes OS-Dependent? User Applications (and Middleware) Human Users User applications USER Mode USER Mode KERNEL Mode Provide complex services to user apps Facilitator & Government To get human-users’ jobs done Interface to HW User apps will be OS independent Resource Manager (Resource Allocater) YES NO YES Middleware/005
CS 314 Operating Systems What is “middleware”? With Middleware Application Processes Distributed System Web Database RPC (Remote Procedure Call) ORB (Object Request Broker) API Call MOM (Message-Oriented M.W.) XML System Call Web servers API Call DBMS (Oracle Database, DB2, SQL Server, MySQL, PostgreSQL) Operating System Middleware/006
CS 314 Operating Systems Middleware/003
CS 314 Operating Systems Local Procedure Call (Ordinary Function Call) main ABC void main (void) { } The callee blocks here call ABC S = ABC(X, Y, Z); int ABC(int X, int Y, char Z) { } (1) Callee and caller have same data format Large/little endian 7/8-bit ASCII codes Text-line termination (CR+LF or CR) 32-bit or 64-bit integer return(P); (2) Two parameter-passing methods available “pass-by reference/value” (3) Low-latency turnaround Middleware/007
CS 314 Operating Systems Remote Procedure Call (RPC) as a middleware CLIENT SERVER void main (void) { } int ABC(int X, int Y, char Z) { } return(P); S = ABC(X, Y, Z); int ABC(int X, int Y, char Z) { } return(P); Network Middleware/008
CS 314 Operating Systems Remote Procedure Call (RPC) as a middleware LPC RPC Data Format Parameter Passing Low-Latency Turnaround Always same Can be different (between a calling and a called function) Pass-by Reference Pass-by Value Pass-by Value ONLY (between a calling and a called function) YES NO Middleware/009
CS 314 Operating Systems Remote Procedure Call (RPC) as a middleware Data Marshaling Construct a message for transmission MW MW CLIENT Call OS (for Tx) SERVER RPC (C) CLIENT OS (C) OS (S) RPC (S) SERVER Wait (block) main RABC The callee blocks here RPC(C) blocks here RPC(S) blocks here call RABC Middleware/010
CS 314 Operating Systems Object Request Broker (ORB) as a middleware CORBA = Common Object Request Broker Architecture CORBA is a foundation where distributed objects (objects = functions) are identified, called and expected to perform specific tasks. This client has no idea where this request will be executed Concept Client Server Function A (Object A) Program Request Request Reply Reply Server Function B (Object B) Broker The broker finds the best server who can handle this request Middleware/011
CS 314 Operating Systems Object Request Broker (ORB) as a middleware area(circle, int) { } area(square, float) area(circle, float) area(square, int) Polymorphism Server C Server D Client Program Server A call “area(circle, 9.54)” Request Request Reply Reply Broker The broker finds the best server who can handle this request Server B Middleware/012
CS 314 Operating Systems Object Request Broker (ORB) as a middleware area(circle, int) { } volume(circle, float) { } Inheritance area(circle, 9.54) Server C Server D Client Program Server A call “volume(circle, 9.54)” Request Request Reply Reply Broker area(circle, float) { } The broker finds the best server who can handle this request Server B area(square, int) { } Middleware/013
CS 314 Operating Systems Object Request Broker (ORB) as a middleware area(circle, int) { } volume(circle, float) { } Inheritance area(circle, 9.54) Server C Server D Request Reply Client Program Server A call “volume(circle, 9.54)” Request Reply Broker area(circle, float) { } The broker finds the best server who can handle this request Server B area(square, int) { } Middleware/014
CS 314 Operating Systems Before CORBA was introduced Web Server Web Contents Company’s Web Site To the Internet Database Server Database Server Customer Profile Service Seat Reservation Service Middleware/015
CS 314 Operating Systems Without CORBA …. 1. Since each system is independent, different systems must be used for each different task 2. Applications in different systems can not easily communicate each other 3. Hardware resources are not efficiently utilized (results of the above two) Middleware/016
CS 314 Operating Systems Before CORBA was introduced Company’s Web Site Web Server Web Contents To the Internet Server Database Customer Profile Service Server Database Seat Reservation Service Customer (or user) Middleware/017
CS 314 Operating Systems After CORBA was introduced CORBA Broker Company’s Web Site Web Server Web Contents To the Internet ORB CORBA Broker Server Database Customer Profile Service Server Database Seat Reservation Service Middleware/018
CS 314 Operating Systems After CORBA was introduced CORBA Broker Company’s Web Site Web Server Web Contents Customer To the Internet ORB CORBA Broker Server Database Customer Profile Service Server Database Seat Reservation Service Middleware/019
CS 314 Operating Systems CORBA Connectivity through HTTP Example: Integrated Information System by American Airlines (www.aa.com) Middleware/020
CS 314 Operating Systems Client Stub A client stub is a proxy object Host A CORBA Client Process Local object call Remote object call through CORBA local object ORB Network as a middle-wear remote object ORB Host B Middleware/021
CS 314 Operating Systems Host A CORBA Client Process Skeleton ORB ORB local object Host A Local object call ORB Remote object call through CORBA client stub CORBA Client Process remote object ORB Skeleton Host B remote object ORB Network Middleware/022
CS 314 Operating Systems CORBA Time Server and Client Overview (continued) Time Client Time Server Time Client CORBA program Time Server CORBA program Current_Time(); 11:01:58 Current_Time(); CORBA CORBA Interface (IDL) ORB IIOP TCP/IP OS Internet Middleware/021
CS 314 Operating Systems Comparisons with other distributed technologies Issues Socket RPC CORBA Distributed computing Hardware Independence OS Independence Language Independence Locational Transparency Abstraction Level Overhead Middleware/023
CS 314 Operating Systems What is “CORBA” (continued) ? CORBA is not a product, but a specification for ORB (Object Request Broker) Major products for CORBA*1: Orbix OmniCORBA (one of free CORBA distributions) Sun’s Java IDL ILU (The Inter-language Unification project from XEROX) CorbaPlus for C++ CORBA specification is established and managed by OMG (OMG = Object Management Group*2) *1: A list of CORBA products available at *2: OMG Web Site: Middleware/024
CS 314 Operating Systems OMG (Object Management Group) Middleware/025