Return-Path: Mailing-List: contact soap-dev-help@xml.apache.org; run by ezmlm Delivered-To: mailing list soap-dev@xml.apache.org Received: (qmail 30662 invoked from network); 8 Aug 2000 21:04:16 -0000 Received: from smtp-out001.onemain.com (HELO mail007.mail.onemain.com) (63.208.208.71) by locus.apache.org with SMTP; 8 Aug 2000 21:04:16 -0000 Received: (qmail 5709 invoked from network); 8 Aug 2000 21:03:44 -0000 Received: from 216-224-145-19.thegrid.net (HELO ibs?10.THE?MOON) ([216.224.145.19]) (envelope-sender ) by mail007.mail.onemain.com (qmail-ldap-1.03) with SMTP for ; 8 Aug 2000 21:03:44 -0000 Received: by IBS_10 with Internet Mail Service (5.5.2650.21) id ; Tue, 8 Aug 2000 13:59:12 -0700 Message-ID: <712324ACD27BD011B17C0080AD17D38A1B5D7F@IBS_10> From: James Snell To: "'soap-dev@xml.apache.org'" , "'soap-user@xml.apache.org'" Subject: Apache C++ SOAP Implementation Proposed Architecture Date: Tue, 8 Aug 2000 13:59:11 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2650.21) Content-Type: text/plain; charset="iso-8859-1" X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N Here's what I'm thinking in terms of the class architecture for an Apache C++ SOAP implementation (I've already started on it, but I'd like to get some validation from the group before I put too much work into it) === SOAP Envelope Objects ------------------------------------- EnvelopeWriter Creates and builds an instance of the SOAPEnvelope object EnvelopeReader Parses and Reads an instance of the SOAPEnvelope Object SOAPEnvelope Represents any Valid SOAP V1.1 Envelope SOAPHeader Base Class representing any valid SOAP V1.1 Header element. Any extensions to the SOAP implementation based on extended SOAP Headers would derived from the SOAPHeader Object. For example, if you wanted to add security support into the SOAPEnvelope based on SOAP Headers then you would derive a SOAPSecurityHeader class from the SOAPHeader class, etc. I'll give more details on this later. SOAPPayload Base Class representing any valid SOAP V1.1 Payload. Works the same way as the SOAPHeader. The SOAPPayload object can be used directly to edit/read the payload of the SOAP Envelope, or you can derive new classes from the SOAPPayload to create Message specific payload handlers. For example, if you intend to use SOAP for RPC, then you might derive a SOAPRPCPayload class from SOAPPayload and add methods such as "setMethod" and "setParameter", etc. Transport Objects ------------------------------------- EnvelopeTransport Interface representing the base functionality that all SOAP Envelope Transport instances must expose HTTPTransport HTTP Based Envelope transport derived from the EnvelopeTransport interface HTTSTransport SMTPTransport Service Description Objects ------------------------------------- DescriptionReader Interface representing the base functionality that all DescriptionReader instances must expose DescriptionWriter Interface representing the base functionality that all DescriptionWriter instances must expose NASSLReader Class capable of parsing and reading NASSL documents. Through the DescriptionReader interface, the NASSLReader will be capable of generating valid SOAPEnvelope objects NASSLWriter Class capable of generating NASSL documents SDLReader SDLWriter SCLReader SCLWriter Dispatcher Objects ------------------------------------- MessageDispatcher The Message Dispatcher is a special object that uses a configuration XML document to link the contents of a SOAPEnvelope to a specific set of code components (Handlers) specifically designed to handle the messages semantics. For example, a message intended for standard RPC use would use a RPCHandler. Handler Objects ------------------------------------- HeaderHandler Interface representing the base functionality that all SOAP Header Handlers must expose. A Header Handler is any component specifically designed to process the semantics of a particular SOAP Header. Header Handlers are linked to a Header through the use of a configuration XML file used by the Message Dispatcher Object PayloadHandler Interface representing the base functionality that all SOAP Payload Handlers must expose. A Payload Handler is any component specifically designe dto proces the semantics of a particular SOAP Payload. Payload Handlers are linked to a Payload through the use of a configuration XML file use by the Message Dispatcher Standard Handler Instances (derived from PayloadHandler) ------------------------------------- CRPCHandler Handles RPC messages to generic C++ classes exposed by DLL's JRPCHandler Handles RPC messages to java classes COMRPCHandler Handles RPC messages to COM objects CORBARPCHandler Handles RPC messagers to CORBA objects