| Version: | 1.1 |
|---|---|
| Author: | Ivan R. Judson <judson@mcs.anl.gov> |
| Status: | Draft |
This document proposes design modifications to the existing Core Toolkit Design to make it more solid, with a factoring that allows an easier transition to GT3 or other network interfaces. It applies well known patterns, leveraging the pattern terminology to keep the code as clear as possible and also abstracts the persistence solution for the venues.
There are a few reorganizations that can be done within the AG module. These will result in a reasonably clean and simple set of logical sub-modules with interfaces defined among them. The separations that are proposed in this enhancement include:
The proposed naming is for interfaces to have the name format:
- <Network Protocol><Class Name>I, or
- <Network Protocol><Class Name>Interface
(e.g. SOAPVenueServerI or SOAPVenueServerInterface) then the Venue Server implementation can retain the name VenueServer. This allows the creation of many interfaces with clear naming, for the same implementation object and the additional syntax is retained where it is needed for clarification.
- a constructor that registers the implementation with interface and the interface with the implementation, and
- an authorization method that is used by default, the proposed policy is that the default authorization method disallow incoming actions.
This is the appropriate place for it to go.
Updating these pieces of software should make it easier for us to maintain, and it will make it easier to migrate in the future.
Modified:
These objects need to have their interfaces separated from the implementation.
Removed:
New:
SOAPInterface:
def __init__(self, impl):
def _authorize(self, *args, **kw):
VenueServer
in the __init__ method, this object creates a SOAPVenueServerI object passing self. This effectively creates a single SOAP interface (self.interface), later when we support multiple interfaces per object this should be removed and replaced with self.interfaces = list() and AddInterface(self, interface). The server also has a authorize(subject, actionName) that exposes the mechanism for the SOAP layer to do authorization.
Venue
in the __init__ method, this object creates a SOAPVenueI object passing self. This effectively creates a single SOAP interface (self.interface), later when we support multiple interfaces per object this should be removed and replaced with self.interfaces = list() and AddInterface(self, interface). The venue also has a authorize(subject, actionName) that exposes the mechanism for the SOAP layer to do authorization.
None, this set of modifications should in no way affect the security of the system.
The refactoring in this proposal should not affect the interoperability of the client with servers and services. This is an internal refactoring.
This document is Copyright 2003, The University of Chicago/Argonne National Laboratory.