Distributed Object-Oriented Programming (1) – Socket, RPC, CORBA

Slides:



Advertisements
Similar presentations
COM vs. CORBA.
Advertisements

RPC Robert Grimm New York University Remote Procedure Calls.
Remote Procedure Call (RPC)
Remote Procedure CallCS-4513, D-Term Remote Procedure Call CS-4513 Distributed Computing Systems (Slides include materials from Operating System.
Common Object Request Broker Architecture (CORBA) By: Sunil Gopinath David Watkins.
CORBA Architecture Nitin Prabhu. Outline CORBA Object Model CORBA Architecture Static Invocation Dynamic Invocation CORBA Communication Model.
CORBA - Common Object Request Broker Architecture.
Seminarium on Component-based Software Engineering Jan Willem Klinkenberg CORBA.
Network Programming Chapter 11 Lecture 6. Networks.
Remote Method Invocation Chin-Chih Chang. Java Remote Object Invocation In Java, the object is serialized before being passed as a parameter to an RMI.
Advanced Java Class Network Programming. Network Protocols Overview Levels of Abstraction –HTTP protocol: spoken by Web Servers and Web Clients –TCP/IP:
CORBA Framework Eelements 1 CORBA Framework Elements  Object Request Broker (ORB)  This is the object manager in CORBA  Mechanisms for specifying interfaces.
OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 11: CORBA.
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
CS490T Advanced Tablet Platform Applications Network Programming Evolution.
Sockets  Defined as an “endpoint for communication.”  Concatenation of IP address + port.  Used for server-client communication.  Server waits for.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Introduction to Remote Method Invocation (RMI)
OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 13: CORBA.
II. Middleware for Distributed Systems
By Dr. Jiang B. Liu 11. Java IDL and CORBA  Generic ORB Core  idltojava development tool  CORBA Object Service (COS) name service - nameserv  Java.
Remote Procedure Calls. 2 Client/Server Paradigm Common model for structuring distributed computations A server is a program (or collection of programs)
CORBA Chapter 17 Coulouris text. Today’s Topics CORBA History and goals CORBA RMI CORBA services The Distributed Whiteboard Revisited.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 12 Communicating over.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
CORBA Celsina Bignoli Enterprise Computing Corporation have similar computing environments: –mixed set of HW platforms –a mixed set.
Cli/Serv.: rmiCORBA/131 Client/Server Distributed Systems v Objectives –introduce rmi and CORBA , Semester 1, RMI and CORBA.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Information Management NTU Interprocess Communication and Middleware.
1. I NTRODUCTION TO N ETWORKS Network programming is surprisingly easy in Java ◦ Most of the classes relevant to network programming are in the java.net.
Abhishek Bachchan Vishal Patangia
CORBA IS 8030 – Integrated Computing Environments Dr. Hoganson CORBA Common Object Request Broker Architecture Published by Object Management Group (OMG)
CORBA/IDL Common Object Resource Broker Architecture (CORBA) Interface Definition Language (IDL) Object Management Group (OMG) ( Specification.
Distributed Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Distributed Objects and Middleware. Sockets and Ports Source: G. Coulouris et al., Distributed Systems: Concepts and Design.
CSE 451: Operating Systems Winter 2015 Module 22 Remote Procedure Call (RPC) Mark Zbikowski Allen Center 476 © 2013 Gribble, Lazowska,
Distributed Computing A Programmer’s Perspective.
CORBA Common Object Request Broker Architecture. Basic Architecture A distributed objects architecture. Logically, an object client makes method calls.
MiddlewareTech Corba Concepts - recap of RMI - ORB - CORBA
Java Programming: Advanced Topics 1 Networking Programming Chapter 11.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
CS551 - Lecture 11 1 CS551 Object Oriented Middleware (III) (Chap. 5 of EDO) Yugi Lee STB #555 (816)
 Common Object Request Broker Architecture  An industry standard developed by OMG to help in distributed programming.
Part 4: Network Applications Client-server interaction, example applications.
CORBA (Common Object Request Broker Architechture) Aniket Prabhune Varun Saini Balaprasuna Chennupati Lally Singh.
DISTRIBUTED OBJECTS AND REMOTE INVOCATION 1. 2 Topics  Middleware  Remote Method Invocation  Remote Procedure Call.
Slide 1 of 15 © Ingeniørhøjskolen i Århus CORBA Programming: Presentation of a simple “Hello World” CORBA client and server application.
(C) 2003 University of ManchesterCS31010 Lecture 14: CORBA.
CORBA: Object Adapter, Services, Inter-ORB Protocols - Balaprasuna Chennupati.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
CORBA Barış COŞKUN Çağatay DİKİCİ. INTRODUCTION Computer networks are heterogenous In 1989 OMG(Object Management Group) was formed to address the problems.
MCA – 405 Elective –I (A) Java Programming & Technology
CORBA Alegria Baquero.
CSE 451: Operating Systems Winter 2006 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CORBA Alegria Baquero.
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
CSE 451: Operating Systems Autumn 2003 Lecture 16 RPC
Inventory of Distributed Computing Concepts
CSE 451: Operating Systems Winter 2007 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
CSE 451: Operating Systems Winter 2004 Module 19 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Spring 2012 Module 22 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Autumn 2009 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Remote Procedure Call Hank Levy 1.
1999년 10월 29일 김 정 선 한양대학교 공학대학 전자컴퓨터공학부
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Autumn 2010 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Winter 2003 Lecture 16 RPC
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Messaging and Remote Procedure Call (RPC)
Presentation transcript:

Distributed Object-Oriented Programming (1) – Socket, RPC, CORBA SNU iDB Lab. Taewhi Lee May 2nd, 2007

Outline Overview – Distributed Programming Socket RPC CORBA References

Overview – Distributed Programming [1/2] Paradigm Shift Distributed Computing  SOA DC – client/server are tightly coupled SOA – everything is decoupled Service-Oriented Architecture Web Services Distributed Component Model OOP  CBD Object – limited reusability Component – independent service Several components are plugged in to a component architecture system CORBA Component Model EJB Distributed Object Model Structured Programming  OOP SP – Complexity of system modeling Difficulty in code change/extension OOP – Natural object modeling Reusability by inheritance Flexibility by polymorphism CORBA RMI Distributed Structural Model RPC Basic Inter-Process Communication Socket

Overview – Distributed Programming [2/2] Comparison of the Paradigms Structured Development Object-Oriented Development Component Based Development Service Oriented Development Granularity Very fine Fine Medium Coarse Contract Defined Private/public Public Published Reusability Low High Coupling Tight Loose Very loose Dependencies Compile-time Run-time Communication Scope Intra-application Inter-application Inter-enterprise [Java Web Services Architecture, McGovern]

Outline Overview – Distributed Programming Socket RPC CORBA References

Socket [1/8] What is Socket? Interface for network access Originated from the ARPA network in 1971 Socket = Internet address + port number Only one receiver / Multiple senders per port

Socket [2/8] Characteristics of Socket Endpoint for inter-process communication Message transmission between sockets Socket associated with either UDP or TCP No port sharing Advantage Several points of entry to process Disadvantage Location dependence

Socket [3/8] Three Types of Socket SOCK_DGRAM For datagram communication (UDP) SOCK_STREAM For stream communication (TCP) SOCK_RAW For advanced user Direct access to network layer Security problem may occur (not supported in Java)

Socket [4/8] Communication Service Types UDP (User Datagram Protocol) Connectionless Unreliable delivery – ‘send and pray’ Each message contains source and destination address Each message may be delivered through different path Messages are possibly lost / duplicated / delivered out of order, without telling the user Efficient and easy to implement

Socket [5/8] Communication Service Types (cont’d) TCP (User Datagram Protocol) Connection-based Reliable delivery Establishes data stream connection to ensure reliable, in-sequence delivery Error checking and reporting to both ends Attempts to match speeds (timeouts, buffering) Less efficient, memory and time overhead for error correction

Socket [6/8] Socket Programming Create socket  Read & write  Close socket Example: TCP socket programming in Java Server Client 1) Create ServerSocket 3) Create Socket 4) Connect 2) Wait accept() from ServerSocket 6) Get InputStream & OutputStream from the socket 5) Client’s socket is returned by accept() 7) Communicate using the InputStream & OutputStream 8) Communicate 6) Get InputStream & OutputStream from the socket 9) Close Socket 7) Communicate using the InputStream & OutputStream 9) Close Socket

