1 / 55

COP 4991 Component Based Software Development

COP 4991 Component Based Software Development. Lecture #2 Distributed and Web Computing Onyeka Ezenwoye. Acknowledgement. Lou Somers Alex Chaffee. BASIC. Beginners All-purpose Symbolic Instruction Code John Kemeny and Thomas Kurtz , 1963 General-purpose language Easy to use?. BASIC.

dagan
Download Presentation

COP 4991 Component Based Software Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COP 4991Component 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. Unstructured Not reusable Not “easy to use”! BASIC • TheGOTO problem • What on earth does line 2970 do? • Codein single continuous block • Great for “K-LOCers”

  6. Structure in language • Program structure composed of sub-structures • Essentially functions and subroutines • y = add(a,b) • x = multiply(y, z) • Single pointofentry, 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. add Math multiply Interface • Communication boundary between two entities (software) • Abstraction about software component • Well defined entry point • Enables interaction • Method signatures int add(int, int)

  9. Complexity Need for modularity

  10. Multi-tier applications • Split application logic • Reduce cost, improve maintainability • Improve scalability • Use multiple partners app server DB server client three-tier application

  11. Interoperability Standardization 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 resourceswhich are accessed using a URL. • Easier to build, maintain and extend components

  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. add y=Math.add(a,b) Internet Math 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

  14. RPC Client Client Stub Server Stub Server Message Pack and send parameters Receive and unpack parameters Execute procedure Call Pack and send results Message Receive and unpack results Return

  15. Java Remote Method Invocation TCP Client Java object Remote Java object Java RMI Java RMI

  16. Remote Objects • 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. Client object Remote object Stub Skeleton 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

  19. RemoteInterface implements implements Client Stub Skeleton RemoteObject (Server) Remote Interfaces and Stubs

  20. RMI System Architecture ClientVirtualMachine ServerVirtualMachine Client RemoteObject Skeleton Stub Server “Fred” RegistryVirtualMachine

  21. RMI System Architecture 1. Server Creates Remote Object2. Server Registers Remote Object ClientVirtualMachine ServerVirtualMachine Client RemoteObject 1 Skeleton Stub Server 2 “Fred” RegistryVirtualMachine

  22. RMI System Architecture ClientVirtualMachine ServerVirtualMachine Client RemoteObject 3. Client requests object from Registry 4. Registry returns remote reference (and stub gets created) Skeleton Stub Server 3 4 “Fred” RegistryVirtualMachine

  23. RMI System Architecture ClientVirtualMachine ServerVirtualMachine Client RemoteObject 5 7 6 Skeleton Stub Server 5. Client invokes stub method 6. Stub talks to skeleton 7. Skeleton invokes remote object method “Fred” RegistryVirtualMachine

  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) javac Adder.java (interface) Adder.class (interface classfile) AdderImpl_Skel.class (skeleton classfile) javac AdderImpl.java (remote class) AdderImpl.class (classfile) rmic 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/adder"); 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 tupleabstraction (SQL) • Distributed transaction processing (DTP protocol) • Message oriented (MOM) • Offers a mailboxabstraction • Asynchronous messages • Procedural (RPC) • Offers a procedureabstraction • Synchronous client / server interaction • Object and component • Offers an objectabstraction • (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. Proceduralmiddleware / 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

More Related