If you control the server and can change the code, it's definitely better to send them batched.
Just encode your objects into json object and put them in an array. So instead of sending data like
data={ id: 5, name: "John" }
make it an array
data=[{ id: 5, name: "John" }, { id: 6, name: "Jane" }, ...]
then parse it in your Controller action on the server side and insert it. You should create a new Action that handles more than 1 request for sake of cleaner and more maintainable code.
I'd suggest splitting it into smaller batches of 1000 or 2000 rather than sending all 10000 at once. Easy done with Linq:
int batchSize = 1000;
for(int i=0; i<things_to_update.Count; i+= batchSize) {
List<Thing> batch = things_to_update.Skip(i).Take(batchSize);
post_to_web_service(batch);
}