Existem muitos "sabores" do .NET Framework :
- Cheio ("normal")
- Subconjunto do perfil do cliente
- Silverlight em navegadores da web
- "Silverlight" No Windows Phone
- Estrutura compacta
- WinRT
Quando o código C # é necessário em uma nova plataforma, parece que a Microsot prefere pegar o CLR completo e reduzi-lo a um pequeno subconjunto, criando novos assemblies e movendo tipos, em vez de usar assemblies existentes, como os da BCL . O Silverlight, por exemplo, possui diferentes classes / métodos para o WPF (até alguns métodos com assinaturas ligeiramente diferentes ou implementações muito diferentes), em vez de simplesmente fazer referência à mesma implementação do List<T>
WPF.
Essa é a arquitetura ideal ou um sinal de legado? O BCL não deve ser executado em todas as plataformas, com apenas bibliotecas de apresentação / IO diferentes em cada uma? Ou a BCL e outras bibliotecas estão inchadas demais e dividi-las criaria muitos problemas de compatibilidade com versões anteriores, para serem aceitáveis?
Se começássemos de uma tela em branco e não estivéssemos preocupados com a compatibilidade com versões anteriores, a situação atual seria realmente a melhor maneira de lidar com várias plataformas?