Socket [7/8] TCP Socket Programming in Java (1/2) Code Example: Echo Server EchoServer.java import java.net.*; import java.io.*; public class EchoServer { public static void main (String args[]) { try { int serverPort = 10001; ServerSocket listenSocket = new ServerSocket(serverPort); Socket clientSocket = listenSocket.accept(); OutputStream out = sock.getOutputStream(); InputStream in = sock.getInputStream(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(out)); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line = null; while ((line = br.readLine()) != null) { System.out.println(“String from client : “ + line); pw.println(line); pw.flush(); } pw.close(); br.close(); sock.close(); } catch(Exception e) { System.out.println(e) 1) 2), 5) 6) 7), 8) 9)

Socket [8/8] TCP Socket Programming in Java (2/2) Code Example: Echo Client EchoClient.java import java.net.*; import java.io.*; public class EchoClient { public static void main (String args[]) { try { int serverPort = 10001; Socket sock = new ServerSocket(“127.0.0.1”, serverPort); BufferedReader keyboard = new BufferedReader( new InputStreamReader(System.in)); OutputStream out = sock.getOutputStream(); InputStream in = sock.getInputStream(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(out)); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line = null; while ((line = keyboard.readLine()) != null) { if (line.equals(“quit”)) break; pw.println(line); pw.flush(); String echo = br.readLine(); System.out.println(“String from server : “ + echo); } pw.close(); br.close(); sock.close(); } catch(Exception e) { System.out.println(e) 3), 4) 6) 7), 8) 9)

