La differenza sarà il numero e la granularità delle richieste HTTP che passano attraverso la rete.
Il metodo 1 invierà un numero minore di richieste più grandi che eseguono operazioni su operazioni batch. Il metodo 2 invierà richieste più piccole ogni volta che viene modificata la proprietà di un oggetto.
Il metodo 1 ti darà anche la possibilità di accodare un sacco di modifiche sul lato client, quindi dare all'utente la possibilità di annullare o confermare le modifiche. Il Metodo 2 impegnerà ogni modifica individualmente e immediatamente. Se l'utente annulla o annulla un'operazione, sarà necessaria una seconda richiesta per annullare il lato server delle modifiche.
Basandomi esclusivamente sui loro meriti, preferisco il Metodo 1. Tuttavia, quale è più appropriato per la tua app dipende dalla funzionalità che stai cercando.
UPDATE: Nel metodo 1, MyClient.DoSomething()
non deve "fare qualcosa" a un oggetto alla volta. Supponi di voler creare 5 nuovi oggetti MyUser
. Non devi chiamare MyClient.Create(newMyUser)
5 volte, una volta per ogni nuovo oggetto MyUser
. Il tuo metodo Create()
può prendere una matrice di oggetti e tutti i 5 nuovi oggetti MyUser
possono essere inviati al server nel corpo di un singolo POST. Allo stesso modo, supponi di voler aggiornare le proprietà UserName
e Password
sullo stesso oggetto MyUser
. Il metodo 2 risulterebbe in 2 richieste, ciascuna che invia una copia dell'intero oggetto MyUser
per ogni modifica di proprietà. Il metodo 1 consente di apportare le modifiche a entrambe le proprietà lato client, quindi invia l'oggetto MyUser
con entrambe le modifiche alle proprietà sul server in un singolo PUT. In entrambi gli scenari, il Metodo 1 offre la possibilità di ritardare le modifiche al server fino a quando non si chiama il metodo appropriato in MyClient
e si passa gli oggetti modificati. Nel Metodo 2, le modifiche a ciascun oggetto vengono inviate al server immediatamente e individualmente.