- From: Jacek Kopecky <jacek@systinet.com>
- Date: Wed, 21 Nov 2001 11:16:33 +0100 (CET)
- To: Andrew Layman <andrewl@microsoft.com>
- cc: <xml-dist-app@w3.org>
Andrew,
if we resolve your first issue by means of type out of SOAP
Encoding, it automatically resolves your second issue because
that type is different from SOAP:Array (probably an application -
restriction thereof).
Even if we decide to keep partially transmitted arrays (the
original proposal), there has been some discussion that it's the
application that can provide the up-front clue to itself anyway
(because the application knows it's dealing with ptas or just
with arrays).
So to summarize:
My original proposal resolves 1 directly, and resolves 2 by
saying that applications know.
My counterproposal resolves both directly.
Yes there might be a different proposal with different handling
of your second issue while keeping ptas in SOAP Encoding. I just
feel it's adding unnecessary complexity.
Best regards,
Jacek Kopecky
Senior Architect, Systinet (formerly Idoox)
http://www.systinet.com/
On Tue, 20 Nov 2001, Andrew Layman wrote:
> There seem to be two issues here:
>
> 1. If only some elements from an array are to be encoded, how that
> should appear lexically.
>
> 2. Applications may benefit, perhaps substantially, if they have an
> up-front clue regarding whether a conventional array or an associative
> array is the more efficient storage.
>
> The first is addressed by the current SOAP section 5 rules; the second
> is addressed by various suggestions to make sparse arrays a distinct
> datatype or otherwise mark the containing element. I recommend that we
> not conflate the two issues.
>
>
>
> -----Original Message-----
> From: Jacek Kopecky [mailto:jacek@systinet.com]
> Sent: Tuesday, November 20, 2001 3:00 AM
> To: Alan Kent
> Cc: xml-dist-app@w3.org
> Subject: counterproposal on issue #144
>
> Alan,
> (the counterproposal is at the bottom of my text)
> it is true that ordinary native arrays cannot usually hold three
> states. On the other hand you don't want to use an ordinary array
> for an array of billion nulls and 42 values so you use a
> different type anyway.
> In WASP, we deserialize an array (any array) into Java array
> (putting nulls in the untransmitted positions) or our custom type
> representing a sparse array. Which is used depends on what the
> application expects and has in its interface.
> I don't know about VB, though.
> I also understand that sparse arrays can be represented as an
> other type, say an associative array (a map), which can be
> represented back as a fully transmitted array:
> <sparseArray xsi:type="ns:Map">
> <item><key>42</key><value>blah</value></item>
> <item><key>123456</key><value>foo</value></item>
> </sparseArray>
> This would not be as efficient as native SOAP sparse array, but
> it would be a hell of a lot more efficient than a fully
> transmitted array. And the point about being (linearly) less
> efficient than SOAP sparse arrays is very weak in XML.
> It may be possible to delegate partially transmitted arrays
> (ptas) to the XML Type Library and leave it out from SOAP. As
> maps, ptas could be even accepted as a de-facto standard risen
> from the interop activities.
> So yes, removing ptas from SOAP Encoding is a viable solution,
> after all. I think I can propose that as a counterproposal to my
> original proposal (ooops, too much proposing here). It means
> making array serialization rules about half as complex with no
> philosophical issues. It does not affect the resolution of issue
> 161 and the issue 117 would be automatically closed.
> If this passes, the credit should go to Alan for being stubborn
> in the right way. 8-)
>
> Jacek Kopecky
>
> Senior Architect, Systinet (formerly Idoox)
> http://www.systinet.com/
>
>
>
> On Tue, 20 Nov 2001, Alan Kent wrote:
>
> > On Tue, Nov 20, 2001 at 09:41:08AM +0100, Jacek Kopecky wrote:
> > > Alan,
> > > personally I agree with you that in-spec two-state arrays might
> > > be the right way to proceed.
> > > On the other hand, when we discussed the issue in the ETF, there
> > > was an equally strong push in the direction of "omitted may mean
> > > leave the current value in there, nil is a nil".
> >
> > I can understand this, I just think that forcing *all* arrays
> > to support 3 states per slot is an unnecessary burden.
> > I have to go right now, but think of languages like VBScript.
> > (I am NOT a VBScript expert by the way.) VBScript uses
> > Variants to hold values. It also supports null. If you want
> > to use a 3-state SOAP array, exposing this to VBScript becomes
> > non trival. You cannot just use an array.
> >
> > Java is the same story. With 2-state you can define Integer[]
> > (I am not a Java programmer either! :-) to be an array of
> > integer objects (I think!) where null can be stored in the array.
> > 3-state logic cannot be represented using native Java arrays.
> > Instead you must define a new class. Oh, but if you define a new
> > class, you must define a new class per array type (array of string,
> > array of boolean, array of struct X etc). Yes it can be done,
> > but boy is it messy. Its much nicer using the language's native
> > arrays.
> >
> > It just seems a real pitty that because of some small percentage
> > of usage (lets face it, parital arrays are not going to be common)
> > is going to have a big impact on the implementation of *all* array
> > types.
> >
> > So I strongly favor, for purely practical reasons, either making
> > them a separate type, or simplifying them so omitted is the same
> > is NIL (or remove them altogether and push them into application
> > semantics instead of putting them into the lowest level of SOAP).
> > I do not see why everyone's possible use for arrays needs to
> > be supported. If people want more complex types (such as partial
> > arrays), let them use an XML schema to encode the information.
> > The offsets/positions attribute approach is not the only way to
> > allow p-t-a arrays to be supported by soap.
> >
> > Got to go
> > Alan
> >
>
>
>
>
Received on Wednesday, 21 November 2001 05:16:36 UTC