Download presentation
Presentation is loading. Please wait.
Published byShawn Malcolm Heath Modified over 9 years ago
1
COP 4991 Component Based Software Development Lecture #2 Distributed and Web Computing Onyeka Ezenwoye
2
Acknowledgement Lou Somers Alex Chaffee
3
BASIC Beginners All-purpose Symbolic Instruction Code John Kemeny and Thomas Kurtz, 1963 General-purpose language Easy to use?
4
BASIC 10 REM a great BASIC program 20 PRINT “Hello There!” 30 INPUT “Please enter your age:” age 40 IF age > 1 AND age < 21 GOTO 60 50 IF age > 29 GOTO 70 60 PRINT “You are still a baby!” GOTO 80 70 PRINT “You are ready for retirement!” 80 END
5
BASIC The GOTO problem What on earth does line 2970 do? Code in single continuous block Great for “K-LOCers” Unstructured Not reusable Not “easy to use”!
6
Structure in language Program structure composed of sub- structures Essentially functions and subroutines y = add(a,b) x = multiply(y, z) Single point of entry, multiple points of exit. Promote modularity
7
Object-oriented programming More sophisticated form of modularity The world is made of objects Think objects, not procedures y = Math.add(a,b) x = Math.multiply(y,z) Program is a collection of objects (class libraries)
8
Interface Communication boundary between two entities (software) Abstraction about software component Well defined entry point Enables interaction Method signatures int add(int, int) Math multiply add
9
Complexity Need for modularity
10
Multi-tier applications Split application logic Reduce cost, improve maintainability Improve scalability Use multiple partners three-tier application client app serverDB server
11
Client-server Enables separation between modules A request-response interaction style. Uniform interface: resources accessed with a generic interface (e.g., HTTP GET, POST). Named resources - the system is comprised of resources which are accessed using a URL. Easier to build, maintain and extend components Standardization Interoperability
12
HTTP (Hypertext Transfer Protocol) Request/response communication protocol between client and server. Est. TCP connection to port 80 on server HTTP GET –Requests a resource, identified by the URL HTTP POST –Sends data to be processed
13
RPC (remote procedure call) The act of invoking a method over a network Remote component integration Client-Server message passing Location transparent Tight coupling between client and remote applications Math add y=Math.add(a,b) Internet
14
RPC Client Call Client Stub Pack and send parameters Receive and unpack parameters Pack and send results Execute procedure Return Receive and unpack results Server StubServer Message
15
Client Java object Java RMI Remote Java object TCP Java Remote Method Invocation
16
Remote Objects –Live on server –Accessed as if they were local
17
Registries Name and look up remote objects Servers can register their objects Clients can find server objects and obtain a remote reference A registry is a running process on a host machine
18
Stubs and Skeletons Stub –lives on client –pretends to be remote object Skeleton –lives on server –receives requests from stub –talks to true remote object –delivers response to stub Skeleton Remote object Stub Client object
19
Remote Interfaces and Stubs Remote Interface Stub Remote Object (Server) ClientSkeleton implements
20
RMI System Architecture Client Virtual Machine Client Server Virtual Machine Stub Remote Object Skeleton Registry Virtual Machine “Fred” Server
21
RMI System Architecture Client Virtual Machine Client Server Virtual Machine Stub Remote Object Skeleton Registry Virtual Machine “Fred” Server 1 2 1. Server Creates Remote Object 2. Server Registers Remote Object
22
RMI System Architecture Client Virtual Machine Client Server Virtual Machine Stub Remote Object Skeleton Registry Virtual Machine “Fred” Server 4 3. Client requests object from Registry 4. Registry returns remote reference (and stub gets created) 3
23
RMI System Architecture Client Virtual Machine Client Server Virtual Machine Stub Remote Object Skeleton Registry Virtual Machine “Fred” Server 6 5. Client invokes stub method 6. Stub talks to skeleton 7. Skeleton invokes remote object method 57
24
Creating Remote Objects Define a Remote Interface –extends java.rmi.Remote Define a class that implements the Remote Interface –extends java.rmi.RemoteObject –or java.rmi.UnicastRemoteObject
25
Remote Interface Example import java.rmi.*; public interface Adder extends Remote { public int add(int x, int y) throws RemoteException; }
26
Remote Class Example import java.rmi.*; import java.rmi.server.*; public class AdderImpl extends UnicastRemoteObject implements Adder { public AdderImpl() throws RemoteException { } public int add(int x, int y) throws RemoteException { return x + y; }
27
Compiling Remote Classes Compile the Java class –javac reads.java file produces.class file Compile the Stub and Skeleton –rmic reads.class file produces _Skel.class and _Stub.class
28
Compiling Remote Classes (Diagram) Adder.java (interface) Adder.class (interface classfile) javac AdderImpl.java (remote class) AdderImpl.class (classfile) javac rmic AdderImpl_Skel.class (skeleton classfile) AdderImpl_Stub.class (stub classfile)
29
Registering Remote Classes start the registry –running process Unix: rmiregistry & Windows: start /m rmiregistry
30
Create the server Creates a new instance of the remote object Registers it in the registry with a unique name That’s it
31
RMI Server Example try { AdderImpl adder = new AdderImpl(); Naming.rebind("adder", adder); System.out.println("Adder bound"); } catch (RemoteException re) { re.printStackTrace(); } catch (MalformedURLException me) { me.printStackTrace(); }
32
Launch the Server % java AdderServer & Adder bound
33
Server Logging invoke from command line java -Djava.rmi.server.logCalls=true YourServerImpl or enable inside program RemoteServer.setLog(System.err);
34
Creating an RMI Client Install a Security Manager –to protect from malicious stubs Find a registry –use java.rmi.Naming Lookup the name, returns a reference Cast the reference to the appropriate Remote Interface Just use it!
35
RMI URLs rmi://host[:port]/name default port is 1099 Specifies hostname of registry can also use relative URLs –name only –assumes registry is on local host
36
RMI Client Example Adder a = (Adder) Naming.lookup(“rmi://localhost/add er"); int sum = a.add(2,2); System.out.println("2+2=" + sum);
37
Object Serialization aka Persistence saves the state (data) of a particular instance of an object serialize - to save unserialize - to load
38
Java Serialization writes object as a sequence of bytes writes it to a Stream recreates it on the other end creates a brand new object with the old data
39
Not All Objects Are Serializable Any object that doesn’t implement Serializable Any object that would pose a security risk –e.g. FileInputStream Any object whose value depends on VM- specific information –e.g. Thread
40
Limitations of RMI Java-only
41
Middleware “The glue which connects objects which are distributed across multiple heterogeneous computer systems” “A software layer that serves to shield the application of the heterogeneity of the underlying computer platforms and networks” Distribution Middleware
42
Middleware goals Integrate existing components into a distributed system –Components may be off-the-shelf –Components may have incompatible requirements for hardware and OS platforms –Scalability requires distribution (not centralized or client server). Resolve heterogeneity –Facilitate communication and coordination of distributed components –Build systems distributed across a local area network, the internet – Future: adaptive, reconfigurable
43
Requirements of middleware / 1 Network communication –Need higher level primitives than network operating system primitives –Transport complex data structures over the network (marshalling / unmarshalling) Coordination –Three models: Synchronous: client waits for result Deferred synchronous: client asks for result (e.g. by polling) Asynchronous: server initiates result –Group requests –Component activation / deactivation –Concurrent requests
44
Requirements of middleware / 2 Reliability –Error detection and correction mechanisms on top of network protocols Scalability –Access to a component independent of whether it is local or remote –Migration transparency –Replication transparency Heterogeneity –Primitive data encoding –Different programming languages
45
Middleware categories Transactional middleware –Offers a tuple abstraction (SQL) –Distributed transaction processing (DTP protocol) Message oriented (MOM) –Offers a mailbox abstraction –Asynchronous messages Procedural (RPC) –Offers a procedure abstraction –Synchronous client / server interaction Object and component –Offers an object abstraction –(A)synchronous client / server interaction
46
Transactional middleware / 1 Transactions on distributed relational database –Two-phase commit protocol to implement distributed transactions Examples –IBM CICS –BEA Tuxedo –LDAP (simple protocol to access remote directories, no transactions)
47
Transactional middleware / 2 Network communication –Client and servers may reside on different hosts Coordination –Synchronous and asynchronous Reliability –DTP (Distributed Transaction Protocol): two phase commit –ACID properties: –Atomic: transaction is either complete or not –Consistent: system always in consistent state –Isolation: transaction is independent of other transactions –Durable: committed transaction survives system failures Scalability –Load balancing and replication of server components Heterogeneity –Different hardware and operating systems platforms –No data heterogeneity
48
Message oriented middleware / 1 Exchange messages between components –“Mailbox” Examples –Java Message Queue –IBM MQSeries
49
Message oriented middleware / 2 Network communication –Client sends message, server replies with result –Well suited for event notification and publish / subscribe Coordination –Asynchronous –Synchronous has to be coded by client Reliability –Message queues are stored on persistent memory –At-least-once semantics possible Scalability –Local / remote differs Heterogeneity –Marshalling code has to be written by hand
50
Procedural middleware / 1 Remote procedure calls (RPC) –Procedures can be called across the network Examples –Unix RPC’s –DCE RPC (Distributed Computing Environment) –Windows RPC’s –XML-RPC
51
Procedural middleware / 2 Network communication –Server exports parameterized procedures –Clients call these across the network –Marshalling and unmarshalling by client and server stubs (generated by the compiler) Coordination –Synchronous interaction between one client and one server –Startup on demand possible (daemon needs a table that maps RPC names to program locations in the file system) Reliability –At-most-once semantics (exception if RPC fails) No scalability Heterogeneity –Can be used between different programming languages –Across different hardware and OS platforms
52
Object middleware / 1 Objects are available across the network Examples –Corba –COM, DCOM –Java RMI, Enterprise Java Beans
53
Enterprise A Java RMI App 1App 2 Enterprise B COM App 1App 2 Enterprise C CORBA App 1App 2 COM/RMI bridge COM/CORBA bridge
54
Enterprise A Java RMI App 1App 2 Enterprise B COM App 1App 2 Enterprise C CORBA App 1App 2 COM/RMI bridge COM/CORBA bridge protocol change
55
Reading List Patricia Soares, “On Remote Procedure Call ” Birrell et. al., “Implementing Remote Procedure Calls” Eugster et. al., “The Many Faces of Publish/Subscribe” Talarian Corp., “Talarian: Everything You Need Know About Middleware” David B akken,”Middleware” Bertrand Meyer, “The Reusability Challenge” Ted Lewis, “Where is Client/Server Software Headed?” Scot Lewandowski,”Frameworks for Component-Based Client/Server Computing”
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.