Outline Overview – Distributed Programming Socket RPC CORBA References

RPC (Remote Procedure Call) RPC [1/10] What is RPC? RPC (Remote Procedure Call) Birell and Nelson at Xerox PARC, 1980 To support distributed programming in procedural languages To make distributed nature of service transparent to the programmer – ‘RPC like a local call’

 RPC is a more natural way to communicate! RPC [2/10] Message  RPC Message Flexible But, not natural for programming Programmers have to worry about message formats Messages must be packed and unpacked Messages have to be decoded by server to figure out what is requested Messages are often asynchronous They may require special error handling functions  RPC is a more natural way to communicate!

RPC [3/10] RPC Architecture Client Stub Network Network Interface Server Stub Client Server Parameter Network Interface Parameter B’ B A A’ Result Result

The stubs send messages to each other for RPC Client-side stub RPC [4/10] RPC Stubs The stubs send messages to each other for RPC Client-side stub Looks to the client as if it were a callable server procedure Is linked with the client program Server-side stub Looks to the server as if it’s a calling client Is linked with the server program Stub compiler Reads the IDL Produces two stub procedures for each server procedure

The packing of procedure parameters into a message packet RPC [5/10] Marshalling The packing of procedure parameters into a message packet The RPC stubs call type-specific procedures to marshall (or unmarshall) all of the parameters to the call Representation needs to deal with byte ordering issues, strings, alignment, etc. Pentium SPARC

RPC [6/10] Interface Definition IDL (Interface Definition Language) Defines the interface of server program e.g., names, parameters, and types Files interface in Sun XDR(IDL) /* PrintSquare service interface definition in file square.x */ program SQUAREPROG { version SQUAREVERS { int PRINTSQUARE(string) = 1; } = 1; } = 99; # of bytes returned version # program #

RPC [7/10] RPC Programming (Sun RPC) HP RPC IDL HP RPCGEN Interface Compiler Client Stub Server Stub Header File C Compiler Client Process Server HP RPC Runtime Library square.x rpcgen square.x square.h Program Client.c Server.c client server square_svc.c square_clnt.c 21 21

