Firstly, thanks for including me in your discussions, it an honour, and thanks for the reference on the document to my CPRepWatcher!
Looking a the document, you have put together some excellent methods for the webservice, some comments i would have are;
1) The member structure should be maybe be modified to remove some elements; e.g. the Twitter Name. There should be another method that can be called to get this information, if Chris adds other associations in the future, e.g. LinkedIn, Facebook, AnOther, then there would be a requirement for the structure to change. Perhaps have a GetMemberExternalAsscociations that returns a KeyValue Pair string dictionary, where each entry would have the site as the key, and the member name or reference url as the value e.g. Twitter=daveauld
2) I would also remove the things like the post counts average ratings etc, and have them associated with a separate method, for similar reasons to #1 above. Keep the GetMemberInfo to the basic info that is unlikely to ever change.
3) The GetMemberRating, should possibly also be changed to a dictionary list of key/value pairs, for the same reasom, as the site evolves, more items may be added, and the structure would have to change, by using a dictionary, the client would only then have to add another handler for the key value
4) I take it the count parameter in the GetMembersByxxxx returns the number of items being requested? Or is this also updated by the return call to return the number actually returned? Possibly need to limit this to MaxNumber internally per call, also, if you called 1000 and you started at 500 from the end, if it returned only 500, the client would know there are no more and to stop querying during recursive calls.
5) What about a GetMemberCount(); to return the number of site members.
Thats it for the moment!
Find Me On: Web
CPRepWatcher now available as Packaged Chrome Extension, visit my articles for link.