The TPL Dataflow Library allows you to design asynchronous Actor and Dataflow based applications. While similar to Microsoft's Reactive Extensions, it goes far beyond what is offered by Rx with a more generalized abstraction to build all types of stream based applications. It does not force you to use IObservable and LINQ, data is simply a stream.Messages transmit data from one block to another over links. Blocks handle the details of multithreading and execute anytime they receive data. All you have to think about is programming the blocks to do what you want. Focus on the problem domain not asynchronous details.Downloadable code examples are used throughout the book to explain the library with a hands-on approach ( ).For a complete understanding of dataflow theory and application, please see my other book "Dataflow and Reactive Programming Systems". While chapter two of this book is included in my other book, it does not contain best practices and program design tips specific to TPL Dataflow. Table of Contents Other Dataflow Books Code Examples Getting Started What is TPL Dataflow What is Dataflow Where is Dataflow Used? TPL Dataflow vs. Rx Installing TPL Dataflow TPL Dataflow Basics Blocks Execution Blocks ActionBlock TransformBlock Block Configuration Execution Block Options Buffering Blocks BufferBlock BroadcastBlock WriteOnceBlock DataflowBlockOptions Grouping Blocks BatchBlock JoinBlock BatchedJoinBlock GroupingDataflowBlockOptions Block Completion Links DataflowLinkOptions Using TPL Dataflow A Generator Block How Messages are Transmitted Runtime Modification Maintaining State Inside an Execution Block Converting a Stateful Block to be Stateless Dataflow Program Design Block Design Design for Reuse Create Blocks from Scratch only when Necessary Develop Your Own Block Interface Careful with Retaining State in Blocks Favor Application Specific Blocks Over Predefined Blocks Avoid Excess Synchronization and Blocks Dealing with Loops and Cycles Prevent Large Buffers Data Should be Immutable Use SingleProducerConstrained if Possible The TPL Dataflow Library allows you to design asynchronous Actor and Dataflow based applications. While similar to Microsoft's Reactive Extensions, it goes far beyond what is offered by Rx with a more generalized abstraction to build all types of stream based applications. It does not force you to use IObservable and LINQ, data is simply a stream. Messages transmit data from one block to another over links. Blocks handle the details of multithreading and execute anytime they receive data. All you have to think about is programming the blocks to do what you want. Focus on the problem domain not asynchronous details. Downloadable code examples are used throughout the book to explain the library with a hands-on approach (http://DataflowBook.com). "The TPL Dataflow Library allows you to design asynchronous Actor and Dataflow based applications. While similar to Microsoft's Reactive Extensions, it goes far beyond what is offered by Rx with a more generalized abstraction to build all types of stream based applications. It does not force you to use IObservable and LINQ, data is simply a stream. Messages transmit data from one block to another over links. Blocks handle the details of multithreading and execute anytime they receive data. All you have to think about is programming the blocks to do what you want. Focus on the problem domain not asynchronous details. Downloadable code examples are used throughout the book to explain the library with a hands-on approach ..."--Website