[Web-SIG] Web Container Interface
Ian Bicking
ianb at colorstudy.com
Fri Jan 30 19:37:11 EST 2004
On Jan 30, 2004, at 5:46 PM, Phillip J. Eby wrote:
>> Otherwise I suppose I'm okay with the rest (even if I would like a
>> real reference to the gateway). I can implement Webware using just
>> this interface. The open keyword arguments allow me to extend this
>> as well, e.g., the Webware Application displays AppServer
>> configuration parameters in the web control panel, so I really would
>> like a reference, even if it's not required. So actually I'm A-OK
>> with the proposal.
>
> My intention was that additional keywords be reserved for future WSGI
> versions, *not* become a way to sneak unspecified information into the
> interface. Private communications are always possible through
> framework-specific mechanisms, such as sniffing for a
> 'giveMeWebwareInfo()' method that the container can call, or
> implementation of a particular interface, subclassing from a
> particular base, etc. etc.
I had a feeling you'd react this way ;) But I don't really see why it
would be so bad. AppServer calls:
application.setup(..., webKitAppServer=self)
Application has:
def setup(..., webKitAppServer=None, **kw):
It's highly transparent what's happening. Since the spec leaves room
for future extension, I assume applications are required to accept
keywords they don't understand, and that they will ignore those
arguments, and that applications must provide default arguments for
values so that they support containers that don't provide those
arguments.
> Thing is, your Application won't be able to display that AppServer
> stuff *unless* it's being run under an AppServer. And, there's no
> point in the AppServer telling non-Webware applications they're being
> run under it. So, it should introspect you using Webware-specific
> techniques, and call Webware-specific methods in that event. In other
> words, a typesafe mechanism agreed upon by both sides of the
> (Webware-specific) protocol.
Obviously Application would have to accept None in place of the
AppServer, and react accordingly. That's my problem to deal with, not
the spec's.
> If it's not defined in the standard, I don't want it allowed by the
> standard. Let it be some other standard, like the "Webware service
> metadata extension to WSGI", that defines how you can make your
> service receive extra data when it's run in a Webware container.
> There's nothing wrong with having such protocol extensions, but they
> should not be part of the base protocol's methods. And I don't want
> to build "bags of data" into the base protocol with "extension info"
> that you then have to sift through to find things, when we could
> easily just have different methods that are part of other protocols.
The one keyword is the only addition I'd make. Everything else would
be between Application and AppServer. Again, I really don't see the
problem. I don't see where this would cascade into some unmaintainable
mess.
> (Indeed, I'm beginning to wonder if WSGI methods should all have some
> sort of prefix or suffix on them to help thoroughly disambiguate them
> from extended protocols. E.g. 'runWSGI()', 'setupWSGI()' etc.)
I think setup() is rather generic, though it could be setupCGI and it
would be fine. I think you are overreacting. And hey, I just said
what someone else was eventually going to think of anyway.
--
Ian Bicking | ianb at colorstudy.com | http://blog.ianbicking.org
More information about the Web-SIG
mailing list