Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Distributed Computing
& Object Oriented
Middleware: Part 1
Presented By
Shawn Mulkey
May 2, 2006
Shawn Mulkey - EECS 816
1
Agenda
Introduction
Supporting Technologies
Remote Procedure Calls
CORBA
J2EE & RMI
Conclusion
May 2, 2006
Shawn Mulkey - EECS 816
2
Demonstration Interlude 1
May 2, 2006
Shawn Mulkey - EECS 816
3
Agenda
Introduction
Definitions
Usage
CORBA,
J2EE/RMI, .Net
Supporting Technologies
Remote Procedure Calls
CORBA
J2EE & RMI
Conclusion
May 2, 2006
Shawn Mulkey - EECS 816
4
Definitions
Distributed Computing :
A set of programs executing on
one or more computers which
coordinate actions by exchanging
messages.
Concurrent Execution
Independent Failure
May 2, 2006
Shawn Mulkey - EECS 816
5
Definitions
Middleware :
Software components which promote
extensibility and maintainability by
employing abstraction between
standardized interfaces.
Behavior Semantics
Data Representation
May 2, 2006
Shawn Mulkey - EECS 816
6
Middleware Diagrams
Local System Middleware
Distributed System Middleware
Server
Application
Process
Middleware
Middleware
Network Comm
System Resources
Operating System
Network Comm
Middleware
Application
Hardware Resources
Client
May 2, 2006
Shawn Mulkey - EECS 816
7
Definitions
Remote Procedure Call:
A protocol used by a program to
request a service from another program
without having to understand network
or inter-process details.
Client/Server based
Local procedure call semantics
May 2, 2006
Shawn Mulkey - EECS 816
8
Distributed Computing Usage
Distributed file systems
Mobile systems
Remote database access
Web based applications
Real-Time content distribution
May 2, 2006
Shawn Mulkey - EECS 816
9
Distributed Computing Middleware
Object oriented middleware
Extends
RPC paradigm
Uses OO design principles
Event based middleware
Publish-Subscribe
systems
Message oriented middleware
General
May 2, 2006
queuing model
Shawn Mulkey - EECS 816
10
Distributed OO Middleware
Platforms
Common Object Request Broker Architecture
(CORBA)
Canonical
standard
Extremely robust architecture
Variable vendor implementation
Java RMI/J2EE
RMI
is object based RPC
J2EE is a distributed object computing framework
May 2, 2006
Shawn Mulkey - EECS 816
11
Distributed OO Middleware
Platforms
Microsoft DCOM/.Net
Proprietary
distributed object technology
Strong tool support
.Net intends complete integration
Web Services
Based
on open interoperable standards
Strong industry and academic support
Extensibility based on standardized semantics
May 2, 2006
Shawn Mulkey - EECS 816
12
Agenda
Introduction
Supporting Technologies
Application
Stack
Transport Protocols
Remote Procedure Calls
CORBA
J2EE & RMI
Conclusion
May 2, 2006
Shawn Mulkey - EECS 816
13
Application Protocol Stack
Creates layered architecture
Between layers
Standardized
interfaces
Standardized protocol
Message encapsulation
Minimizes dependencies
May 2, 2006
Shawn Mulkey - EECS 816
14
Application Protocol Stack
Message Exit
Message Enter
Application
Session
Transport
Network
Data Link
Physical
Sender
May 2, 2006
Router 1
Router 2
Shawn Mulkey - EECS 816
Recipient
15
Network Transport Protocols
Socket based
Communication protocols
Packet sequencing
Error recovery
TCP or UDP most common
Connection
oriented vs. connectionless
Addressing and routing
Typically
May 2, 2006
IP based
Shawn Mulkey - EECS 816
16
Agenda
Introduction
Supporting Technologies
Remote Procedure Calls
RPC Introduction
Architecture
Protocol
Error Handling
Marshalling
Asynchronous RPC
CORBA
J2EE & RMI
Conclusion
May 2, 2006
Shawn Mulkey - EECS 816
17
RPC Introduction
Application partitioned into ‘service’ and
‘client’ processes
Either
may be anonymous
Service may be implemented as federation of
processes
Difference between RPC and general
client/server model
?
RPC Follows semantics of local
procedure call (LPC)
May 2, 2006
Shawn Mulkey - EECS 816
18
RPC Introduction
Requires naming and binding
Service
lookup
E.g. DNS, NIS, NFS
RPC service may or may not persist
information
Data
replication
Caching
May 2, 2006
Shawn Mulkey - EECS 816
19
RPC Architecture
Service provider advertises interface or
implements standardized interface
Interface
often defined in standardized language (IDL)
Service may (or may not) also employ LPC semantics
Development framework provides connection
and processing logic for services
Framework
may also provide naming directory for
service binding
May 2, 2006
Shawn Mulkey - EECS 816
20
RPC Architecture
Client executes ‘stub’ code to invoke
remote service
Stub
hides connection and processing details
Similar to macro expansion
Stub generator may be explicit or implicit
Service
provider may also execute against
stub programs
May 2, 2006
Shawn Mulkey - EECS 816
21
RPC Architecture Model
Service Process
Client Process
Service Program
Client Program
Stub Procedure
Stub Procedure
Request
Comm Manager
Dispatcher
Comm Manager
Response
May 2, 2006
Shawn Mulkey - EECS 816
22
RPC Protocol
Request – Acknowledge / Response –
Acknowledge
Request
Client
May 2, 2006
must be processed exactly once
Server
Client
Shawn Mulkey - EECS 816
Server
23
Demonstration Interlude 2
May 2, 2006
Shawn Mulkey - EECS 816
24
RPC Error Handling
Unique error types
Binding
error
Server unavailable
Unknown failure origin
Transparent
backup server use
Unknown server state on failure
Transactional
May 2, 2006
semantics may be required
Shawn Mulkey - EECS 816
25
Data Marshalling
Canonical data representation
eXternal
Data Representation (XDR)
eXtensible Markup Language (XML)
Efficiency of processing vs. interoperability
Pointers complicate argument passing
Design tip: Use external types in application
May 2, 2006
Shawn Mulkey - EECS 816
26
Asynchronous RPC Features
Synchronous semantics difficult to
maintain
Lack
of global clock
Explicit asynchronous features useful
Request
only call
Callbacks
Event notification
May 2, 2006
Shawn Mulkey - EECS 816
27
Agenda
Introduction
Supporting Technologies
Remote Procedure Calls
CORBA
History & Introduction
Components & Architecture
Interface Definition Language
Services
J2EE & RMI
Conclusion
May 2, 2006
Shawn Mulkey - EECS 816
28
CORBA Introduction
Acronym:
Common Object Request Broker Architecture
?
Development system addressing common RPC
issues in an OO framework
Overtaken by newer technologies, but still
standard reference model
May 2, 2006
Shawn Mulkey - EECS 816
29
CORBA History
Advanced Network Systems Architecture
(ANSA) early attempt at distributed system
generalization
Encouraged distributed objects design
Applied as set of guidelines to design
approach
Object Management Group (OMG) formed by
vendors to promote interoperability between
object systems
System developed became CORBA
Concrete tools over abstract ANSA specifications
May 2, 2006
Shawn Mulkey - EECS 816
30
CORBA Features
Provides common distributed object architecture
Defines common syntax for data and interface definition
Primarily method of inter-system interoperability
Strong legacy system support
Implementations and support in common languages
C++
Java
Many others
May 2, 2006
Shawn Mulkey - EECS 816
31
CORBA Components
Entities
Object
references
Abstract interface
Basic types
Constructed Types
Requests
Operations
on objects called by client on server
May be one way
May 2, 2006
Shawn Mulkey - EECS 816
32
CORBA Components
Object Request Broker (ORB)
Matches
client request with servicing object
Client stub
Generated
calling code implementing connection and
marshaling logic
Server skeleton
Generated
May 2, 2006
code extended by server object
Shawn Mulkey - EECS 816
33
Basic CORBA Architecture
Have a nice day!
Client Program
Server Object
Calling Stub
Interface Skeleton
Object Request Broker
May 2, 2006
Shawn Mulkey - EECS 816
34
Interface Definition Language
Interface defined for client calls and server
implementation
CORBA IDL not compiled
Mapped
to individual language constructs
Not every language directly supports every IDL
feature
Concrete implementations (stubs & skeletons)
generated automatically
May 2, 2006
Shawn Mulkey - EECS 816
35
Simple Interface Example
interface salestax {
float calculate_tax ( in float taxable_amount );
}
Note:
C
like syntax
Typed identifiers
Procedural declarations
May 2, 2006
Shawn Mulkey - EECS 816
36
IDL Syntax
Typed references and values
Interfaces
Constructed
(structs, arrays, etc.)
Value
Types
Built-in (int, float, etc.)
Scoped access
‘Module’
identifier
Namespace semantics
May 2, 2006
Shawn Mulkey - EECS 816
37
IDL Syntax
Parameter accessibility
in
out
inout
Exceptions declared with ‘raises’ keyword
Not all semantics available through IDL
Examples:
security, lifecycle
Often implemented with standardized object behavior
May 2, 2006
Shawn Mulkey - EECS 816
38
Declaration Example
module CORBA {
interface Object {
InterfaceDef get_interface ();
boolean is_nil();
Object duplicate ();
void release ();
boolean is_a (in string logical_type_id);
boolean is_equivalent ( in Object other_object );
unsigned long hash( in unsigned long maximum);
void create_request (
in Context
ctx,
in Identifier
operation,
in NVList
arg_list,
inout NamedValue
result,
out Request
request,
in Flags
req_flag
);
…………
};
};
May 2, 2006
Shawn Mulkey - EECS 816
39
Standard CORBA Services
ORB
Encapsulates all server behavior
Load balancing
Server initialization and termination
Performance customization
Extended features possible
Naming
Hierarchical object reference map
Used by ORBs to locate objects or
Names
May 2, 2006
other ORBs
are symbol links to objects
Shawn Mulkey - EECS 816
40
Optional CORBA Services
Event Notification Service (ENS)
Publish/subscribe
Register with topic – receive handle
Asynchronous event delivery
Long
pattern
lived subscription requests
Life-Cycle Service
Factory
for object creation
Manages object copy, move & destruction
Manages backups, repository organization etc.
May 2, 2006
Shawn Mulkey - EECS 816
41
Optional CORBA Services
Transaction Service
Concurrency
control
Synchronizes object actions
Commit and abort semantics
Security Service
Authentication
Access
control
Non-repudiation
May 2, 2006
Shawn Mulkey - EECS 816
42
CORBA Implementations
TAO / ACE
Free
and product versions
Dr. Douglas Schmidt
Orbix
Steven
Vinoski
VisiBroker
Borland
Feature
rich
Wide range of OS and language interopration
May 2, 2006
Shawn Mulkey - EECS 816
43
Agenda
Introduction
Supporting Technologies
Remote Procedure Calls
CORBA
J2EE & RMI
Introduction
Java RMI
J2EE
Conclusion
May 2, 2006
Shawn Mulkey - EECS 816
44
RMI Introduction
Remote Method Invocation
An explicit remote procedure call system
which leverages the Java development
framework to facilitate all aspects of RPC
such as binding, transport and marshalling.
May 2, 2006
Shawn Mulkey - EECS 816
45
RMI Implementation
Similar to CORBA semantics
Requires
name lookup service
Requests serviced by remote components
Parameter data types must be marshaled
Exception system defined in specification
Each component implemented with Java
technology
May 2, 2006
Shawn Mulkey - EECS 816
46
RMI Implementation tools
rmiregistry – Server naming service
rmic – stub compiler
java.io.Serialization – Marshalling system
java.rmi.Remote – Base remoting interface
java.rmi.RemoteException – Base Remoting
exception
May 2, 2006
Shawn Mulkey - EECS 816
47
RMI Interfaces
Server and client components implement java.io.Remote
interface
May be extended with other interfaces
Standard java interface and member declaration syntax as IDL
Example
public interface BankAccount extends java.rmi.Remote {
public void deposit(float amount) throws java.rmi.RemoteException;
public void withdraw(float amount)
throws OverdrawnException, java.rmi.RemoteException;
public float getBalance()
throws java.rmi.RemoteException;
}
May 2, 2006
Shawn Mulkey - EECS 816
48
RMI Protocol
1)
Server process begins
2)
Server process registers one or more objects
with the naming service
3)
Client makes remote call against stub code
4)
Stub code initiates TCP or HTTP stream
connection with server process
May 2, 2006
Shawn Mulkey - EECS 816
49
RMI Protocol
5)
Server accepts connection and
processes RPC
6)
Server sends returns value or exception
7)
Client stub marshals returned data to the
calling procedure
May 2, 2006
Shawn Mulkey - EECS 816
50
RMI Code Sample
RMI Interface
public interface ReceiveMessageInterface extends java.rmi.Remote
{
String transformMessage(String x) throws RemoteException;
}
May 2, 2006
Shawn Mulkey - EECS 816
51
public class RmiServer extends java.rmi.server.UnicastRemoteObject
implements ReceiveMessageInterface
{
public void RmiServer()
{
try{
// create the registry and bind the name and object.
java.rmi.Registry registry = LocateRegistry.createRegistry( 9999 );
registry.rebind("rmiServer", this);
}
catch(RemoteException e)
{
...
}
}
public String receiveMessage(String x) throws RemoteException
{
return x.toUpper();
}
}
May 2, 2006
Shawn Mulkey - EECS 816
52
public class RmiClient
{
static public void main(String args[]) {
try{
// get the “registry”
java.rmi.Registry registry = LocateRegistry.getRegistry(“somehost”, 9999);
// look up the remote object
ReceiveMessageInterface rmiServer =
(ReceiveMessageInterface)(registry.lookup("rmiServer"));
// call the remote method
String result = rmiServer.transformMessage(text);
System.out.println(result);
}
catch(RemoteException e){
…
}
catch(NotBoundException e){
…
}
}
}
May 2, 2006
Shawn Mulkey - EECS 816
53
RMI Summary
Simple and efficient RPC system
Remote call semantics completely transparent to
client and server
Implemented entirely with Java technology
Limited service support
Security,
May 2, 2006
life-cycle etc.
Shawn Mulkey - EECS 816
54
J2EE Introduction
Java 2 Platform Enterprise Edition
“A set of coordinated specifications and
practices that together enable solutions for
developing, deploying, and managing multitier server-centric applications.”
-Sun Microsystems, J2EE FAQ 2006
May 2, 2006
Shawn Mulkey - EECS 816
55
J2EE Muti-Tier Design
Client Tier
Web Tier
JSP
Servlets
Business Tier
Application process
HTML Pages
Domain Logic
Enterprise Java Beans
Enterprise Information System (EIS) Tier
Database server
May 2, 2006
Shawn Mulkey - EECS 816
56
J2EE Containers
Framework handling low-level details
Connection
management
Transaction and state management
Promotes reusable application components
Usually
called ‘beans’
Container presents API and runtime protocol for
application beans
May 2, 2006
Shawn Mulkey - EECS 816
57
J2EE Container Types
J2EE Server
Enterprise JavaBeans (EJB) Container
Manages EJB components
Web Container
Running process
Container for other servers
HTTP server context
Servlet & JSP Management
Application/Applet Container
Manages client environment
Facilitates connections to the server components
May 2, 2006
Shawn Mulkey - EECS 816
58
J2EE Container Hierarchy
© Sun Microsystems, 2006
May 2, 2006
Shawn Mulkey - EECS 816
59
J2EE Services
Java Naming and Directory Interface (JNDI)
Enterprise ServiceBeans API
Java Servlet API
JavaServer Pages (JSP) API
Java Messaging Service (JMS)
May 2, 2006
Shawn Mulkey - EECS 816
60
J2EE Services
Java Transaction API
JDBC API
Java API for XML Processing & RPC
Java Authentication and Authorization
Service
May 2, 2006
Shawn Mulkey - EECS 816
61
Agenda
Introduction
Supporting Technologies
Remote Procedure Calls
CORBA
J2EE & RMI
Conclusion
Topic Summary
Questions
Looking Ahead
May 2, 2006
Shawn Mulkey - EECS 816
62
Topic Summary
Distributed applications consist of multiple
processes communicating via message passing
Remote Procedure Calls permit clients to
request services from remote servers
Uses
same semantics as local procedures
Most RPC mechanisms have similar
characteristics
Name
binding
Data marshalling
Exception handling
May 2, 2006
Shawn Mulkey - EECS 816
63
Topic Summary
CORBA was first widely excepted OO RPC
framework
Established
common architecture used by future
distributed frameworks
Created
Interface Definition Language (IDL) to
express service behavior and data descriptions
Stubs
and skeletons generators on various platforms
to accommodate interoperability
May 2, 2006
Shawn Mulkey - EECS 816
64
Topic Summary
Sun’s Java RMI (Remote Method Invocation) is
Java specific PRC method
Uses
Java constructs for RPC management (e.g.
naming, marshaling, etc.)
Simple
and elegant architecture
Generates
Limited
May 2, 2006
Java stubs and skeletons
built-in services
Shawn Mulkey - EECS 816
65
Topic Summary
Java 2 Enterprise Edition (J2EE)
Framework
Provides
for distributed application development
containers to handle low-level details
Applications
consist of relatively simple ‘beans’ which
perform application specific logic
Host
of services available to facilitate distributed
behavior
May 2, 2006
Shawn Mulkey - EECS 816
66
Questions
?
?
Who, What, Where, Why, How?
?
May 2, 2006
?
Shawn Mulkey - EECS 816
?
67
Looking Ahead
Microsoft .Net Technologies
SOAP Web Services
Grid Computing
May 2, 2006
Shawn Mulkey - EECS 816
68
Distributed Computing & Object
Oriented Middleware: Part 1
Thanks !
Shawn Mulkey
May 2, 2006
Shawn Mulkey - EECS 816
69