RPC [8/10] RPC Programming in C – Sun RPC (1/3) Code Example: PrintSquare Client Client.c #include <stdio.h> #include <rpc/rpc.h> #include “square.h" main( argc, argv ) int argc ; char *argv[] ; { CLIENT *cl ; int *result ; char *server ; char *message ; if( argc != 3 ) { printf( "Usage : %s host message \n", argv[0] ) ; exit( 1 ) ; } server = argv[1] ; message = argv[2]; cl = clnt_create(server, SQUAREPROG, SQUAREVERS, "tcp" ) ; // get a client handle if( cl == NULL ) { clnt_pcreateerror(server) ; exit( 1 ) ; } // unable to contact server result = printsquare_1(&message, cl) ; if( result == NULL ) { clnt_perror(cl, server) ; exit( 1 ) ; } if( result == 0 ) { printf( "%s : %s could not print your messgae \n", argv[0], server) ; exit( 1 ); } printf( "Returned Message %d !!!!!\n", *result ) ; exit( 0 ) ; }

RPC [9/10] RPC Programming in C – Sun RPC (2/3) Code Example: PrintSquare Server Server.c #include <stdio.h> #include <rpc/rpc.h> #include “square.h“ int *printsquare_1_svc(msg, req) char **msg; struct svc_req *req; { static int result; int x = atoi(*msg); printf("%d Recieved \n", x); result = x * x; printf("Transfer Processing Message.....\n"); return (&result); }

RPC [10/10] RPC Programming in C – Sun RPC (3/3) Code Example: Compile & Run RPCGEN $> rpcgen square.x Generated files – square.h, square_svc.c, square_clnt.c Server program $> cc Server.c square_svc.c –o server Client program $> cc Client.c square_clnt.c –o client

Outline Overview – Distributed Programming Socket RPC CORBA References

CORBA [1/26] Object Management Architecture (OMA) A standard architecture for distributed programming Developed by the industry consortium OMG CORBA services Fundamental services e.g., object location (naming) Standard service interfaces (horizontal) Basic information system services e.g., transactions, persistence Standard domain interfaces (vertical) Interfaces for special application domains e.g., medical, telecommunication Application objects – not standardized 26

CORBA = Common Object Request Broker Architecture CORBA [2/26] What is CORBA? CORBA = Common Object Request Broker Architecture ORB (Object Request Broker) standard The core of the OMA The goal of CORBA Location transparency Interoperability – platform-independent, language-independent 27

Language-independent CORBA [3/26] CORBA Standard Interface : IDL (Interface Definition Language) Standard Communication Protocol : IIOP (Internet Inter-ORB Protocol) Language-independent service interfaces IDL Interface C++ IRIX HP-UX SmallTalk Alpha NT Ada Visual C++ NT Java Java OS AIX Solaris MVS COBOL ORB = IIOP + IDL 28

RPC CORBA CORBA [4/26] RPC vs. CORBA When a specific function is called, the data types of parameters are fixed Language dependent CORBA The data types of parameters are more flexible by polymorphism Language independent Dynamic method invocation & dispatching 29

CORBA [5/26] CORBA History 1.0~1.2 (1991.10 ~ ) CORBA object model (Core 92) IDL & mapping from IDL to the C language APIs for interfacing to the ORB Interfaces for the Basic Object Adapter (BOA) and memory management 2.0~2.3 (1996.8 ~ ) General Inter-ORB Protocol / Internet Inter-ORB Protocol Portable Object Adapter (POA) Mapping from IDL to Java, Cobol, Ada, Smalltalk, C++ 2.4~3.0 (2000.10 ~ ) Java and Internet integration Asynchronous messaging and QoS control Minimum, fault-tolerant, and real-time CORBA 30

CORBA [6/26] CORBA Architecture 31

CORBA [7/26] Main CORBA Features Object Request Broker (ORB) Interface Definition Language (IDL) Inter-ORB protocols Object Adapter Stub & Skeleton Interface Repository Dynamic Invocation & Dispatching 32

