Project 4: CORBA

Start date 3 April, Due beginning of class April 19.

This project has several parts:

  1. Implment a simple service on top of CORBA.
  2. Implement a client that calls the service.
  3. Implement a client that calls your service, as well as other peoples services, using the Dynamic Invocation interface.
  4. Register your service with the naming service so that other people's clients can find and utilize your service.

To make it interesting, you will each have a different service to implement (I will email you a description of your service). The services themselves will be simple - e.g., take two integers, and return the sum. However, since all the services will be different (including having different interfaces), you will need to learn about and build a dynamic invocation to use the interface. You will need to define the IDL, as I will provide only a high-level description.

What makes this difficult is that you must register with the naming service in a way that allows others to discovery your service and your interface, allowing them to build a dynamic invocation. Read up on the Dynamic Invocation Interface, Interface Repository, and Naming Service. You might also find the discussion of Dynamic Management of Any Values helpful.

Collaboration

You should share things you learn with others in the class (e.g., pointers to good resources for CORBA programming). However, to make this more interesting, please do not share the IDL or information on the service you are implementing other than through registration with the ORB.

There will probably need to be some collaboration necessary on how the name service will be used to find your services -- e.g., setting a top level in the hierarchy so that your client just needs to iterate through the services in that top level. As you have ideas, write them up as a proposal and send them to the course mailing list. By the end of next week, I will provide a "final architecture" based on the ideas to date.

CORBA server

The server we will be using is ORBIXWeb. There are instructions from its previous use in 542 here. DO NOT FOLLOW THESE INSTRUCTIONS VERBATIM. We won't want everyone to run a separate ORB. I will set up a daemon. However, the materials in /p/OrbixWeb/ should be useful.

I believe the ORBIXWeb license we have only supports Java. If you aren't happy with that, you are welcome to install your own ORB (ORBacus is freely available for university use, I believe) - as long as you communicate with the ORBIXWeb server. I'd be happy to help set it up in the same domain such that they have a common name service and interoperate seamlessly.

Preliminary Deadline

You should have the first two parts (service and simple client) done by April 12. Please either turn in the code by 5pm on that day, send me a pointer to how to execute it, give a demo, or otherwise show me that you have made it that far. This part will not be graded, but late completion will be taken into account when making borderline decisions on the score for the overall project.

Scoring

Correct completion of parts 1 and 2 is worth 2 points. Calling at least one service using the dynamic invocation interface (without prior knowledge of the service encoded in your program), or registering your service such that at least one client can find/invoke it without prior knowledge, brings you to 3 points (e.g., you can get three points by producing a service that someone else calls, even if your client doesn't use the dynamic invocation interface at all). Both brings you to 4. Successfully calling all reasonably registered services, and being callable by all reasonable clients, brings a score of 5. These scores are for reasonably clean, well-documented solutions - exceptionally well documented and tested solutions without full functionality can get higher credit than the above, and poorly documented and tested solutions may not get what they would otherwise deserve based on functionality.

Turning in files

While email is accepted, the turnin command is preferred (e.g., turnin -c cs603 directoryname).


Valid XHTML 1.1!