Hi George,

many thanks for your comments.

Please find my comment at the end of your mail.

Il 12/04/2019 00:54, George Michaelson ha scritto:
Personally, I felt the conversation at the microphone about client/server capability was a huge misunderstanding. You did not seem to "get" part of what was being said, about the need for a client to be able to know what a server can do (in the future) beyond what a server has done (now, or in the past).

If we admit two forms of pagination/presentation/truncation, and we do not require all clients to implement both, then we can wind up in a world where a client cannot handle what a server can do. A capabilities query is a mechanism to inform server and client mutually what they can do. Telnet "options" negotiation for example, or the SMTP HELO exchange is not one-sided. How a client and server "dance" around this, informs what they both know about each other. There is a proffer and a response. Yes, the actual underlying protocol here is atomic and there is no implied state because we didn't implement session. But that doesn't mean both client and server cannot "know" about each other, because implicit state they hold or construct forms the session information, or the client holds all information, and varies its future behaviour to the atomic server, irrespective. (one sided, is simpler for servers, but puts more work on the client)

If we admit two forms of pagination a client should be entitled to discover in advance which model to expect: this determines future actions. You appeared to say you wanted all clients to be ready to handle EITHER case.

If I misunderstood or mis-characterise what you said, I welcome clarification.

I'm aware that we need a mechanism for clients to indentify which capabilities an RDAP server provides. I'm working about that and, at next ROW, I'll present a possible solution based on the use of most popular REST specification languages. Since RDAP responses are provided by a REST service I think we don't have to invent anything already existing.  It doesn't simply consist in providing a flat array of tags each one identifying a specific capability beacuse server policies can change according to the user profile in both requests and resonses.

That being said, pagination method is basically something that a client can't choose. It's true that, if a server provides offset and limit operators, they can be used individually in the initial query but, in most of use cases, they are used by the server to provide a ready-made link to the next page.  So a client will use that link  without considering how pagination is implemented. This concept is evident when a server implements the cursor pagination: no client will be able to submit the initial query to a server by setting a value for the cursor parameter, it will simply use the link returned in the paging_metadata element to scroll the result set. This is the reason why I told in my presentation that servers would be allowed to implement their own pagination method, even from query to query.


Anyway, I think there is a solution enabling servers to implement their own pagination method by providing a single parameter. Since the cursor value is opaque, this means that the pagination strategy implemented by a server is completely unknown to clients. Right?! I mean, it could correspond either to a physical link to a storage area maintained across the queries or to a specific value of the key property supporting  the seek method.

The cursor value could also be (this is the idea) a codification of offset and limit information (maybe the sort criteria too, if any) . For example, in the following query, the cursor value is the Base64 encoding of "offset=100,limit=50":

*https://example.com/rdap/domains?name=*nr.com&cursor=b2Zmc2V0PTEwMCxsaW1pdD01MAo=**
*

Obviously, this is an example, servers are hopefully expected to implement an encoding/decoding method less breakable than Base64, maybe based on symmetric encryption.

This solution could also allow servers to change the pagination method without announcing anything to the clients.

Therefore, clients would only know the cursor parameter. Offset and limit parameters could be no longer used individually but, I guess, nobody would complaint about that.


What do you (and WG) think about?


Regards,

mario


-George

--
Dr. Mario Loffredo
Servizi Internet e Sviluppo Tecnologico
CNR - Istituto di Informatica e Telematica
via G. Moruzzi 1, I-56124 PISA, Italy
E-Mail:[email protected]
Phone: +39.0503153497
Web:http://www.iit.cnr.it/mario.loffredo

_______________________________________________
regext mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/regext

Reply via email to