Многие технологии, описанные в книге, также в той или иной степени поддерживаются на старых платформах. Если вы оказались в незавидной ситуации и вам приходится поддерживать эти платформы, то это приложение поможет определить, какие технологии вам доступны. Использование этих технологий на старых платформах не идеально; но даже если вы добьетесь своего и код заработает, учтите, что единственным долгосрочным решением является обновление целевой платформы для кода. Предполагается, что это приложение представляет собой историческую справку, а не набор рекомендаций; возможно, оно будет полезно программистам, занимающимся сопровождением старого кода.
В табл. А.1 приведена сводка поддержки старых платформ для разных технологий.
Таблица А.1. Поддержка старых платформ
Платформа | async | Parallel | Reactive | Dataflow | Параллельные коллекции | Неизменяемые коллекции |
.NET 4.5 | ü | ü | NuGet | NuGet | ü | NuGet |
.NET 4.0 | NuGet | ü | NuGet | ü | X | |
Windows Phone Apps 8.1 | ü | ü | NuGet | NuGet | ü | NuGet |
Windows Phone SL 8.0 | ü | X | NuGet | NuGet | X | NuGet |
Windows Phone SL 7.1 | NuGet | X | NuGet | X | X | X |
Silverlight 5 | NuGet | X | NuGet | X | X | X |
Если вам нужна поддержка async на старых платформах, установите NuGet-пакет для Microsoft.Bcl.Async (табл. А.2).
Не используйте Microsoft.Bcl.Async для включения поддержки async на платформе ASP.NET в .NET 4.0! Конвейер ASP.NET был обновлен в .NET 4.5 — в него была включена поддержка async, и вы должны использовать .NET 4.5 или более новую версию для async-проектов ASP.NET. Пакет Microsoft.Bcl.Async не предназначен для приложений ASP.NET.
Таблица А.2. Поддержка async на старых платформах
Платформа | Поддержка async |
.NET 4.5 | ü |
.NET 4.0 | NuGet: Microsoft.Bcl.Async |
Windows Phone Apps 8.1 | ü |
Windows Phone SL 8.0 | ü |
Windows Phone SL 7.1 | NuGet: Microsoft.Bcl.Async |
Silverlight 5 | NuGet: Microsoft.Bcl.Async |
При использовании Microsoft.Bcl.Async многие составляющие современного типа Task присутствуют в типе TaskEx, включая Delay, FromResult, WhenAll и WhenAny.
Чтобы использовать TPL Dataflow, установите NuGet-пакет System.Threading.Tasks.Dataflow в своем приложении. Библиотека TPL Dataflow обладает ограниченной поддержкой старых платформ (табл. А.3).
Не используйте старый пакет Microsoft.Tpl.Dataflow. Он больше не поддерживается.
Таблица А.3. Поддержка TPL Dataflow на старых платформах
Платформа | Поддержка TPL Dataflow |
.NET 4.5 | NuGet: System.Threading.Tasks.Dataflow |
.NET 4.0 | X |
Windows Phone Apps 8.1 | NuGet: System.Threading.Tasks.Dataflow |
Windows Phone SL 8.0 | NuGet: System.Threading.Tasks.Dataflow |
Windows Phone SL 7.1 | X |
Silverlight 5 | X |
Чтобы использовать System.Reactive, установите NuGet-пакет System.Reactive в своем приложении. Библиотека System.Reactive исторически обладает широкой поддержкой разных платформ (табл. А.4); тем не менее многие старые платформы в настоящее время не поддерживаются.
Таблица А.4. Поддержка System.Reactive на старых платформах
Платформа | Поддержка Reactive |
.NET 4.7.2 | NuGet: System.Reactive |
.NET 4.5 | NuGet: System.Reactive v3.x |
.NET 4.0 | NuGet: Rx.Main |
Windows Phone Apps 8.1 | NuGet: System.Reactive v3.x |
Windows Phone SL 8.0 | NuGet: System.Reactive v3.x |
Windows Phone SL 7.1 | NuGet: Rx.Main |
Silverlight 5 | NuGet: Rx.Main |
Старый пакет Rx.Main больше не поддерживается.