I'm using a SIM900 with TCP for a application that takes readings occasionally. Same sort of deal, it wakes up, connects to the server and sends a packet, gets an ack back then shuts down.
This happens to be in a mobile application and the thing I've learnt is how much of a PITA an un-reliable data connection can be. If reception is patchy the modules have a tendency to lock up at any given time and require a restart to get them to respond to AT commands again. Given the reasonably complicated set of AT commands and timeouts in order to get the module online in the first place it ends up being quite long winded. Results in quite a lot of code to handle just getting a few bytes of data reliably across the link.