CORBA [8/26] Object Request Broker Server Client Object Request Broker (ORB) CORBA object bus The key to location transparency The roles of ORB Routing the client’s request and the server’s reply Management of the Interface Repository a distributed database of IDL definitions Client side services for converting remote object references to and from strings Client side dynamic invocation of remote objects Server side resource management – object activation & deactivation invoke & response ORB 33

CORBA [9/26] Interface Definition Language Interface Definition Language (IDL) Object service specification for interoperability Only to define interface signatures (not implementation) The key to programming language transparency Most OO concepts support (e.g., multiple inheritance) C C++ Java … C C++ Java … IDL IDL Client Server ORB (Object Request Broker) 34

CORBA [10/26] Inter-ORB Protocols General Inter-ORB Protocol (GIOP) Specifies a set of message formats and common data representations for communication between ORBs Internet Inter-ORB Protocol (IIOP) Specifies how GIOP messages are exchanged over a TCP/IP network C++ Smalltalk Ada OLE . . . . Java Network 35

CORBA [11/26] Object Adapter Serves as glue between object (servant) & ORB The roles of Object Adapter Object registration & management Inter-operable Object Reference (IOR) generation Request dispatching from server-side ORBs to the servants of target objects Basic Object Adapter (BOA) Vendor-specific implementation  low portability Replaced by Portable Object Adapter (POA) 36

CORBA [12/26] Stub & Skeleton Stub (client side) Generated from IDL compiler in client’s language Acts as a local proxy for the remote object Marshalls data to be send & unmarshalls result One client stub instance per instance of remote object Skeleton (server side) Generated from IDL compiler in server’s language Unmarshalls request data & dispatch request to servant & marshalls reply data Used by the POA 37

CORBA [13/26] Interface Repository A distributed database of IDL definitions Used for performing operations on objects whose interface is not known at compile time Knowing interfaces of all objects a priori may be impractical Independently developed components Fast changing parts of system Dynamic manipulation Allows CORBA dynamic invocation 38

CORBA [14/26] CORBA Invocation Static Invocation Interface Using pre-compiled static stub High performance Dynamic Invocation Interface Using dynamic invocation High flexibility The interfaces for dynamic invocation & dispatching Dynamic Invocation Interface (DII) Dynamic Skeleton Interface (DSI) 39

CORBA [15/26] Dynamic Invocation Interface Dynamic Invocation Interface (DII) To invoke remote objects without having stubs Generic run-time invocation A generic stub is used DII steps Search & fetch an interface name & method description from an Interface Repository Construct an argument list & a request Remote method invocation 40

CORBA [16/26] Dynamic Skeleton Interface Dynamic Skeleton Interface (DSI) To dispatch request to remote objects without having skeletons Generic run-time invocation A generic skeleton is used 41

CORBA [17/26] CORBA Programming IDL Client developer Server developer IDL compiler Client “stub” Source IDL compiler Server “skeleton” Source Client Program Source Compile & Link (Java, C++, PL1, COBOL, …) Compile & Link (Java, C++, PL1, COBOL…) Client Server 1. Write IDL interface 2. Compile the IDL interface using an IDL compiler in your programming language 3. Write server/client program using generated skeleton/stub 42

