Introduction To Middleware I
Introduction To Middleware I
• What is Middleware?
– Layer between OS and distributed applications
– Hides complexity and heterogeneity of distributed system
– Bridges gap between low-level OS communications and programming
language abstractions
– Provides common programming abstraction and infrastructure for
distributed applications
– Overview at: http://www.middleware.org
DistributedApplications
Distributed Applications
Distributed Applications
• Middleware dimensions:
– Request/Reply vs. Asynchronous Messaging
– Language-specific vs. Language-independent
– Proprietary vs. Standards-based
– Small-scale vs. Large-scale
– Tightly-coupled vs. Loosely-coupled components
2
Middleware
Outline
• Part I: Remote Procedure Call (RPC)
– Historic interest
• Part II: Object-Oriented Middleware (OOM)
– Java RMI
– CORBA
– Reflective Middleware
a rch
• Part III: ese
Message-Oriented Middleware
r (MOM)
– Java Message Service
– IBM MQSeries
– Web Services
• Part IV: Event-Based Middleware
– Cambridge Event Architecture
– Hermes a rch
s e
r e
3
Middleware
Part I: Remote Procedure Call (RPC)
• Masks remote function calls as being local
• Client/server model
• Request/reply paradigm usually implemented with
message passing in RPC service
• Marshalling of function parameters and return value
8) Unmarshal 6) Marshal
9) Acknowledge 7) Set timer
4
Middleware
Properties of RPC
Language-level pattern of function call
• easy to understand for programmer
6
Middleware
Disadvantages of RPC
Synchronous request/reply interaction
• tight coupling between client and server
• client may block for a long time if server loaded
leads to multi-threaded programming at client
fork(…)
• slow/failed clients may delay servers when replying
multi-threading essential at servers
remote call
Distribution Transparency
join(…)
• Not possible to mask all problems
7
Middleware
Part II: Object-Oriented Middleware (OOM)
• Objects can be local or remote
• Object references can be local or remote
• Remote objects have visible remote interfaces
• Masks remote objects as being local using proxy objects
• Remote method invocation
object object
object A request
request skeleton
broker broker object B
/ /
object object
manager manager
proxy
object B object B
8
Middleware
Properties of OOM
Support for object-oriented programming model
– objects, methods, interfaces, encapsulation, …
– exceptions (were also in some RPC systems e.g. Mayflower)
Location Transparency
– system (ORB) maps object references to locations
9
Middleware
Java Remote Method Invocation (RMI)
• Covered in 1B Advanced Java programming
• Distributed objects in Java
10
Middleware
CORBA
• Common Object Request Broker Architecture
– Open standard by the OMG (Version 3.0)
– Language- and platform independent
• Object Request Broker (ORB)
– General Inter-ORB Protocol (GIOP) for communication
– Interoperable Object References (IOR) contain object location
– CORBA Interface Definition Language (IDL)
• Stubs (proxies) and skeletons created by IDL compiler
– Dynamic remote method invocation
• Interface Repository
– Querying existing remote interfaces
• Implementation Repository
– Activating remote objects on demand
11
Middleware
CORBA IDL
• Definition of language-independent remote interfaces
– Language mappings to C++, Java, Smalltalk, …
– Translation by IDL compiler
• Type system
– basic types: long (32 bit), typedef sequence<string> Files;
long long (64 bit), short, interface PrintService : Server {
void print(in Files printJob);
float, char, boolean,
};
octet, any, …
– constructed types: struct, union, sequence, array, enum
– objects (common super type Object)
• Parameter passing
– in, out, inout
– basic & constructed types passed by value
– objects passed by reference
12
Middleware
CORBA Services (selection)
• Naming Service
– Names remote object references
• Trading Service
– Attributes (properties) remote object references
• Persistent Object Service
– Implementation of persistent CORBA objects
• Transaction Service
– Making object invocation part of transactions
• Event Service and Notification Service
– In response to applications‘ need for asynchronous communication
– built above synchronous communication with push or pull options
– not an integrated programming model with general IDL messages
13
Middleware
Disadvantages of OOM
Synchronous request/reply interaction only
• So CORBA oneway semantics added and -
• Asynchronous Method Invocation (AMI)
• But implementations may not be loosely coupled
14
Middleware
OOM experience
Keynote address at Middleware 2009
Steve Vinoski
From Middleware Implementor to Middleware User
(There and back again)
16
Middleware
Part III: Message-Oriented Middleware (MOM)
• Communication using messages
• Messages stored in message queues
• message servers decouple client and server
• Various assumptions about message content
Message Servers
17
Middleware
Properties of MOM
Asynchronous interaction
– Client and server are only loosely coupled
– Messages are queued
– Good for application integration
Support for reliable delivery service
– Keep queues in persistent storage
Processing of messages by intermediate message server(s)
– May do filtering, transforming, logging, …
– Networks of message servers
Natural for database integration
18
Middleware
IBM MQSeries
• One-to-one reliable message passing using queues
– Persistent and non-persistent messages
– Message priorities, message notification
• Queue Managers
– Responsible for queues
– Transfer messages from input to output queues
– Keep routing tables
• Message Channels
– Reliable connections between queue managers
• Messaging API: MQopen Open a queue
MQclose Close a queue
MQput Put message into opened queue
MQget Get message from local queue
19
Middleware
Java Message Service (JMS)
• API specification to access MOM implementations
• Two modes of operation *specified*:
– Point-to-point
• one-to-one communication using queues
– Publish/Subscribe
• cf. Event-Based Middleware
21
Middleware
Web Services
• Use well-known web standards for distributed computing
Communication
• Message content expressed in XML
• Simple Object Access Protocol (SOAP)
– Lightweight protocol for sync/async communication
Service Description
• Web Services Description Language (WSDL)
– Interface description for web services
Service Discovery
• Universal Description Discovery and Integration (UDDI)
– Directory with web service description in WSDL
22
Middleware
Properties of Web Services
Language-independent and open standard
23
Middleware
Disadvantages of Web Services
Low-level abstraction
• leaves a lot to be implemented
No location transparency
24
Middleware
What we lack, so far
General interaction patterns
• we have one-to-one and request-reply
• one-to-many? many to many?
• notification?
• dynamic joining and leaving?
Location transparency
• anonymity of communicating entities
25
Middleware
Part IV: Event-Based Middleware a.k.a. Publish/Subscribe
subscribe
publish
Publisher notify Subscriber
Event Service
(event-broker subscribe
Publisher publish notify Subscriber
network)
subscribe
Publisher publish notify Subscriber
26
Middleware
Topic-Based and Content-Based Pub/Sub
• Event Service matches events against subscriptions
• What do subscriptions look like?
Topic-Based Publish/Subscribe
– Publishers publish events belonging to a topic or subject
– Subscribers subscribe to a topic
subscribe(PrintJobFinishedTopic, …)
27
Middleware
Properties of Publish/Subscribe
Asynchronous communication
• Publishers and subscribers are loosely coupled
28
Middleware
Composite Event Detection (CED)
• Content-based pub/sub may not be expressive enough
– Potentially thousands of event types (primitive events)
– Subscribers interest: event patterns (define high-level events, ref DS-2)
• Event Patterns
PrinterOutOfPaperEvent or PrinterOutOfTonerEvent
• Composite Event Detectors (CED)
– Subscribe to primitive events and publish composite events
Publisher
CED Subscriber
Publisher
Publisher CED
CED Subscriber
Publisher
29
Middleware
Summary
• Middleware is an important abstraction for building
distributed systems
30
Middleware