Znalazłem Difference between […]Async and Begin[…] .net asynchronous APIs pytanie, ale this answer trochę mnie zdezorientowało.APM, EAP i TPL on Socket Programming
Mówiąc o tych wzorców, Stephen powiedział:
Większość * metody asynchroniczne (z odpowiednią * Wykonane zdarzenia) są za pomocą opartego na zdarzeniu Asynchronous Wzorzec. Starsze (ale wciąż całkowicie poprawne) Begin * i End * to wzorzec zwany Asynchronicznym Modelem Programistycznym.
Klasa Socket jest wyjątkiem od tej reguły; jego * Metody asynchroniczne nie mają żadnych odpowiednich zdarzeń; jest to zasadniczo tylko APM wykonane w taki sposób, aby uniknąć nadmiernej alokacji pamięci.
Używam go jako metody * Asynchroniczne są bardziej wydajne, przynajmniej jeśli chodzi o gniazda. Ale potem wspomniał Task Parallel Library:
Jednak zarówno APM i EBAP są zastępowane przez znacznie bardziej elastyczne podejście oparte na Parallel Library zadań. Ponieważ TPL może łatwo owijać APM-y, starsze klasy prawdopodobnie nie będą aktualizowane bezpośrednio; Metody rozszerzeń służą do zapewnienia ekwiwalentów zadań dla starych metod APM.
znalazłem TPL and Traditional .NET Asynchronous Programming na MSDN, znam podstawy OC, tworzenie zadań, odwołania, kontynuacje, etc, ale nadal nie rozumieją te:
Jakie są zalety asynchronicznego model programowania (APM) i Wzorzec asynchroniczny oparty na zdarzeniach (EAP) w porównaniu do siebie nawzajem? W jaki sposób TPL może łatwo zawijać APMy oznacza, że zarówno APM jak i EAP są zastąpione z TPL?
I co najważniejsze: które powinienem użyć w programowaniu gniazd;
- APM?
- EAP?
- APM lub EAP opakowane przez zadanie?
- TPL za pomocą metod blokowania klasy Socket w zadaniach?
- Inne?
zobacz: http://stackoverflow.com/questions/5834755/turning-async-socket-parallel-and-not-on-concrentrent- in-very-intensive-applicat –