This article covers some of the architectural challenges posed by Web Services, examines how to use (and not to use) Web Services, and defines the best practices in applying Web Services for solving tough architectural problems, such as cross-language or cross-system integration.