Web Services are a must today, but there are some aspects of the design as well as the use, that should be kept in mind. I was able to create applications I mean SmartClient(s) that runs fine and occupies an average of 2 Kb/sec of normal usage between the client and the server (the performance of the application was like being on a LAN).
The SmartClient application is just and example, since you may want to do the same stuff in Silverlight 2.0.
Following my conclusion about “the most important things to keep in mind in designing the web service and client”:
Reduce Latency: Use Chunky vs Chatty technique when your application wants to talk to the web service. This is extremely important, because latency on WANs is a major issue on complex application. This is not an issue when your web service is tailored for a straight vertical implementation where the number of calls can be drastically reduced by implementing the right methods with the right parameters you need for each operation.
Reduce the payload size: Use HTTP Compression to reduce payloads when the same exceed something like >5Kb. XML is highly compressable since its nature. I mean that the payload can easily reduced by 90% in a normal situation. This is a must especially in very slow networks.
Use caching: Your client application MUST have a sort of caching in order to avoid redundant calls when data is not changing. However this can be done only on a number of objects; but normally this can help a lot reducing the communication between the client and the server.