axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Samisa Abeysinghe <>
Subject Re: Transport layer?
Date Mon, 24 May 2004 10:45:47 GMT
    I have been trying to write a base class for generated stubs with an API to get/set transport
    I found that AxisTransport::setTransportProperty(char*, char*) had an empty body. I filled
the methods (and commited) However, this means that the transport abstraction API is in place,
with no implemetation to test. 

    In current transport (used by client side) we have several layers:
Abstract class SOAPTransport implemented by AxisTrasport
Abstract class Transport implemented by HttpTransport
Sender and Receiver classes - used by AxisTransport to access Transport - these tow classess
nothing but wrap the send and recev API
Then there is Channel class, which really does the TCP/IP sockt handling

q1. Why do we need 2 abstract classes (SOAPTransport and Transport)? Why not only
q2. What classes define the new abstract transport API? (SOAPTransport alone or both SOAPTransport
and Transport)
q3. Why do we need Sender and Receiver? I do not think they are need at all (eliminate them)

We can cut down the four layers:
AxisTransport --> Sender/Receiver --> HttpTransport --> Channel

to just 2:
HttpTransport --> Channel
on top of AxisTransport API.


--- wrote:
>  Hi John,
> Sorry this mail was not replied to sooner.
> There is no API or UML design documented as yet. We will get around to
> this as soon as we can. Right now its a mad rush to the deadline, please
> bear with us.
> However I have started the transport and parser abstractions notes to be
> added to the documentation (see below).This is still work in progress and
> not yet been published to the site.
> I have tried to give a description of Transport and Parser abstractions.
> This also will be improved in due course.
> Rangika
> 1)Transport Abstraction -
>  Transport layer coding can be given in another interface.So that a user
> can create his/her own transport interface.For eg:MyAxisTransport.This is
> an instance of AxisTransport class which is independent of the transport
> type.
> The following 2 export functions have to be created in MyAxisTransport.
> Create Instance (Soap transport *pOut)
> Destroy Instance (Soap transport *pIn)
> When AxisServer or AxisClient and MyAxisTransport projects are compiled
> the relevant Dlls will be created. (By building AxisTransport in VC++
> distribution workspace AxisTransport.dll will be built)
> At run time AxisServer.dll or AxisClient.dll loads the created transport
> object through above mentioned  export functions
> Note:For AxisServer to run the following files should be there
>  AxisCPP.conf , Server.wsdd and Log file. For the client application these
>  files are not necessary
> 2)Parser Abstraction -
> Can dynamically select a parser (Xerces or Expat)at runtime.Since
> AxisServer or AxisClient and parser are compiled separately.
> A user can create his/her own parser For eg:MyXMLParser derived from
> XMLParser (AxisXMLParserXerces or AxisXMLParserExpat).
> The following 2 export functions have to be created in MyXMLParser.
> Create Instance ()
> Destroy Instance ()
> Then compile AxisServer or AxisClient and MyXMLParser projects in VC++
> Distribution workspace.Then the relevant Dlls will be created.
> Build the AxisTransport and AxisXMLParser projects,Which will build the
> AxisTransport.dll and AxisXMLParser.dll and also AxisTransport.lib and
> AxisXMLParser.lib in [CHECKOUT_HOME]\c\bin.
> 3)Then Copy AxisTransport.dll and AxisXMLParser.dll  to any location
> specified by your PATH environment variable.Better to paste them in
> [AXIS_HOME]\libs\ directory
> 4)Add the following lines to axiscpp.conf.
> If the selected transport is HTTP then ZZZZ will be the path to
> AxisTransport.dll (if the selected transport is SMTP then should give that
> path.)WWWW will be the path to AxisXMLParser.dll
> ie.
> AXISTRANSPORT_HTTP:[APACHE_HOME]\Axis\libs\AxisTransport.dll
> If the AxisTransport.dll and AxisXMLParser.dll paths are not given in
> axiscpp.conf then the hardcoded values will be used.For that set the path
> of these 2 in the PATH environment variable or copy them to the same
> location as the Client.exe.
> 5)When coding the client add the following libs to the library modules
> path of this project in addition to Axisclient.lib
> AxisServer.lib
> AxisTransport.lib & AxisXMLParser.lib.
> > Hi Folks,
> >
> > I understand that there are a lot of transport and parser abstractions
> > going on at the moment.
> > Could someone please publish the API's so that we can all see them prior
> > to
> > being coded.
> >
> > On this mailing list there are discussions about individual methods and
> > improvements but there never seems to be an overall view. Does anyone have
> > any UML models they can share? If not then the API's would be a good first
> > step.
> >
> > many thanks,
> > John.
> >
> >
> >
> >
> >

Do you Yahoo!?
Yahoo! Domains  Claim yours for only $14.70/year 

View raw message