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?
źródło
Odpowiedzi:
To, co robi Microsoft, dzieląc procedury na wiele pakietów, jest powszechne. Istnieje wersja .NET, która działa na komputerach jednopłytkowych (.Net Micro Framework) z ograniczoną pamięcią. Nie ma sensu umieszczać w tej wersji wszystkiego, co jest potrzebne na przykład do uruchomienia pełnego graficznego interfejsu użytkownika.
Jeśli spojrzysz na Apple, iPhone nie zawiera wszystkich procedur, które można znaleźć na komputerze Mac.
źródło
List<T>
celu stworzenia Micro FrameworkList<T>
, czy BCL nie powinien być odpowiednio podzielony, aby pliki binarne działały na wszystkich platformach?List<T>
ale może wycinać niektóre elementy z kodu lub łączyć się z niektórymi elementami specyficznymi dla platformy i generować element wdrażania.Nie sądzę, że problem stanowi .NET. Chociaż istnieją różne środowiska wykonawcze, są one nadal kompatybilne, dlatego takie technologie jak Biblioteki klas przenośnych działają (dla większości wymienionych środowisk wykonawczych).
Dlaczego jest to potrzebne? Dopóki wszystkie są kompatybilne (ponownie, zobacz Biblioteki klas przenośnych), nie powinno to mieć znaczenia, ponieważ BCL jest częścią samego środowiska wykonawczego i jest dystrybuowany w tandemie.
źródło
List<T>
i uruchomić ją na dowolnej platformie bez tworzenia przenośnej biblioteki? A możeList<T>
sama nie powinna znajdować się w przenośnej bibliotece? Przenośne biblioteki wydają mi się raczej obejściem niż częścią eleganckiego projektu..NET zasadniczo zastępuje i rozwija obiekty COM w środowisku Windows. Służy również do identyfikowania wielu bardzo różnych technologii, wyobraź sobie, że jeśli Adobe zmienił nazwę wszystkich swoich produktów, aby mieć wspólne słowo w ich nazwie, to coś takiego dzieje się z .NET
źródło