for example, if in one of my methods we require the client to send us
a unique ID - we are relying on the client that the ID sent is really
unique - so the client should also keep track of it's requests and add
logic to it's code.
In uno dei servizi Web che abbiamo sviluppato, il requisito era che l'ID fosse generato dal client (servizio Web) e si presume che sia univoco per tutti i riferimenti futuri. Quindi, il database su questo lato del servizio web, ha quell'ID come chiave primaria, era un ID UNICO, ma non era Incremento Automatico. Questo non è mai stato un problema. Il lato client CAN imposta l'id se la logica di business lo richiede. (Non entrerò nei dettagli di come logicamente. Nel nostro caso, l'ID univoco era prefissato contro un codice per il quale un client è già autenticato) Non sto dicendo che dovresti sempre chiedere al cliente di generare id - ma quando richiesto questo non è uno showstopper.
Tuttavia, non possiamo escludere la possibilità che le richieste in entrata non possano essere errate o confuse in alcuni casi. Per questo, è stato eseguito il tipo rigoroso e il controllo associato (sugli input XML) e, a meno che non sia stato trovato tutto perfetto, nessun record di database esistente sarebbe mai stato modificato.
is it ok or should we try to solve ths kind of issues in a different
more transparent ways?
Non ho capito bene quali altri modi trasparenti sono - ma come una semplice regola empirica è che, se riesci a fare il seguente:
- definisce un flusso di transazioni molto semplice e chiaro su carta e
convalidarlo,
- definisce i ruoli ben definiti di ciascuna parte,
- ha meno varianti possibili in contesti,
(Intendo diverse situazioni in cui è previsto un comportamento diverso per gli stessi input).
- e allinea strettamente lo schema del tuo database alle strutture delle transazioni,
quindi le probabilità di finire i problemi si riducono drasticamente.
La maggior parte delle ragioni, perché le sorprese sono viste nel controllo errato degli errori, rimandano quasi sempre all'ambiguità delle specifiche dei requisiti da congelare.
Dipan.