Warum hängen die Bibliotheken von Microsoft von Newtonsoft.Json ab?


18

Dies hatte wahrscheinlich schon vor langer Zeit begonnen, als Microsoft die ASP.NET-Web-API-Bibliothek erstellte. Zumindest erinnere ich mich daran, wenn ich mich nicht irre. Wie auch immer, seitdem begannen seine HTTP-Pakete abhängig von der Newtonsoft.Json-Bibliothek für die Daten- (De-) Serialisierung zu und von JSON.

Warum würde ein so großes Unternehmen wie Microsoft eine Abhängigkeit von einer Open-Source-Bibliothek hinzufügen? Ich finde es seltsam, auch wenn sie damals mit .NET vollständig auf Open Source umstellen wollten, da dies meines Wissens die einzige Bibliothek war, die nicht von Microsoft stammt und als Abhängigkeit verwendet wurde.

Bekommt James Newton-King als Bonusfrage finanzielle Unterstützung von Microsoft?


14
Sie haben den Eindruck, dass Microsoft jede Menge Geld zum Herumwerfen hat. Obwohl sie ziemlich reich sind, sind ihre Ressourcen nicht unbegrenzt, weshalb ihre Kalkulation mit der Ihren identisch ist: "Warum sollte ich Zeit und Geld investieren, um etwas zu schreiben, für das es bereits eine perfekte Open-Source-Alternative gibt?"
Robert Harvey

Microsoft begann vor Jahren, Open Source-freundlicher zu werden. Sie bündelten jQuery schon früh in ASP.NET MVC. Mit .NET auf Open Source umzusteigen, ist Teil dieses Wandels.
Robert Harvey

4
Weitere Informationen zur Geschichte von JSON.NET finden Sie hier: newtonsoft.com/json/help/html/Introduction.htm
Robert Harvey

Warum nicht? Es ist eine erstklassige JSON-Serialisierungsbibliothek. Ich schätze, MS hat sich mit Bedacht dafür entschieden, ihre Energie auf andere Probleme zu konzentrieren und das Rad nicht neu zu erfinden.
Fergal Moran

6
Interessanterweise gab James Newton-King im März 2018 bekannt, dass er zu Microsoft stoßen werde.
Jeroen

Antworten:


19

Das direkteste Zitat, das ich gefunden habe, ist Teil von Scott Guthries Ankündigung der MVC 4-Roadmap im Jahr 2012 (anscheinend offline, aber über die Wayback-Maschine verfügbar ), die das folgende Zitat enthält:

Json.NET : Wir planen, den von der Community entwickelten Json.NET-Serialisierungsstapel in unserem Standard-JSON-Formatierer in der ASP.NET-Web-API zu verwenden. Json.NET bietet die Flexibilität und Leistung, die für ein modernes Webframework erforderlich sind.

Der einfache Grund dafür ist, dass es sich um die beste verfügbare JSON-Bibliothek handelt, während MVC eines der ersten großen Projekte von Microsoft war, das die tief verwurzelte Haltung von NIH , die MS und andere Software-Giganten auszeichnet, hinter sich ließ und sich mit den besten Open-Source-Projekten auseinandersetzte als Grundlage für das eigene Angebot.


Alles in allem, und auf keinen Fall wollen wir zu "NIH" zurückkehren. Trotzdem wünschte ich mir, diese Bibliothek wäre immer noch im MS-Stack enthalten. Der Grund dafür ist der enorme Druck, dass externe Bibliotheken keine externen, nicht zum Kern gehörenden Framework-Abhängigkeiten aufweisen. Dies ist die einzige Bibliothek, auf die man häufig stößt, und es ist kein Wunder, dass dies eine so einfache Funktionalität ist, als würde man an .NET ohne native XML-Tools (XElement usw.) denken. Kein Wunder, dass dies die Nummer 1 in Nuget (!) Ist. Meine 2 Cent.
Nicholas Petersen

1
@NicholasPetersen Sie können hier über einen Vorschlag lesen , der in .NET Standard aufgenommen werden soll. Zuletzt habe ich die Diskussion überprüft, die Mehrheit war dagegen, aber vielleicht für die Aufnahme einer Teilmenge, eines leichteren JSON-Parsers in die Standardbibliotheken.
Avner Shahar-Kashtan

Sie machen gute Punkte, obwohl ich nicht dachte, dass es als Teil von .NET Standard hinzugefügt werden sollte, wie einige erwähnt haben, da es viel zu schwer zu sein scheint, sich für alle Zeiten in netstandard zu zementieren. Mein Gedanke war, es als Teil von Netcore aufzunehmen (ich nehme an in corefx), aber ich gebe zu, ich könnte naiv in dem sein, was ich hier verlange. Einige Leute dort schlugen vor, es sei Teil von NET Foundation, das hört sich gut an, aber ich weiß nicht, ob dies das reale Problem lindern würde, dass andere Bibliotheken nicht auf eine Bibliothek außerhalb des Frameworks verweisen müssen.
Nicholas Petersen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.