Існує багато "ароматів" .NET Framework :
- Повна ("нормальна")
- Підмножина профілю клієнта
- Silverlight у веб-браузерах
- "Silverlight" на Windows Phone
- Компактний каркас
- WinRT
Коли потрібен код C # на новій платформі, то, здається, Microsot вважає за краще взяти повний CLR і зменшити його до невеликого підмножини, створюючи нові збірки та переміщуючись типи, а не просто використовувати існуючі збірки, такі, як у BCL . Наприклад, Silverlight має різні класи / методи WPF (навіть до деяких методів, що мають дещо різні підписи або дуже різні реалізації), замість того, щоб просто посилатися на ту саму реалізацію, що List<T>
і WPF.
Це ідеальна архітектура чи ознака спадщини? Чи не повинен BCL працювати на всіх платформах, з різними бібліотеками презентації / вводу-виводу на кожній? Або BCL та інші бібліотеки занадто роздуті, і розділення їх створило б занадто багато проблем із сумісністю назад, щоб бути прийнятними?
Якби ми починали з чистого полотна і не переживали за зворотну сумісність, чи справді ситуація справді була б найкращим способом обробляти кілька платформ?