Dear Wasaq, On Sun, Sep 6, 2009 at 8:28 PM, Waqas Hussain<[email protected]> wrote: > Some problems with the XEP: > > 1. The XEP basically allows a service to expose a set of global functions. > There is no possibility for function namespaces. This is similar to the SOAP > over XMPP XEP, where you can have only one service end point per-JID (which > I consider a non-minor deficiency).
Can you elaborate on this? If you run a service discovery on ws1.bmc.uu.se you will see various JIDs, each with one and often more functions... > 2. The schemata discovery protocol requires at least two IQ requests per > exposed function. For a service exposing a large number of functions, this > makes it impractical to use for generating marshalling code at runtime. I do not understand how you see the number of needed IQ requests to make generation of marshalling code at runtime difficult. Could you please explain? > And > there’s no allowance for caching the schemas (i.e., you have to load all of > them every time, since there is no assurance that it didn’t change since you > last checked). For something like Prosody, where we might be exposing > hundreds of functions, which can appear and disappear when modules > (including third-party modules) are loaded/unloaded, this makes for some > nastiness. As far as I know there is no standard for versioning on XML schemata, other than with the schema itself. Indeed, the current proposal does not propose a mechanism for doing this, and defines the schemata itself is 'contract' for the service interaction. I do understand that if you wish the change that contract regularly *and *you wish the services to keep the same JID, that this places stress on the clients. However, I am not sure that the XEP should provide best practices for dealing with service providers with such wishes. If we could get to, or reuse, a different XEP for specifying detailed versioning information for schemata, this would have been useful indeed. But in the lack thereof, I think that using the XML Schemata itself as exact versioning is a wise choice, even though it for larger schemata this puts some stress on the bandwidth. That said, using the current XEP, you could simply consider using <xs:include/>'s which gives you exact control over the schemata versions your services are using. I think this provides the clients exact caching control on included schemata. Looking forward to hearing from you about the things that were not clear to me in your comments, Egon -- Post-doc @ Uppsala University Blog: http://chem-bla-ics.blogspot.com/
