1 / 14

Asynchronous I/O in .NET

Asynchronous I/O in .NET. What is Async I/O?. Executing I/O in the background, allowing foreground work to proceed I/O executes and completes in parallel with, and independent of, the application that initiated it Called “Overlapped I/O” in Win32. What is Async I/O?. Synchronous I/O.

booth
Download Presentation

Asynchronous I/O in .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Asynchronous I/O in .NET

  2. What is Async I/O? • Executing I/O in the background, allowing foreground work to proceed • I/O executes and completes in parallel with, and independent of, the application that initiated it • Called “Overlapped I/O” in Win32

  3. What is Async I/O? Synchronous I/O Asynchronous I/O

  4. Why use Async I/O? • Scalability • Throughput • Threads are expensive • Non-blocking UI • Silverlight

  5. Why not Async I/O? • Complexity • Debuggability • Unnecessary?

  6. Asynchronous Programming Model • Standard pattern for async work in .NET 3.5 • Convert:stringDoOperation(int param1, double param2);Into:IAsyncResultBeginDoOperation(int param1, double param2,AsyncCallbackcallback, object state);stringEndDoOperation(IAsyncResultasyncResult); • In WCF, use[OperationContract(AsyncPattern = true)]

  7. Asynchronous Programming Model • Four ways to complete asynchronous call: • Supply an AsyncCallback • Poll IAsyncResult.IsCompleted • Wait on IAsyncResult.AsyncWaitHandle(blocking) • Call EndXxx method (blocking) • Always call EndXxx method!

  8. Asynchronous I/O with APM in .NET 3.5 Demo

  9. Event-Based Pattern • Introduced in .NET 2.0 to simplify APM • E.g., PictureBox, SoundPlayer, WebClient • MethodAsync methodMethodCompleted eventCancelAsync method • Uses AsyncOperationManager internally

  10. Task Parallel Library • New framework for parallel andasync work in .NET 4.0 • Convert:stringDoOperation(int param1, double param2);Into:Task<string> DoOperation(int param1, double param2);

  11. Task Parallel Library • Two ways to complete asynchronous call: • ContinueWith • Call Task<T>.Result or Task.Wait (blocking)

  12. Task Parallel Library • Wrap existing APM methodIAsyncResultBeginDoOperation(int param1, double param2,AsyncCallbackcallback, object state);stringEndDoOperation(IAsyncResultasyncResult);with FromAsync:Task<string>.Factory.FromAsync(BeginDoOperation, EndDoOperation,int param1, double param2, object state);

  13. Asynchronous I/O with TPL in .NET 4.0 Demo

  14. Where to? • ASP.NET Asynchronous Pages (http://msdn.microsoft.com/en-us/magazine/cc163725.aspx) • IHttpAsyncHandler(http://msdn.microsoft.com/en-us/magazine/cc163463.aspx) • F# Async Workflows (http://blogs.msdn.com/dsyme/archive/2007/10/11/introducing-f-asynchronous-workflows.aspx) • Reactive Extensions for .NET(http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx) • Axum(http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx) • http://github.com/bgrainger/AsyncIoDemo

More Related