asynchronous programming APM vs EAP

后端 未结 3 1665
你的背包
你的背包 2021-02-01 05:29

What\'s actually difference between Asynchronous Programming Model and Event-based Asychronous Pattern?

Which approach to use and when

3条回答
  •  礼貌的吻别
    2021-02-01 06:02

    From the client code POV:

    EAP: You set up an event handler for an event whose name ends in "Completed" then call a method whose name ends with "Async". You can sometimes call a method with "Cancel" in its name that might cancel it.

    APM: You call a method whose name starts with "Begin" then poll its result or recieve a callback, then call a method that starts with "End".

    As far as I know of the two, APM is implemented across most of the BCL IO classes and WCF, mainly lower level uncancellable operations (as in to cancel you just ignore the result). EAP is found on more higher level classes i.e. to download a file, where there are multiple steps and some kind of meaningful cancellation behaviour.

    So if you need to choose which to implement (and you are deliberately limiting yourself to these two) I guess its down to what you are doing is cancellable or not.

    From the client code POV you don't always get a choice. Its probably best to use C# 4.5 Tasks if you can, they can work with any of the older async mechanisms via wrappers.

提交回复
热议问题