Istnieje wiele „smaków” .NET Framework :
- Pełny („normalny”)
- Podzbiór profilu klienta
- Silverlight w przeglądarkach internetowych
- „Silverlight” w systemie Windows Phone
- Kompaktowe ramy
- WinRT
Gdy potrzebny jest kod C # na nowej platformie, wydaje się, że Microsot woli wziąć pełny CLR i rozebrać go do małego podzbioru, tworząc nowe zestawy i przenosząc typy, zamiast po prostu używać istniejących zestawów, takich jak te w BCL . Na przykład Silverlight ma inne klasy / metody niż WPF (nawet niektóre metody mające nieco inne podpisy lub bardzo różne implementacje), zamiast po prostu odwoływać się do tej samej implementacji List<T>
co WPF.
Czy to idealna architektura, czy znak dziedzictwa? Czy BCL nie powinien być uruchamiany na wszystkich platformach z po prostu różnymi bibliotekami prezentacji / IO na każdej z nich? A może BCL i inne biblioteki są zbyt rozdęte, a ich rozdzielenie spowodowałoby zbyt wiele problemów ze zgodnością wsteczną, aby było możliwe do zaakceptowania?
Gdybyśmy zaczęli od pustego obszaru roboczego i nie martwili się kompatybilnością wsteczną, czy obecna sytuacja byłaby naprawdę najlepszym sposobem obsługi wielu platform?