Wyv9 ?Dy ù ? C Network Application Development Server Software Design 1 Chapter 6: Web and RPC Based Application Development Chapter goal: ? WWW and HTTP ? Web Programming ? RPC and Middleware Wyv9 ?Dy ù ? C Network Application Development Server Software Design 2 WWW and HTTP Wyv9 ?Dy ù ? C Network Application Development Server Software Design 3 World Wide Web ? Major application used on the Internet ? Simple interface ? Two concepts ? Point ? Click Wyv9 ?Dy ù ? C Network Application Development Server Software Design 4 Use of Client-Server Paradigm ? Web server ? Makes set of pages available ? Uses port 80 ? Web client ? Called a browser ? Creates TCP connections to server ? Sends requests for items Wyv9 ?Dy ù ? C Network Application Development Server Software Design 5 Use of Client-Server Paradigm ? Primary protocol used between browser and server known as HyperText Transfer Protocol (HPPT) ? HTTP requests sent as text (ASCII) ? GET: request an item from the server ? HEAD: request status information about an item ? POST: send data to the server Wyv9 ?Dy ù ? C Network Application Development Server Software Design 6 Use of Client-Server Paradigm ? Response from server begins with ASCII header ? Status code (200 = handled request) Wyv9 ?Dy ù ? C Network Application Development Server Software Design 7 Web Components ? Browser ? Web server ? Hypermedia links ? Document representation ? Transfer protocol Wyv9 ?Dy ù ? C Network Application Development Server Software Design 8 Browser ? Application program ? User’s interface to Web ? Becomes Web client to fetch information from Web server ? Displays information for user Wyv9 ?Dy ù ? C Network Application Development Server Software Design 9 Inside a Browser ?Main controller ?Receives input from user ?Invokes client and interpreter ?Clients ?One or more built into browser ?Uses network to fetch items ?Interpreter ?One or more built in ?Displays items Wyv9 ?Dy ù ? C Network Application Development Server Software Design 10 Illustration of a Browser ? Browser contains many components Wyv9 ?Dy ù ? C Network Application Development Server Software Design 11 Alternative Protocol Example ? File transfer service ? Protocol is FTP ? Example URL ftp://ftp.cs.purdue.edu/pub/comer/netbook/client.c ? Can be used in anchor tag Wyv9 ?Dy ù ? C Network Application Development Server Software Design 12 Web Server ? Running program ? Stores set of Web documents ? Responds to request from browser by sending copy of document Wyv9 ?Dy ù ? C Network Application Development Server Software Design 13 Web Document ? Called a web page ? One web page per file ? Can contain ? Binary image ? Text file ? Text standard ? Readable representation ASCII ? Specifies contents and layout ? Known as Hypertext Markup Language (HTML) Wyv9 ?Dy ù ? C Network Application Development Server Software Design 14 Hypermedia Concept ? Web document contains mixture of ? Text ? Images ? Selectable pointers to other Web pages ? Known as hypermedia Wyv9 ?Dy ù ? C Network Application Development Server Software Design 15 Hypermedia Link On A Web Document ? Associated with object or area on screen ? Internally like a symbolic link ? Advantage ? Can reference document on another computer ? Disadvantage ? Can become invalid Wyv9 ?Dy ù ? C Network Application Development Server Software Design 16 Terminology ? Markup language ? Gives general layout guidelines ? Does not specify exact placement or format Wyv9 ?Dy ù ? C Network Application Development Server Software Design 17 Consequence of Using A Markup Language Web documents use the HyperText Markup Language representation. Instead of specifying a detailed document format, HTML allows a document to contain general guidelines for display, and allows a browser to choose details. Consequently, two browsers may display an HTML document differently. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 18 HTML Details ? Document is free-format ? Embedded tags give display guidelines ? Tags often appear in pairs ? Tag format ? Beginning tag: <TAGNAME> ? Ending tag: </TAGNAME> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 19 General Form of HTML Document <HTML> <HEAD> <TITLE> text that forms the document title </TITLE> </HEAD> <BODY> body of the document appears here </BODY> </HTML> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 20 Document Format <HTML><HEAD><TITLE> text that forms the document title</TITLE></HEAD><BODY>body of the document appears here</BODY></HTML> ? HTML source is free-form ? Previous example equivalent to this Wyv9 ?Dy ù ? C Network Application Development Server Software Design 21 Example HTML Tags ?Begin paragraph <P> ?Line break (force a new line) <BR> ?Main heading (largest, boldest font) <H1> … text … </H1> ?Next heading (next largest) <H2> … text … </H2> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 22 Example of HTML Line Break ? Input Hello there.<BR>This is an example<BR>of HTML. ? Output Hello there. This is an example of HTML. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 23 Example of HTML Line Break (continued) ? Input Hello there.<BR><BR>This shows<BR>HTML spacing. ? Output Hello there. This shows HTML spacing. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 24 Example of HTML Headings ? Input Hello.<BR><H1>This is a heading</H1><BR>Back to normal. ? Output Hello. This is a heading Back to normal. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 25 Other HTML Features ? Numbered or unnumbered lists ? Images ? Links to other pages Wyv9 ?Dy ù ? C Network Application Development Server Software Design 26 Images in HTML ? Explicitly denoted as image ? Specified with image tag ? Can specify alignment with text ? Example image tags <IMG SRC=“file_name”> <IMG SRC=“file_name” ALIGN=MIDDLE> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 27 Images in HTML Here is a picture. <IMG SRC=“file_name” ALIGN=MIDDLE> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 28 Links to Other Pages ? Symbolic representation ? Embedded in HTML document ? Browser ? Hides text of link from user ? Associates link with item on page ? Makes item selectable ? Called Uniform Resource Locator (URL) Wyv9 ?Dy ù ? C Network Application Development Server Software Design 29 General Form of URL ?Only domain name required ?Defaults ?Protocol is http ?Port is 80 ?Path is index.html protocol :// domain_name : port / item_name name of access protocol to use domain name of server computer protocol port number path name of item Wyv9 ?Dy ù ? C Network Application Development Server Software Design 30 Link in HTML ? Link specified in <A> tag ? Applies to successive items ? Ends with </A> ? Called anchor Wyv9 ?Dy ù ? C Network Application Development Server Software Design 31 Example of Anchor Tag in HTML ?Input The text is published by <A HREF=http://www.prenhall.com> Prentice Hall, </A> one of the larger publishers of Computer Science textbooks. ?Produces The text is published by Prentice Hall, one of the larger publishers of Computer Science textbooks. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 32 Other Markup Languages ? Extensible Markup Language (XML) does not specify layout ? Tag names can be created as needed ? Example for a corporate phone book: Wyv9 ?Dy ù ? C Network Application Development Server Software Design 33 Caching in Browsers ? Cache for recently accessed ? HTML pages ? Images ? Item normally fetched from cache ? User can override ? HTTP can verify timestamp before fetching new copy Wyv9 ?Dy ù ? C Network Application Development Server Software Design 34 Types of Web Pages ?Static ?Stored in file ?Unchanging ?Dynamic ?Formed by server ?Created on demand ?Output from a program ?Use Common Gateway Interface (CGI) technology Wyv9 ?Dy ù ? C Network Application Development Server Software Design 35 Types of Web Pages (cont) ? Active ? Executed at client ? Consists of a computer program ? Can interact with user ? Use Java technology Wyv9 ?Dy ù ? C Network Application Development Server Software Design 36 Summary of Web Document Types Web documents can be grouped into three categories depending on when the information in the document changes. The information in a static document remains unchanged until the author revises the document. The information in a dynamic document can change whenever a server receives a request for the document. Information displayed by an active document can change after the document has been loaded into a browser. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 37 HTTP ? http: Underlying protocol of the World Wide Web ? transmitting information with efficiency necessary for hypertext jumps ? Can transfer plain text, hypertext, audio, images, and Internet accessible information Wyv9 ?Dy ù ? C Network Application Development Server Software Design 38 HTTP Overview ? Transaction oriented client/server protocol ? Usually between Web browser (client) and Web server ? Uses TCP connections ? Stateless ? Each transaction treated independently ? Each new TCP connection for each transaction ? Terminate connection when transaction complete Wyv9 ?Dy ù ? C Network Application Development Server Software Design 39 Key Terms ? Cache ? Client ? Connection ? Entity ? Gateway ? Message ? Origin server ? Proxy ? Resource ? Server ? Tunnel ? User agent Wyv9 ?Dy ù ? C Network Application Development Server Software Design 40 Examples of HTTP Operation Wyv9 ?Dy ù ? C Network Application Development Server Software Design 41 Intermediate HTTP Systems Wyv9 ?Dy ù ? C Network Application Development Server Software Design 42 Proxy ? A proxy acts on behalf other clients and presents requests from other clients to a server ? Two scenarios need use proxy: ? Security intermediary ? Different versions of HTTP ? A proxy is a forwarding agent Wyv9 ?Dy ù ? C Network Application Development Server Software Design 43 Gateway ? A gateway is a server that appears to the client as if it were an origin server. ? It acts on behalf of other servers that may not be able to communicate directly with a client. ? Two scenarios need use gateway: ? Security intermediary ? Non-HTTP servers Wyv9 ?Dy ù ? C Network Application Development Server Software Design 44 Tunnel ? Tunnel performs no operation on HTTP requests and responses. ? A tunnel is simply a relay point between two TCP connections. ? HTTP messages pass the tunnel without any changes. ? Use? Wyv9 ?Dy ù ? C Network Application Development Server Software Design 45 HTTP Messages ? Requests ? Client to server ? Responses ? Server to client ? Request line ? Response line ? General header ? Request header ? Response header ? Entity header ? Entity body Wyv9 ?Dy ù ? C Network Application Development Server Software Design 46 HTTP Message Structure Wyv9 ?Dy ù ? C Network Application Development Server Software Design 47 General Header Fields ? Cache control ? Connection ? Date ? Forwarded ? Keep alive ? MIME version ? Pragma ? Upgrade Wyv9 ?Dy ù ? C Network Application Development Server Software Design 48 Request Methods ? Request-Line = Method <SP> Request_URL <SP> HTTP-Version <CRLF> ? Methods: ? Options ? Get ? Head ? Post ? Put ? Patch ? Copy ? Move ? Delete ? Link ? Unlink ? Trace ? Wrapped ? Extension-method Wyv9 ?Dy ù ? C Network Application Development Server Software Design 49 Request Header Field ? Accept ? Accept charset ? Accept encoding ? Accept language ? Authorization ? From ? Host ? If modified since ? Proxy authentication ? Range ? Referrer ? Unless ? User agent Wyv9 ?Dy ù ? C Network Application Development Server Software Design 50 Response Messages ? Status line followed by one or more general, response and entity headers, followed by optional entity body ? Status-Line = HTTP-Version <SP> Status-Code <SP> Reason-Phrase <CRLF> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 51 Status Codes ? Informational ? Successful ? Redirection ? Client error ? Server error Wyv9 ?Dy ù ? C Network Application Development Server Software Design 52 Response Header Fields ? Location ? Proxy authentication ? Public ? Retry after ? Server ? WWW-Authenticate Wyv9 ?Dy ù ? C Network Application Development Server Software Design 53 Entity Header Fields ? Allow ? Content encoding ? Content language ? Content length ? Content MD5 * ? Content range * ? Content type ? Content version ? Derived from ? Expires ? Last modified ? Link ? Title ? Transfer encoding ? URL header ? Extension header Wyv9 ?Dy ù ? C Network Application Development Server Software Design 54 Entity Body ? Arbitrary sequence of octets ? HTTP transfers any type of data including: ? text ? binary data ? audio ? images ? video ? Interpretation of data determined by header fields ? Content encoding, content type, transfer encoding Wyv9 ?Dy ù ? C Network Application Development Server Software Design 55 Web Programing Wyv9 ?Dy ù ? C Network Application Development Server Software Design 56 Client-side programming ? JavaScript ? a scripting language for Web pages, developed by Netscape in 1995 ? uses a C++/Java-like syntax, so familiar to programmers, but simpler ? good for adding dynamic features to Web page, controlling forms and GUI ? Java applets ? can define small, special-purpose programs in Java called applets ? provides full expressive power of Java (but more overhead) ? good for more complex tasks or data heavy tasks, such as graphics can download program with Web page, execute on client machine ? simple, generic, but insecure Wyv9 ?Dy ù ? C Network Application Development Server Software Design 57 Continuously Changing Information ? Needed for ? Animations ? Rapid updates (e.g., stock prices) ? Achieved with two mechanisms ? Server push ? Active document Wyv9 ?Dy ù ? C Network Application Development Server Software Design 58 Server Push Technology ? Client forms connection ? Server sends updates repeatedly ? Impractical Wyv9 ?Dy ù ? C Network Application Development Server Software Design 59 Active Document Technology ? Server ? Sends computer program to client ? Client ? Runs program locally ? Program ? Controls display ? Interacts with user Wyv9 ?Dy ù ? C Network Application Development Server Software Design 60 Active Document Representation ?Desire ?Platform independence ?Efficient execution ?High-speed data transmission ?Late binding ?Consequence ?Compact representation ?Interpretive execution Wyv9 ?Dy ù ? C Network Application Development Server Software Design 61 Active Document Translation ? Compiler produces machine-independent binary ? Browser interprets binary Wyv9 ?Dy ù ? C Network Application Development Server Software Design 62 Java Technology ?Developed by Sun Microsystems ?Used for ?Conventional applications ?Active documents (applets) ?Includes ?Programming language ?Run-time system ?Class library Wyv9 ?Dy ù ? C Network Application Development Server Software Design 63 Java Language Characteristics ? High level ? General purpose ? Similar to C++ ? Object oriented ? Dynamic ? Strongly typed ? Statically type checked ? Concurrent Wyv9 ?Dy ù ? C Network Application Development Server Software Design 64 Java Run-Time Environment Characteristics ? Interpretative execution ? Automatic garbage collection ? Multi-threaded execution ? Internet access ? Graphics support Wyv9 ?Dy ù ? C Network Application Development Server Software Design 65 Java Library ? Classes for ? Graphics manipulation ? Low-level network I/O ? Interaction with a Web server ? Run-time system access ? File I/O ? Conventional data structures ? Event capture ? Exception handling Wyv9 ?Dy ù ? C Network Application Development Server Software Design 66 Choice of Graphics Interface Java includes an extensive graphics toolkit that consists of run-time support for graphics as well as interface software. The toolkit allows a programmer to choose a high-level interface, in which the toolkit handles details, or a low-level interface, in which the applet handles details. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 67 Example Java Applet ? Window with two items ? Text area ? Button ? Change text when button clicked Wyv9 ?Dy ù ? C Network Application Development Server Software Design 68 Illustration of Applet Display ? Initial ?After user clicks button Wyv9 ?Dy ù ? C Network Application Development Server Software Design 69 Example Applet Code Wyv9 ?Dy ù ? C Network Application Development Server Software Design 70 Applet Invocation ?Available in HTML ?Uses applet tag ?Specifies ?Codebase (machine and path) ?Code (specific class to run) ?Example <applet codebase=“www.nonexist.com/pth” code=“bbb.class”> Wyv9 ?Dy ù ? C Network Application Development Server Software Design 71 Java Functionality ?HTML interface ?Controls display ?Interacts with user ?HTTP interface ?Accesses remote Web documents ?Invokes other applets ?Exceptions ?Indicate unanticipated circumstances ?Can be caught and handled Wyv9 ?Dy ù ? C Network Application Development Server Software Design 72 Example Applet Code Wyv9 ?Dy ù ? C Network Application Development Server Software Design 73 Example Applet Code (continued) Wyv9 ?Dy ù ? C Network Application Development Server Software Design 74 Illustration of Applet Display Wyv9 ?Dy ù ? C Network Application Development Server Software Design 75 JavaScript Technology ? Alternative to Java technology ? Provides scripting language ? Browser reads and interprets script in source form ? JavaScript can be integrated with HTML Wyv9 ?Dy ù ? C Network Application Development Server Software Design 76 JavaScript Example Wyv9 ?Dy ù ? C Network Application Development Server Software Design 77 JavaScript Example Wyv9 ?Dy ù ? C Network Application Development Server Software Design 78 Server-side programming ? CGI programming ? programs can be written to conform to the Common Gateway Interface ? when a Web page submits, data from the page is sent as input to the CGI program ? CGI program executes on server, sends its results back to browser as a Web page ? good if computation is large/complex or requires access to private data ? Active Server Pages, Java Servlets, PHP, Server Side Includes ? vendor-specific alternatives to CGI ? provide many of the same capabilities but using HTML-like tags can store and execute program on Web server, link from Web page ? more complex, requires server privileges, but secure Wyv9 ?Dy ù ? C Network Application Development Server Software Design 79 CGI Technology ?URL specifies ?Location of Web server ?CGI program on that server ?Arguments to program ?Web server ?Uses TCP for communication ?Accepts HTTP request from client ?Runs specified CGI program ?Returns output to client Wyv9 ?Dy ù ? C Network Application Development Server Software Design 80 CGI Technology (cont) ? CGI program ? Performs arbitrary computation ? Often written in a scripting language ? Produces output file when run ? Starts output with header Wyv9 ?Dy ù ? C Network Application Development Server Software Design 81 Header in CGI Output ? Stops at first blank line ? Identifies ? Encoding used ? Type of document ? Format keyword: information Wyv9 ?Dy ù ? C Network Application Development Server Software Design 82 CGI Header Examples ? HTML document header Content Type: text/html ? Text document header Content Type: text/plain ? Redirection header Location: /over_here/item4 Wyv9 ?Dy ù ? C Network Application Development Server Software Design 83 Example CGI Script ? Generates document ? Document contains three lines of text ? Header ? Blank line ? Document creation date Wyv9 ?Dy ù ? C Network Application Development Server Software Design 84 Parameters ? CGI programs can be parameterized ? URL can contain arguments that are passed to CGI program ? Question mark separates CGI path from arguments ? Server places information following question mark in environment variable QUERY_STRING Wyv9 ?Dy ù ? C Network Application Development Server Software Design 85 Example Environment Variables Wyv9 ?Dy ù ? C Network Application Development Server Software Design 86 Encoding Information in a URL ? Information that program stores between invocations: state information ? Information passed to browser in form of cookie ? Cookie consists of name/value pair ? Long term (persistent) or short term (session) Wyv9 ?Dy ù ? C Network Application Development Server Software Design 87 Long-Term State Information ? Program lifetime ? CGI program invoked by server ? Program exits after generating output ? To maintain persistent data ? Write to file on disk ? Read from file on disk Wyv9 ?Dy ù ? C Network Application Development Server Software Design 88 Long-Term State Information ? Client’s IP address in environment variable ? Check if address in file ? Respond to client Wyv9 ?Dy ù ? C Network Application Development Server Software Design 89 Short-Term State Information ? Each invocation of a dynamic document program can produce a document containing a new set of URLs ? Use new arguments in new URLs Wyv9 ?Dy ù ? C Network Application Development Server Software Design 90 Short-Term State Information ? Argument encodes number of times executed Wyv9 ?Dy ù ? C Network Application Development Server Software Design 91 Example of Script Execution ?Initial document Content-type: text/html <HTML> This is the initial page.<BR><BR> <A HREF=“http://www.nonexist.com/cgi/ex4?1”> Click here to refresh the page.</A> </HTML> ?Resulting display This is the initial page. Click here to refresh the page. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 92 Example of Script Execution ?Generated output Content-type: text/html <HTML> You have displayed this page 2 times.<BR><BR> <A HREF=“http://www.nonexist.com/cgi/ex4?2”> Click here to refresh the page.</A> </HTML> ?Resulting display You have displayed this page 2 times. Click here to refresh the page. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 93 Generated URL Values When it generates a document, a dynamic document program can embed state information as arguments in URLs. The argument string is passed to the program for the URL, enabling a program to pass state information from one invocation to the next. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 94 Server-Side Scripting ? ASP (Active Server Pages) ? JSP (Java Server Pages) ? PHP (Perl Helper Pages) ? ColdFusion Wyv9 ?Dy ù ? C Network Application Development Server Software Design 95 Server-Side Scripting Server-side scripting technologies allow a dynamic page to be created from a template or skeleton that contains embedded commands or program scripts. Instead of using a computer program to generate an entire page, an interpreter copies the page and replaces only the scripting commands. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 96 RPC and Middleware Wyv9 ?Dy ù ? C Network Application Development Server Software Design 97 What is RPC? ? Local Procedure Calls ? Transfer of control as well as data between procedure calls does not cross process boundary. ? RPC = Remote Procedure Calls ? Method invocation to transfer control as well as data between multiple processes. ? Processes may run on same or different machines. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 98 Remote Procedure Call ? Uses standard procedure call paradigm ? Divides program along procedure call boundaries ? Main program and procedures for user interaction in client side ? Other procedures in server side Wyv9 ?Dy ù ? C Network Application Development Server Software Design 99 Illustration of Conventional Procedure Call Graph ? Arrow denotes procedure call Wyv9 ?Dy ù ? C Network Application Development Server Software Design 100 Procedure Call Graph Divided Into Client and Server ? Division occurs on call boundary ? Main program in client piece Wyv9 ?Dy ù ? C Network Application Development Server Software Design 101 RPC Programming Model 1. Create an interface ? Type of interface = Name of interface ? Signatures of all procedures with procedure names, arguments and return type 2. Provide the interface to interface module, which generates user stub and server stub 3. Implement procedures in the interface using the server stub 4. Export the interface to a broker or a repository, known as Binding an interface 5. Implement the client application using the user stub and invoke remote procedure Wyv9 ?Dy ù ? C Network Application Development Server Software Design 102 RPC – How does it work? Wyv9 ?Dy ù ? C Network Application Development Server Software Design 103 RPC – How does it work? Caller Machine 1. A user process on caller invokes a remote method, which invokes the user stub. 2. User stub serializes arguments of method and invokes RPC Runtime. 3. RPC Runtime imports the interface from the broker, which implements the desired procedure. In this way, it obtains the server network address for invoking remote procedure. 4. RPC Runtime transmits call packets to callee machine and waits for response. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 104 RPC – How does it work?... Callee Machine 5. RPC Runtime receives request, instantiates the stub and forwards request to it. 6. Server stub de-serializes arguments and invokes the remote method on server. The remote method returns on and invokes server stub with return value. 7. Server stub serializes return value and invokes RPC Runtime to respond with result packet. 8. RPC Runtime returns the result packets to RPC runtime running on callee machine. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 105 RPC – How does it work?... Caller Machine 9. RPC runtime relays received result packets to user stub for the invoked RPC method. 10. User stub de-serializes the result value and returns it to the caller process. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 106 Components of RPC System ? Interface Module a.k.a IDL Compiler ? Generates server stub and user stub for a user specified interface ? An interface declares: ? Type of interface ? Signatures of remote procedures ? Optionally, an implementer of required interface Wyv9 ?Dy ù ? C Network Application Development Server Software Design 107 Components of RPC System… ? User Stub a.k.a Stub ? Serialize arguments ? Placing specification of target procedure and serialized arguments into one or more packets. ? Request RPC Runtime on caller machine to reliably transmit it to callee machine. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 108 Components of RPC System… ? Server Stub a.k.a. Skeleton ? Accepts data packets from RPC Runtime on callee machine ? De-serializing data packets and reconstruct arguments ? Invoke remote procedure call ? Serialize return value into data packet ? Request RPC Runtime to deliver return packets to caller machine Wyv9 ?Dy ù ? C Network Application Development Server Software Design 109 Components of RPC System… ? RPC Runtime ? Accepting and delivering data packets from user stub and server stub ? When a remote procedure call is invoked, it inquires the implementer of interface from broker if the implementer is not known ? Establishes reliable and secure communication between caller and callee ? The communication between caller and callee may be encrypted to enforce network level security Wyv9 ?Dy ù ? C Network Application Development Server Software Design 110 Components of RPC System… ? Distributed Database ? Broker between caller and callee. ? Holds a map/dictionary of [ Type of interfaces, List of its implementer ] ? Server RPC Runtime exports interface it implements to distributed database ? Client RPC Runtime inquires implementer of interface from distributed database, before invoking a RPC for the first time. ? ACL restricts entities that can export interface to it. ? Needs to have high availability. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 111 RPC Incarnations ? Functional Programming ? Sun RPC ? OSF DCE ? Object Oriented Programming ? CORBA ? Java Remote Method Invocation (RMI) ? Microsoft DCOM ? .NET Remoting Wyv9 ?Dy ù ? C Network Application Development Server Software Design 112 RPC Deployment Issues ? RPC server machine listens for a request on a specific port. Need to punch a hole in firewall to allow RPC server request. It leads to security concerns. ? Procedure semantics and protocols for RPC implementation use proprietary protocols. It lead to interoperability problem. Wyv9 ?Dy ù ? C Network Application Development Server Software Design 113 Recent Developments ? Industry-wide support for using Web Services for distributed computing ? RPC over HTTP ? Circumvents firewall issue ? Use of SOAP (XML) to exchange information about procedure and its arguments ? Circumvents interoperability issue – Java Client can communicate with server written in .NET and vice versa ? Using UDDI for discovering services Wyv9 ?Dy ù ? C Network Application Development Server Software Design 114 Middleware ? Tools to help programmers ? Makes client-server programming ? Easier ? Faster ? Makes resulting software ? Less error-prone ? More reliable Wyv9 ?Dy ù ? C Network Application Development Server Software Design 115 Middleware Approach ?Allow programmer to work with familiar language constructs ?Provide tools to help programmer ?Special translators ?Libraries ?Automatically generate code for ?Network communication ?Connection management Wyv9 ?Dy ù ? C Network Application Development Server Software Design 116 Middleware Technologies That Use Remote Procedure Call ? ONC RPC ? Open Network Computing ? IETF standard ? Popular in Unix world ? DCE RPC ? Distributed Computing Environment ? Open Group Standard Wyv9 ?Dy ù ? C Network Application Development Server Software Design 117 Middleware Technologies That Use Remote Procedure Call (continued) ? MSRPC ? Microsoft ? Variant of DCE RPC Wyv9 ?Dy ù ? C Network Application Development Server Software Design 118 Object-Oriented Middleware ?Designed for use with object-oriented programming languages ?Same general scheme as RPC ?Interface Definition Language ?Tool to build stubs ?Libraries to handle network communication ?Uses method invocation instead of procedure call Wyv9 ?Dy ù ? C Network Application Development Server Software Design 119 Middleware Technologies That Use Remote Object Invocation ? CORBA ? Common Object Request Broker Architecture ? Well known object-oriented middleware ? MSRPC2 ? Microsoft ? Also called Object RPC (ORPC) Wyv9 ?Dy ù ? C Network Application Development Server Software Design 120 Middleware Technologies That Use Remote Object Invocation ? COM / DCOM ? Also from Microsoft ? Component Object Model (COM) ? Used on single computer ? Provides mechanism for inter-object references ? Distributed Component Object Model ? Used across multiple computers ? Includes communication stubs Wyv9 ?Dy ù ? C Network Application Development Server Software Design 121 Middleware Technologies That Use Remote Object Invocation ? RMI ? From Sun Microsystems ? Methods of remote Java objects can be invoked from other Java virtual machines on different hosts ? Jini ? Also from Sun; based on Java ? Provides an environment for creating dynamically networked components, applications, and services that scale Wyv9 ?Dy ù ? C Network Application Development Server Software Design 122 Summary ? Web is major application in Internet ? Client ? Called browser ? Fetches and displays document ? Web documents ? Stored on servers ? Standard representation is HTML Wyv9 ?Dy ù ? C Network Application Development Server Software Design 123 Summary (continued) ?HTML ?Markup language ?Uses tags embedded in text ?URL components ?Protocol ?Domain name of server ?Protocol port number ?Path of item ?Only domain is required Wyv9 ?Dy ù ? C Network Application Development Server Software Design 124 Summary (continued) ? Static web page ? Unchanging ? Dynamic web page ? Output from a program on the server ? Active web page ? Runs in browser ? Consists of a computer program Wyv9 ?Dy ù ? C Network Application Development Server Software Design 125 Summary (continued) ? Dynamic web page technology ? Known as CGI ? CGI program usually a script ? Document begins with header line ? URL can contain arguments Wyv9 ?Dy ù ? C Network Application Development Server Software Design 126 Summary (continued) ? Active web page technology ? Known as Java ? Programming language plus runtime support ? Document called applet Wyv9 ?Dy ù ? C Network Application Development Server Software Design 127 Summary (continued) ? RPC ? Middleware ? Tools to help build client and server ? Automates routine tasks ? Two popular paradigms ? Remote procedure call ? Object invocation ? Generates communication stubs