Streams provide a common and very simple way to perform I/O on operating system resources in the .NET Framework. It doesnt matter if youre writing to a network or a file; the I/O technique is fundamentally the same. In addition, you can layer a stream on top of another stream to make I/O operations even more powerful. Our discussions so far have described streams using the synchronous I/O patterns in which calls to perform I/O will block until the I/O operation is complete. In the next chapter, well present threading and the asynchronous pattern in the .NET Framework. Well show you how to perform I/O operations asynchronously that will enable you to develop greater, more flexible applications.