Marco Bizzarri wrote at 2008-8-1 14:57 +0200:
>I need to implement an interaction with an external web service.
>The external webservice basically can either provide or accept
>messages from my zope application. The messages are either produced by
>my application (and need to be "sent" to the external application via
>web service) or produced by the external application, and must be
>processed by mine.

When your application is the client ("sent"), then you
can use any of Python frameworks (e.g. "ZSI", "soaplib") to
interface between Python and the webservice (I fear all these
frameworks by now support only SOAP 1.1, not the current
SOAP 1.2).

When your application must act as server, you have
several options (all including some webservice framework)

  * set up an additional (non-Zope) server with the support
    of the above mentioned frameworks, let it implement
    the services.

    If the service needs to access ZODB data, it may
    be implemented as a ZEO client (this means, that
    you must use ZEO as storage provider for both
    your Zope and your service).

  * implement WebService demarshalling/marshalling
    in a Zope object. Then, the demarshalling happens
    when the Zope object is traversed. Traversal also
    changes the response to perform the demarshalling
    of the result.

    This requires some fix of "ZPublisher" (as it stupidly
    interprets each POST with content-type "text/xml" als
    an XML-RPC request.

  * implement an SOAP ZServer

The first option is probably the easiest.

We have implemented the second option. The following list
demonstrates the complexity in terms of lines, words and characters:

newdm: wc *.py
    189     650    6709
     10      20     197
     27      71     745
    110     393    3727
     47     128    1286
    161     613    5097
    132     517    4593
    208     721    6645
     19      46     464
     86     322    2667
    989    3481   32130 total

The third option is probably the most difficult one.

Zope maillist  -
**   No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to