In the context of C#, .NET 4/4.5 used for an application running on a web-server, what is the relationship between "Task Parallel Library" and "Task-based Asynchronous Pattern"?
I understand one is a library and the other is a pattern. But to dig deeper, is it like "The library is used by the pattern to enforce good practices". I'm also not clear if both are supported in .NET 4.0 (with await
and async
keywords)
Edit: Seems that await
and async
are only in .NET 4.5 ...
1 Answer 1
The TPL is a new(ish) framework that provides a simplified API for concurrent programming. The Task-Based Asynchronous Pattern is a framework design guideline that leverages the TPL to deliver consistently designed concurrent operations.
The async/await keywords are syntactic sugar that allow you to consume TAP APIs without diving into the details of continuation.
-
so TPL extends TAP or TAP extends TPL? Put another way, TPL is newer/preferred compared to TAP?Don Cheadle– Don Cheadle2016年10月20日 14:08:12 +00:00Commented Oct 20, 2016 at 14:08
-
1@mmcrae - if I understand correctly, they are not extensions of each other. It seems from this answer that TPL is a framework to make life easier for developers. TAP is a design guideline (a pattern) that uses TPL as part of its guideline/recommendation for how to design concurrent operations in a consistent way. Michael Brown - I have explained that accurately?namford– namford2016年11月21日 16:12:35 +00:00Commented Nov 21, 2016 at 16:12
Task
class, the methods required by the compiler only exist in .Net 4.5. You can use async/await in .Net 4 using the 'async targeting pack': microsoft.com/en-us/download/details.aspx?id=29576Task
instances, and is not directly related to CPS. The C# async/await features simplify writing task continuations however.