In this chapter, we explored some of the more complex aspects of developing a rich application with long-running background threads and a reliance on remote resources or web services. We first looked at multi-threading and the management of long-running processes, building on the basics of goroutines and thread handling from earlier chapters. We looked at how background processes can be designed to minimize the impact of the code overhead required by some graphical toolkits.
Most of the complexity discussed in this chapter covered working with remote resources and web services. We saw how to implement caching strategies and how they can work to create a more resilient application when network conditions aren't optimal. We also explored authentication of requests (using the common OAuth2 workflow) and connected the GoMail examples to a live Gmail account to read and...