Существует множество «разновидностей» .NET Framework :
- Полный («нормальный»)
- Подмножество профиля клиента
- Silverlight в веб-браузерах
- «Silverlight» на Windows Phone
- Компактный каркас
- WinRT
Когда на новой платформе требуется код C #, может показаться, что Microsot предпочитает взять полный CLR и сократить его до небольшого подмножества, создавая новые сборки и перемещая типы, а не просто используя существующие сборки, такие как в BCL. , Например, Silverlight имеет различные классы / методы для WPF (даже если некоторые методы имеют слегка отличающиеся сигнатуры или очень разные реализации), вместо того, чтобы просто ссылаться на ту же реализацию, List<T>
что и WPF.
Это идеальная архитектура или признак наследства? Разве BCL не должен работать на всех платформах с разными библиотеками презентаций / ввода-вывода на каждой? Или BCL и другие библиотеки слишком раздуты, и их разделение создаст слишком много проблем обратной совместимости, чтобы быть приемлемым?
Если бы мы начали с чистого листа и не беспокоились о обратной совместимости, будет ли текущая ситуация действительно лучшим способом работы с несколькими платформами?