Features and Properties versus Extensions

Hi all,

I wanted to ask some clarifying questions about features and properties as I don't think I'm understanding them very well.  
I thought about how a developer/user could use them in the http properties work I did, and I couldn't quite get to closure.

Imagine that I create a property "httpauthentication", and I then adorn this property in a couple of http binding operations and a binding.  Let's pick a simple example with a shorthand for setting the value.
<binding>
  <property name="httpauthentication" value="basic"/>
  <operation name="op1">
     <property name="httpauthentication" value="digest"/>
  </operation>
  <operation name="op2">
     <property name="httpauthentication" value="digest"/>
  </operation>
  <operation name="op3"/>
</binding>

My main question is, what kind of expression do I use to get the value of the httpauthentication in the various bindings?  Say I'm a consumer and I want to find out what HTTP authentication algorithm needs to be used to communicate with the service.  If I use XPath, I have to get the value of the property element with the name=httpauthentication, ie "/binding/operation[@name="op2"]/property[@name="httpauthentication]/value. If it doesn't exist, then I have to follow the f&p algorithm, ie go up the tree.   

It seems to me that this is a new data model layered on top of the XML data model, and I'd probably actually want a new query language for it or at least an xpath function.  What I'd really like is to ask "get the property with name=httpauthentication in the binding element and follow the f&p rules to generate it".  Something like "property[@name="httpauthentication"]/binding/operation[@name="op2"" where the property function evaluates the name in the context that it is given.

Is this roughly right?

Secondly, it seems that you would really need this new function to reasonably use features and properties.  This would also help to do conformance testing.  You could test whether the properties were correctly set would be to have some kind of function to use them.  I think that this is somewhat related to the issues that Schema and Query did, which is to have the query language layered on top of the schema language.  And fwiw, I'm not sure that was the right decision given how many problems that Query has had with Schema.  It seems very difficult to define the data model without defining the query language on the data model.  

Has there been any talk about doing this?

Do setting of properties replace duplicate properties, as I'm showing in the case of digest replacing basic, or are they composable in any way? 

In the notion that properties have a tree structure, are there scenarios where the "parent" function would be needed?  The property  tree structure doesn't directly map onto the WSDL tree structure, so it could be useful to go "up" the tree via properties rather than via the wsdl tree structure.  Something like "what's the value of the parent of the binding operation".  Has this been talked about?

In the case of the HTTP authentication, I thought about the advantages of using f&p rather than wsdl extensions.  I tried really hard, and squinted my eyes a lot, but I couldn't see the advantages to using fp.  There is a potentially nice feature that I could express that a value for http authentication is required in the binding operation, but I had a couple of questions on that.

The ability to specify a constraint in a property seems similar to XML Schema minOccurs="1" functionality but done at runtime on the property component model.  Is this roughly right?  

Now, let's say I used the constraint.  If I'm a WSDL author and I put the required in the binding, then I want to make sure that the binding operations set the value.  Presumably I would do some kind of "propertyValidation" step on the WSDL document to ensure that all the required properties were set.  Is this PropertyValidate() function what people are thinking of?

Now going further down the rabbit hole, I have my propertyValidate() function.  I'd expect that the propertyValidate() function would fluff up the property component model that my propertyEvaluate() Xpath would use.  This is exactly the way that Schema Validation results in a PSVI that can be XQueried/Xpathed against.  Which leads me to the question about what the Post Property Valid Infoset (PPVI) looks like.  I'd expect that it would need to have the same kind of PSVI stuff like outcomes, ie "required property not available".  Where are we at on the thinking of the data model for the PPVI?

This message might come across as an attack on features and properties, but it really isn't intended that way.  I'm asking the same hard questions that were asked of the XML data model that have resulted in XPath, Xquery, Schema, PSVI, etc.  These are all tied together and dependent.  In the XML activity, we knew about the problems of not having the query functions for XML Schema and we knew that we'd create a working group for this.  

Now maybe y'all don't agree with the analogy that I'm drawing between XML and Features and Properties, or maybe the need for functions, validation models, PPVI, etc.  And that would be useful for me to know.

Cheers,
Dave

Cheers,
Dave

Received on Wednesday, 12 May 2004 20:42:43 UTC