Perché le librerie di Microsoft dipendono da Newtonsoft.Json?


18

Questo probabilmente era iniziato da quando Microsoft ha creato la libreria API Web ASP.NET, almeno è quando me lo ricordo se non sbaglio. Ad ogni modo, da allora, i suoi pacchetti HTTP sono stati avviati a seconda della libreria Newtonsoft.Json per la serializzazione dei dati da e verso JSON.

Perché un'azienda grande come Microsoft aggiungerebbe una dipendenza da una libreria open source? Lo trovo strano anche se all'epoca sarebbero andati completamente open source con .NET perché era l'unica libreria non Microsoft utilizzata come dipendenza, per quanto ne so.

Come domanda bonus, James Newton-King riceve supporto finanziario da Microsoft?


14
Sembra che Microsoft abbia sacchi di denaro da buttare in giro. Sebbene siano piuttosto ricchi, le loro risorse non sono illimitate, il che rende il loro calcolo uguale al tuo: "perché dovrei spendere tempo e denaro per scrivere qualcosa per cui esiste già un'alternativa open source perfettamente valida?"
Robert Harvey,

Microsoft ha iniziato a diventare più amichevole open-source anni fa; hanno raggruppato jQuery in ASP.NET MVC all'inizio. Passare all'open source con .NET fa parte di questo spostamento.
Robert Harvey,

4
Puoi scoprire un po 'di più sulla storia di JSON.NET qui: newtonsoft.com/json/help/html/Introduction.htm
Robert Harvey,

Perchè no? È una libreria di serializzazione JSON di livello mondiale, immagino che MS abbia saggiamente deciso di concentrare le proprie energie su altri problemi e non reinventare la ruota.
Fergal Moran,

6
È interessante notare che James Newton-King ha annunciato a marzo 2018 che si sarebbe unito a Microsoft.
Jeroen,

Risposte:


19

La citazione più diretta che ho trovato fa parte dell'annuncio di Scott Guthrie della roadmap MVC 4, nel 2012, (apparentemente offline ma disponibile tramite la Wayback Machine ) che contiene la seguente citazione:

Json.NET : prevediamo di utilizzare lo stack di serializzazione Json.NET sviluppato dalla community nel nostro formattatore JSON predefinito nell'API Web ASP.NET. Json.NET offre la flessibilità e le prestazioni richieste per un moderno framework Web.

Quindi la semplice ragione è che è la migliore libreria JSON disponibile, mentre MVC è stato uno dei primi grandi progetti di Microsoft ad abbandonare l' atteggiamento radicato di NIH che caratterizzava MS e altri giganti del software, e raggiungere i migliori progetti open source come basi per le proprie offerte.


Tutto giusto, e certamente non vogliamo tornare a "NIH". Anche così, vorrei che questa libreria fosse ancora inclusa nello stack di MS. Il motivo è che c'è un'enorme pressione affinché qualsiasi libreria esterna non abbia dipendenze dal framework esterno, non core. Questa è l'unica libreria che si incontra frequentemente in cui è una cosa difficile da fare, e non c'è da meravigliarsi, questa è tale funzionalità bread-and-butter, è come pensare a .NET senza strumenti XML nativi (XElement ecc.). Non c'è da stupirsi che questa sia la libreria n. 1 in tutto il nuget (!). I miei 2 centesimi.
Nicholas Petersen,

1
@ NicholasPetersen Puoi leggere qui una proposta per includerla in .NET Standard. L'ultima volta che ho controllato la discussione, la maggioranza era contraria, ma forse per aver incluso un sottoinsieme, un parser JSON più leggero nelle librerie standard.
Avner Shahar-Kashtan,

Fanno dei punti positivi, anche se non pensavo che dovesse essere aggiunto come parte di .NET Standard, come alcuni hanno già detto, poiché sembra troppo pesante per cementare in netstandard per sempre. Il mio pensiero lo includeva come parte di netcore (suppongo in corefx), ma lo ammetto, potrei essere ingenuo in ciò che sto richiedendo qui. Alcune persone hanno suggerito che faccia parte di NET Foundation, suona bene, ma non so se ciò alleverebbe il problema del mondo reale di consentire ad altre biblioteche di non dover fare riferimento a una biblioteca esterna al framework.
Nicholas Petersen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.