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?
fuente
Respuestas:
Lo que está haciendo Microsoft, dividir las rutinas en múltiples paquetes, es común. Hay una versión de .NET que se ejecuta en computadoras de placa única (.Net Micro Framework) con memoria limitada. No tendría ningún sentido incluir en esa versión todo lo necesario para ejecutar una interfaz gráfica de usuario completa, por ejemplo.
Si nos fijamos en Apple, el iPhone no contiene todas las rutinas que uno encontraría en una Mac.
fuente
List<T>
crear Micro FrameworkList<T>
, ¿no debería dividirse el BCL correctamente de modo que los archivos binarios se ejecuten en todas las plataformas?List<T>
pero puede eliminar algunas cosas del código o fusionarse con algunas cosas específicas de la plataforma y producir un elemento de implementación.No creo que .NET sea el problema. Si bien hay varios tiempos de ejecución, siguen siendo compatibles, por eso funcionan tecnologías como las Bibliotecas de clases portátiles (para la mayoría de los tiempos de ejecución que enumeró).
¿Por qué se necesita esto? Siempre y cuando todos sean compatibles (de nuevo, vea las Bibliotecas de clases portátiles), esto no debería importar, ya que el BCL es parte del tiempo de ejecución y se distribuye en tándem.
fuente
List<T>
y ejecutar en cualquier plataforma sin crear una biblioteca portátil? ¿O no deberíaList<T>
estar en una biblioteca portátil? Las bibliotecas portátiles me parecen una solución alternativa en lugar de parte de un diseño elegante..NET esencialmente reemplaza y expande objetos com en un entorno Windows. También se usa para identificar muchas tecnologías muy diferentes, imagínese si Adobe cambia el nombre de todos sus productos para tener una palabra común en su nombre, eso es algo que está sucediendo con .NET
fuente