为什么Microsoft的库依赖Newtonsoft.Json?


18

这可能是从Microsoft创建ASP.NET Web API库开始的,至少是在我没有记错的情况下记住它的时候。无论如何,从那时起,它的HTTP包就开始依赖于Newtonsoft.Json库进行数据往返于JSON的反序列化。

为什么像微软这样大的公司会增加对开源库的依赖?即使他们当时将使用.NET完全开源,我也觉得很奇怪,因为据我所知,它一直是唯一的非Microsoft库,用作依赖项。

作为一个奖励问题,詹姆斯·牛顿·金会从微软获得任何财务支持吗?


14
您听起来像微软有很多钱可以扔。尽管它们非常丰富,但是它们的资源却不是无限的,这使得它们的计算方法与您的计算方法相同:“我为什么要花时间和金钱来编写已经存在非常好的开源替代品的东西?”
罗伯特·哈维

微软几年前开始变得更加开放源代码友好。他们很早就将jQuery绑定到ASP.NET MVC中。.NET实现开源是这一转变的一部分。
罗伯特·哈维

4
您可以在这里找到有关JSON.NET历史的更多信息:newtonsoft.com/json/help/html/Introduction.htm
Robert Harvey

为什么不?这是世界一流的JSON序列化库,我猜想MS明智地决定将精力集中在其他问题上,而不是重新发明轮子。
Fergal Moran

Answers:


19

我找到的最直接的报价是Scott Guthrie在2012年发布的MVC 4路线图的一部分(显然是离线的,但可以通过Wayback Machine获得),其中包含以下报价:

Json.NET:我们计划在ASP.NET Web API的默认JSON格式化程序中使用社区开发的Json.NET序列化堆栈。Json.NET提供了现代Web框架所需的灵活性和性能。

因此,最简单的原因是它是现有的最佳JSON库,而MVC是微软最早的大型项目之一,该项目摒弃了MS和其他软件巨头的顽固的NIH态度,并涉足同类最佳的开源项目作为其自身产品的基础。


公平的说,当然我们也不想回到“ NIH”。即使这样,我希望该库仍将包含在MS的堆栈中。原因是,任何外部库都面临不具有任何外部,非核心框架依赖项的巨大压力。这是一个经常遇到的很难做到的唯一库,而且也难怪这就是这样的功能,就像没有本地XML工具(XElement等)的.NET一样。难怪这是所有nuget(!)中的#1库。我的2美分。
尼古拉斯·彼得森

1
@NicholasPetersen您可以在此处阅读有关将其包含在.NET Standard中的建议。最后,我检查了讨论,大多数人对此表示反对,但也许是因为在标准库中包括一个子集,即一个较轻的JSON解析器。
Avner Shahar-Kashtan '18年

正如我所提到的那样,尽管我不认为应该将它作为.NET Standard的一部分添加,但它们还是很不错的,因为它看起来太沉重,无法一直固定到netstandard中。我的想法是将其作为netcore的一部分(我想在corefx中使用),但是我承认,我在这里提出的要求可能会很幼稚。那里的一些人认为它是NET Foundation的一部分,听起来不错,但是我不知道这是否可以缓解现实世界中的问题,即允许其他库不必引用框架外部的库。
Nicholas Petersen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.