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?
fonte
Respostas:
O que a Microsoft está fazendo, dividindo as rotinas em vários pacotes, é comum. Existe uma versão do .NET executada em computadores de placa única (.Net Micro Framework) com memória limitada. Não faria sentido incluir nessa versão tudo o necessário para executar uma interface gráfica completa do usuário, por exemplo.
Se você olhar para a Apple, o iPhone não contém todas as rotinas que você encontraria em um Mac.
fonte
List<T>
criar o Micro FrameworkList<T>
, o BCL não deve ser dividido adequadamente, de modo que os binários sejam executados em todas as plataformas?List<T>
mas pode remover algumas coisas do código ou mesclar-se com algumas coisas específicas da plataforma e produzir um item de implantação.Eu não acho que o .NET seja o problema. Embora existam vários tempos de execução, eles ainda são compatíveis, e é por isso que tecnologias como as Bibliotecas de Classes Portáteis funcionam (na maioria dos tempos de execução listados).
Por que isso é necessário? Desde que sejam todos compatíveis (novamente, consulte as Bibliotecas de Classes Portáteis), isso não deve importar, pois o BCL faz parte do próprio tempo de execução e distribuído em conjunto.
fonte
List<T>
e execute em qualquer plataforma sem criar uma biblioteca portátil? Ou não deveriaList<T>
estar em uma biblioteca portátil? As bibliotecas portáteis me parecem uma solução alternativa e não parte de um design elegante.O .NET está basicamente substituindo e expandindo objetos com em um ambiente Windows. Também é usado para identificar muitas tecnologias muito diferentes, imagine se a Adobe renomeou todos os seus produtos com uma palavra comum em seu nome, isso é o que está acontecendo com o .NET
fonte