Il existe de nombreuses "versions" du .NET Framework :
- Complet ("normal")
- Sous-ensemble de profil client
- Silverlight dans les navigateurs Web
- "Silverlight" sur Windows Phone
- Cadre compact
- WinRT
Lorsque le code C # est nécessaire sur une nouvelle plate-forme, il semblerait que Microsot préfère prendre le CLR complet et le découper en un petit sous-ensemble, créant de nouveaux assemblys et déplaçant des types, au lieu d'utiliser simplement des assemblys existants tels que ceux de la BCL . Silverlight, par exemple, a des classes / méthodes différentes de WPF (même jusqu'à certaines méthodes ayant des signatures légèrement différentes ou des implémentations très différentes), au lieu de simplement référencer la même implémentation de List<T>
WPF.
S'agit-il de l'architecture idéale ou d'un signe d'héritage? Le BCL ne devrait-il pas fonctionner sur toutes les plates-formes, avec juste des bibliothèques de présentation / IO différentes sur chacune? Ou la BCL et les autres bibliothèques sont-elles trop gonflées, et leur séparation créerait trop de problèmes de compatibilité descendante, pour être acceptable?
Si nous partions d'un canevas vierge et ne nous inquiétions pas de la compatibilité descendante, la situation actuelle serait-elle vraiment la meilleure façon de gérer plusieurs plates-formes?