The difference is going to be the number and granularity of HTTP requests that go over the network.
Method 1 is going to send fewer, larger requests that perform operations on a batch operations. Method 2 is going to send more, smaller requests every time an object's property is modified.
Method 1 is also going to give you the ability to queue up a bunch of changes client-side then give the user the option to cancel or commit the changes. Method 2 is going to commit each change individually and immediately. If the user cancels or undoes an operation then a second request will be needed to undo the changes server side.
Based purely on their own merits, I prefer Method 1. However, which one is more appropriate for your app depends on the functionality you are looking for.
UPDATE: In Method 1,
MyClient.DoSomething() does not have to "do something" to one object at a time. Say you want to create 5 new
MyUser objects. You don't have to call
MyClient.Create(newMyUser) 5 times, once for each new
MyUser object. Your
Create() method can take an array of objects and all 5 new
MyUser objects can be sent to the server in the body of a single POST. Similarly, say you want to update the
Password properties on the same
MyUser object. Method 2 would result in 2 requests, each sending a copy of the whole
MyUser object for each property change. Method 1 would allow you to make the changes to both properties client side then send the
MyUser object with both property changes to the server in a single PUT. In both scenarios, Method 1 gives you the option to delay pushing changes to the server until you call the appropriate method in
MyClient and pass in the changed objects. In Method 2, changes to each object are pushed to the server immediately and individually.