Abstract
In computer systems most of the computers are connected to a network carrying data communications. In that result, several procedures have developed to support the implementation of applications which may need processes on dissimilar systems to communicate and synchronize their behavior. That such method is remote procedure call. RPC is an established system with a number of specifications and implementations. Along with these are: Open Network Computing remote procedure call, International Organization for Standardization (ISO) , and the RPC specification from the Distributed Computing Environment.
This report explains the RPC model concept, how that method is generally implemented, and equates the benefits & capabilities of Remote Procedure Calls.
Have a great detail of middle ware development in computer system and the difference between remote procedure call and remote method invocation also contains the program of client - server communication program.
Introduction
(RPC) Remote Procedure Call is the client & server communications that enhance the flexibility, interoperability and mobility of an application by allow the application to have distributed over multiple heterogeneous platforms. This will reduce the complexity of developing applications that span several operating system & network protocols by insulate the application developer from the detail of the many operating system & network interfaces method calls are the programmer's interface when using Remote Procedure call.
LAB Work
The following steps have been taken to complete the LAB assignment.
Transfer files to university unix FTP machine
On LSBU Linux Machine Commands
csdalpha1a.lsbu.ac.uk> ls
print.x print_cif.c print_sif.c printmsg.c server.c
Than compile the file and change the mode
csdalpha1a.lsbu.ac.uk> cc -o printmsg printmsg.c
csdalpha1a.lsbu.ac.uk> chmod 755 printmsg
Run successful
csdalpha1a.lsbu.ac.uk> ./printmsg "hello i am naveed jamil"
message delivered!
Run the RPCGEN
csdalpha1a.lsbu.ac.uk> rpcgen print.x
csdalpha1a.lsbu.ac.uk> ls
print.h print_cif.c print_sif.c printmsg server.c
print.x print_clnt.c print_svc.c printmsg.c
Compilation of all files
csdalpha1a.lsbu.ac.uk> cc -c print_clnt.c
csdalpha1a.lsbu.ac.uk> cc -c print_cif.c
csdalpha1a.lsbu.ac.uk> cc -c printmsg.c
csdalpha1a.lsbu.ac.uk> cc -c print_svc.c
csdalpha1a.lsbu.ac.uk> cc -c print_sif.c
List of files
csdalpha1a.lsbu.ac.uk> ls
print.h print_cif.o print_sif.c printmsg server.c
print.x print_clnt.c print_svc.c printmsg.c
print_cif.c print_clnt.o print_svc.o printmsg.o
csdalpha1a.lsbu.ac.uk> cc -o print_cif.o
csdalpha1a.lsbu.ac.uk> cc -o printmsg print_cif.o print_clnt.o
csdalpha1a.lsbu.ac.uk> cc -o printmsg print_svc.o printmsg.o
csdalpha1a.lsbu.ac.uk> cc -c server.c
csdalpha1a.lsbu.ac.uk> ./
./: Permission denied.
csdalpha1a.lsbu.ac.uk> ./printmsg &
[1] 857865
csdalpha1a.lsbu.ac.uk> ./printmsg: Permission denied.
[1] Exit 1 ./printmsg
csdalpha1a.lsbu.ac.uk> chmod 755 printmsg
csdalpha1a.lsbu.ac.uk> ./printmsg &
[1] 852113
csdalpha1a.lsbu.ac.uk> ./printmsg
" hi, my proram is sucessfully completed"
Benefits of using middleware
Middleware is application model for computers that connects software applications or components. That's used most regularly to support difficult, distributed applications. It includes content management systems, application servers, web servers, and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on Web services, SOAP, XML and service-oriented architecture.
Requirements for quicker decreased effort, development cycles, and better software application to reuse and encourage the creation and use of middleware and middleware-based architectures. Middleware is system software application that stays between the software applications and the principal operating systems, hardware and network protocol stacks.
The major roles are:
A. Operationally connection the space between the software application programs and the lower-level hardware and software application infrastructure in order to coordinate how parts of software applications are connected and how they interoperate each other.
B. Facilitate and make easier the integration of mechanism developed by multiple technology suppliers. When implemented appropriately, middleware could help to.
C. Shield application software developers from low-level, tedious, and error-prone platform details, i.e as socket & interface level network Programming.
D. Amortize application software lifecycle expenses by leveraging earlier development proficiency & capturing implementations of major patterns in reusable structures, relatively than transformation them physically for each use.
E. Make available a steady set of top level network-oriented abstractions that are much closer to software application requirements in order to simplify the development of distributed and embedded systems.
F. Present a large array of application developer-oriented services, i.e as security and logging that proven essential to manage
effectively in a networked environment. [6]
Key Challenges of Developing Distributed Systems
The Middleware is very important division of technology that is helping to reduce the cycle-time, level of endeavor, and difficulty as-connected with developing high-class, litheness, and interoperable distributed systems. Progressively more, those types of middleware systems are implemented using reusable application software (middleware) component services, to a certain extent than being developed entirely from scratch for each use. When implemented in a proper way, Middleware system could help to: [2]
Difference between RPC and RMI.
Remote Procedure Call
The RPC High level program through the RPC gives a logical communication from host to server for network software application development, without require programming several of the program interfaces to the underlying network. With remote procedure call, the host makes RPC that dispatch's requests to the server, it calls another dispatch routine which does the requested service, and returns back a answer before the call returns to the host.
Remote Procedure Calls doesn't need the caller will know about the fundamental network. i.e The application program could simply call userscall (C language function that proceeds the number of clients on a server machine) more like creating a system call to serverll. It could build server procedure calls from any programming language, and the different type of processes on the same computer.
Remote Procedure Call (RPC) is an interprocess communication technique to allow client and server software to communicate. The Microsoft RPC facility is compatible with the Open Group's Distributed Computing Environment (DCE) specification for remote procedure calls and is interoperable with other DCE-based RPC systems, such as those for HP-UX and IBM AIX UNIX-based operating systems. The RPC facility is compatible with the Open Group specification. [5]
Network Host Communication with Remote Procedure Call
[1]
Interoperability and portability of RPC Application
Portability and interoperability of RPC software applications is achieved at the source code level by means of the Remote procedure call programming language. Make a note of that when an RPC specification defines only a programming language and a protocol, it is not essential that the host and remote stubs (Example, the output of the RPC programming language compiler) be portable. The host and remote stubs call routines in host and remote runtime libraries which are likely particular to the computer system hosting the execution of the Remote Procedure specification. On another client system, the RPC programming language compiler for that computer system generates host and remote stubs proper for the runtimes libraries of that system. Thus, the host and remote stubs their selves may not be portable between client systems.
RPC Model
Modules of RMI Architecture
Communication Module
creates remote object references; uses remote object table
proxy
interface; Marshals requests and unmarshals results;
forwards request Skeleton
requests and marshals results; Invokes method in remote
object
RMI Architecture
What is RMI?
In classic Babel, all calls are in process. That is, everything Babel generates is loaded into the same process. This means inter-language Babel calls use the same mechanisms as normal function calls. This makes calls between languages extremely fast. However, many systems also have a need for Remote Procedure Calls (RPC), that is, calls made between different processes, or even machines over a network. Remote Method Invocation (RMI) is Babel's answer to this need. [3]
RMI is Object Oriented Remote Procedure Call. However, unlike RPC where calls are made to procedures on a specified machine, in RMI calls are made on objects. That call is run on any machine the object resides on.
There are numerous reasons why an application possibly will choose to use RMI. The main purpose are wrapping code attached to particular hardware, wrapping code tied to a particular operating system release, coarse grained parallel execution, or bigger encapsulation. With RMI, you can make code that's tied to a particular machine available to programs running on other platforms. You can utilize multi-CPU systems to concurrently solve problems using RMI. RMI can solve problems that sometimes occur when you put two codes in the identical address space. For example, two FORTRAN codes may use the same logical unit numbers (similar to C file numbers), or two codes may both need a customized form of a third party library. Bringing both codes into the same process may can a symbol collision for the third party library, and one code gets the wrong version of the library.
Despite the radical low-level differences between RMI and classic Babel, the user interfaces are nearly identical. In fact, if a library writer does not care if an object is remote or not, they simply do not need to know. RMI support requires a few simple calls to set up the infrastructure, but almost everything else is handled automatically by the Babel runtime library. Babel also has a few RMI support functions and a special remote constructor. [3]
Conclusion
Since middleware architecture becomes more and more important part of the application development, through this report we tried to give an overview of the state of the art in the field and present our concept and implementation the middleware platform.
We used the above program to develop a client & server model using the remote procedure call (RPC) mechanism.
The focus of this report to make understanding how the RPC model works, Middle ware distributed system and difference between RPC & RMI.
References:
E-Resources, Books, Journals and Magazines
[1] http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/HTML/AA-Q0R5B-TET1_html/onc-rpc2.html
Accessed 18 March 2008 time 14:00 BST
[2]
www.cse.wustl.edu/~schmidt/PDF/middleware-chapter.pdf
Accessed 27 April 08 time 12:00 BST
[3] https://computation.llnl.gov/casc/components/docs/users_guide/node288.html
Accessed 26 April 08 time 18:00 BST
[4]
http://java.ittoolbox.com/pub/HS021003A.pdf
Accessed 29 April 2008 time 13:06 BST
[5]
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/cnet/cnad_arc_plgn.mspx?mfr=true
Accessed 30 April 2008 time 11:45 BST
[6] Back Ground Studies
The Origin of Concurrent Programming by Per Brinch Hansen
ISBN-10: 0387954015 / ISBN-13: 978-0387954011
Publisher: Springer-Verlag New York Inc. (Jun 2002)