CORBA [18/26] CORBA Programming Code Example: IDL Interface Hello.idl interface Hello { string sayHello(in string name); }; CORBA ORB used in this example C++ – omniORB (http://omniorb.sourceforge.net) Java – Java SDK 43

CORBA [19/26] CORBA Programming – using Naming Service Code Example: Hello Server in C++ (1/3) HelloServer.cpp [1/3] #include <iostream> #include <cstdlib> #include "Hello.hh" using namespace std; class Hello_i : public POA_Hello { public: inline Hello_i() {} virtual ~Hello_i() {} char* sayHello(const char* name); }; char* Hello_i::sayHello(const char* name) { char* buffer = CORBA::string_alloc(256); if (buffer == NULL) return NULL; sprintf(buffer, "Hello, %s!", name); return buffer; } 44

CORBA [20/26] CORBA Programming – using Naming Service Code Example: Hello Server in C++ (2/3) HelloServer.cpp [2/3] int main(int argc, char **argv) { // creates & initializes the ORB CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); // get RootPOA references CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); // activate Hello CORBA object Hello_i* myhello = new Hello_i(); PortableServer::ObjectId_var myhelloid = poa->activate_object(myhello); obj = myhello->_this(); CORBA::String_var sior(orb->object_to_string(obj)); cout << (char*) sior << endl; 45

CORBA [21/26] CORBA Programming – using Naming Service Code Example: Hello Server in C++ (3/3) HelloServer.cpp [3/3] // bind object to name service CORBA::Object_var obj2 = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var nc = CosNaming::NamingContext::_narrow(obj2); CosNaming::Name name; name.length(1); name[0].id = CORBA::string_dup("Hello"); name[0].kind = CORBA::string_dup("Object"); nc->rebind(name, obj); myhello->_remove_ref(); PortableServer::POAManager_var pman = poa->the_POAManager(); pman->activate(); orb->run(); return 0; } 46

CORBA [22/26] CORBA Programming – using Naming Service Code Example: Hello Client in Java HelloClient.java import org.omg.CosNaming.*; import org.omg.CORBA.*; public class HelloClient { public static void main(String args[]) { try { ORB orb = ORB.init(args, null); org.omg.CORBA.Object namingContextObj = orb.resolve_initial_references("NameService"); NamingContext namingContext = NamingContextHelper.narrow(namingContextObj); NameComponent[] path = { new NameComponent("Hello", "Object") }; org.omg.CORBA.Object helloObj = namingContext.resolve(path); Hello helloRef = HelloHelper.narrow(helloObj); String hello = helloRef.sayHello("World"); System.out.println(hello); } catch (Exception e) { e.printStackTrace(); } 47

CORBA [23/26] CORBA Programming – using Naming Service Code Example: Makefile for C++ Server Compile CC = /usr/bin/g++ CPPFLAGS = -g -c LDFLAGS = -g OMNI_HOME = /usr/local OMNI_INCLUDES = -I$(OMNI_HOME)/include OMNI_LIB_DIR = $(OMNI_HOME)/lib OMNIIDL = $(OMNI_HOME)/bin/omniidl INCLUDES = $(OMNI_INCLUDES) LIBS = -lomniORB4 -lomnithread -lomniDynamic4 OBJECTS = HelloSK.o HelloServer.o all Server: $(OBJECTS) $(CC) $(LDFLAGS) -o HelloServer -L$(OMNI_LIB_DIR) $(OBJECTS) $(LIBS) HelloSK.o: HelloSK.cc Hello.hh $(CC) $(CPPFLAGS) $(INCLUDES) HelloSK.cc HelloServer.o: HelloServer.cpp Hello.hh $(CC) $(CPPFLAGS) $(INCLUDES) HelloServer.cpp HelloSK.cc: Hello.idl $(OMNIIDL) -bcxx Hello.idl clean clean_all: rm -fr *.o rm -fr core rm -fr *.hh rm -fr *SK.cc rm -fr HelloServer 48

Compile the server code – make using the makefile CORBA [24/26] CORBA Programming – using Naming Service Code Example: Compile Compile the server code – make using the makefile Compile the client code 49

Run C++ name server (omniNames) CORBA [25/26] CORBA Programming – using Naming Service Code Example: Run Name Server Run C++ name server (omniNames) 50

CORBA [26/26] CORBA Programming – using Naming Service Code Example: Run Server & Client Program Run the server program Run the client program 51

Outline Overview – Distributed Programming Socket RPC CORBA References 52

References Sams’ Teach Yourself CORBA in 14 Days http://ovir.icp.ac.ru/corba/books/Teach14/ The omniORB version 4.1 User’s Guide http://omniorb.sourceforge.net/omni41/omniORB/ 53