I'm on a mission building a large scale solution for a client where mobile devices are communicating with a bunch of web-services. Here are my top 3 NOW obvious tips.
1) Keep round trips to the web-service down to an absolute minimum. Its better to cache on the device to store web-service results. I've been using Dictionary objects to achieve this. I use the key-field of the dictionary to list out the parameters I would pass to the web-service. Before calling the web-service I check the dictionary. This is a massive time saver. You have to be a little careful with a cache renewal policy, i.e you don't want the last version of an order if things have changed on the server. In addition, watch the memory. A poorly thought out cache can eat up space fast.
2) The XML payload is very verbose. If you keep your parameter variable names and response structure variable names nice and short, like 'IT' for Item, rather than 'ITEM_NUMBER'. Over slow connections (GPRS) you get a significant performance improvement, i.e if you look at the SOAP data <ITEM_NUMBER>123</ITEM_NUMBER> is sent. so better to use <IT>123</IT>
3) Think messaging. If you look up and order, in the web-service go pull out all relevant data (and only relevant data). Don't necessarily treat web-services as just a way of issuing single SQL selects. Decode foreign keys etc. to save processing on the client, i.e if you look at Product_Type to be ProductType1 its better to send back to the client 'Some Product Type'. Obviously rule 2 applies.
More tips, will inevitably follow as more trip ups occur.