Hay muchos "sabores" de .NET Framework :
- Completo ("normal")
- Subconjunto de perfil de cliente
- Silverlight en navegadores web
- "Silverlight" en Windows Phone
- Marco compacto
- WinRT
Cuando se necesita el código C # en una nueva plataforma, parece que Microsot prefiere tomar el CLR completo y desglosarlo en un pequeño subconjunto, creando nuevos ensamblajes y moviendo tipos, en lugar de simplemente usar ensamblajes existentes como los del BCL . Silverlight, por ejemplo, tiene diferentes clases / métodos para WPF (incluso hasta algunos métodos que tienen firmas ligeramente diferentes o implementaciones muy diferentes), en lugar de simplemente hacer referencia a la misma implementación de List<T>
WPF.
¿Es esta la arquitectura ideal, o un signo de legado? ¿No debería ejecutarse el BCL en todas las plataformas, con diferentes bibliotecas de presentación / IO en cada una? ¿O el BCL y otras bibliotecas están demasiado hinchadas y dividirlas crearía demasiados problemas de compatibilidad con versiones anteriores para ser aceptables?
Si comenzamos desde un lienzo en blanco y no nos preocupamos por la compatibilidad con versiones anteriores, ¿la situación actual sería realmente la mejor manera de manejar múltiples plataformas?