Es gibt viele "Varianten" von .NET Framework :
- Voll ("normal")
- Teilmenge des Clientprofils
- Silverlight in Webbrowsern
- "Silverlight" unter Windows Phone
- Kompakter Rahmen
- WinRT
Wenn C # -Code auf einer neuen Plattform benötigt wird, scheint es, dass Microsot es vorzieht, die vollständige CLR auf eine kleine Teilmenge zu reduzieren, neue Assemblys zu erstellen und Typen zu verschieben, anstatt nur vorhandene Assemblys wie die in der BCL zu verwenden . Silverlight hat beispielsweise andere Klassen / Methoden als WPF (sogar bis zu einigen Methoden mit leicht unterschiedlichen Signaturen oder sehr unterschiedlichen Implementierungen), anstatt einfach auf dieselbe Implementierung List<T>
wie WPF zu verweisen .
Ist dies die ideale Architektur oder ein Zeichen des Erbes? Sollte die BCL nicht auf allen Plattformen ausgeführt werden, mit jeweils nur unterschiedlichen Präsentations- / E / A-Bibliotheken? Oder sind die BCL und andere Bibliotheken zu aufgebläht, und eine Aufteilung würde zu viele Abwärtskompatibilitätsprobleme verursachen, um akzeptabel zu sein?
Wenn wir von einer leeren Leinwand ausgehen und uns keine Sorgen um die Abwärtskompatibilität machen würden, wäre die aktuelle Situation wirklich der beste Weg, um mit mehreren Plattformen umzugehen?
quelle
Antworten:
Was Microsoft tut, indem es die Routinen in mehrere Pakete aufteilt, ist üblich. Es gibt eine Version von .NET, die auf Single-Board-Computern (.Net Micro Framework) mit begrenztem Speicher ausgeführt wird. Es wäre nicht sinnvoll, in diese Version alles aufzunehmen, was zum Beispiel zum Ausführen einer vollständigen grafischen Benutzeroberfläche erforderlich ist.
Wenn Sie sich Apple ansehen, enthält das iPhone nicht alle Routinen, die man auf einem Mac finden würde.
quelle
List<T>
, um Micro Framework zu erstellenList<T>
?List<T>
aber es kann einige Dinge aus dem Code entfernen oder mit einigen plattformspezifischen Dingen zusammenführen und ein Bereitstellungselement erzeugen.Ich denke nicht, dass .NET das Problem ist. Obwohl es verschiedene Laufzeiten gibt, sind sie dennoch kompatibel, weshalb Technologien wie die Portable Class Libraries funktionieren (für die meisten der von Ihnen aufgelisteten Laufzeiten).
Warum wird das benötigt? Solange sie alle kompatibel sind (siehe auch die Portable Class Libraries), sollte dies keine Rolle spielen, da die BCL Teil der Laufzeit selbst ist und zusammen verteilt wird.
quelle
List<T>
auf einer beliebigen Plattform verwendet und ausführt, ohne eine tragbare Bibliothek zu erstellen? Oder sollte es sich nichtList<T>
selbst in einer tragbaren Bibliothek befinden? Tragbare Bibliotheken sind für mich eher eine Problemumgehung als Teil eines eleganten Designs..NET ersetzt und erweitert im Wesentlichen COM-Objekte in einer Windows-Umgebung. Es wird auch verwendet, um viele sehr unterschiedliche Technologien zu identifizieren. Stellen Sie sich vor, wenn Adobe alle Produkte umbenennt, um ein gemeinsames Wort in ihrem Namen zu haben, geschieht dies mit .NET
quelle