Tại sao các thư viện của Microsoft phụ thuộc vào Newtonsoft.Json?


18

Điều này có lẽ đã bắt đầu quay trở lại khi Microsoft tạo thư viện API Web ASP.NET, ít nhất đó là khi tôi nhớ nó nếu tôi không nhầm. Dù sao, kể từ đó, các gói HTTP của nó bắt đầu tùy thuộc vào thư viện Newtonsoft.Json để tuần tự hóa dữ liệu (de) đến và từ JSON.

Tại sao một công ty lớn như Microsoft sẽ thêm phụ thuộc vào thư viện nguồn mở? Tôi thấy lạ ngay cả khi họ sẽ chuyển hoàn toàn nguồn mở với .NET trở lại bởi vì đây là thư viện không phải của Microsoft được sử dụng như một phụ thuộc, theo như tôi biết.

Như một câu hỏi về phần thưởng, James Newton-King có nhận được sự hỗ trợ tài chính nào từ Microsoft không?


14
Bạn làm cho nó có vẻ như Microsoft có túi tiền để ném xung quanh. Mặc dù họ khá giàu có nhưng tài nguyên của họ không giới hạn, điều này khiến cho tính toán của họ giống như của bạn: "tại sao tôi phải dành thời gian và tiền bạc để viết một cái gì đó mà một sự thay thế nguồn mở hoàn toàn tốt đã tồn tại?"
Robert Harvey

Microsoft bắt đầu trở nên thân thiện hơn với nguồn mở từ nhiều năm trước; họ đã gói jQuery vào ASP.NET MVC từ rất sớm. Sử dụng mã nguồn mở với .NET là một phần của sự thay đổi đó.
Robert Harvey

4
Bạn có thể tìm hiểu thêm một chút về lịch sử của JSON.NET tại đây: newtonsoft.com/json/help/html/Int sinhtion.htmlm
Robert Harvey

Tại sao không? Đó là một thư viện tuần tự JSON đẳng cấp thế giới, tôi đoán MS đã khôn ngoan quyết định tập trung năng lượng của họ vào các vấn đề khác và không phát minh lại bánh xe.
Fergal Moran

6
Điều thú vị là James Newton-King đã tuyên bố vào tháng 3 năm 2018 rằng anh sẽ gia nhập Microsoft.
Jeroen

Câu trả lời:


19

Trích dẫn trực tiếp nhất mà tôi tìm thấy là một phần trong thông báo của Scott Guthrie về lộ trình MVC 4, vào năm 2012, (rõ ràng là ngoại tuyến nhưng có sẵn thông qua Wayback Machine ) có chứa trích dẫn sau:

Json.NET : Chúng tôi dự định sử dụng ngăn xếp tuần tự hóa Json.NET do cộng đồng phát triển trong trình định dạng JSON mặc định của chúng tôi trong API Web ASP.NET. Json.NET cung cấp tính linh hoạt và hiệu suất cần thiết cho một khung web hiện đại.

Vì vậy, lý do đơn giản là đây là thư viện JSON có sẵn tốt nhất, trong khi MVC là một trong những dự án lớn đầu tiên của Microsoft để từ bỏ thái độ NIH cố thủ đặc trưng của MS cũng như các đại gia phần mềm khác và tiếp cận các dự án nguồn mở tốt nhất làm nền tảng cho các dịch vụ riêng của mình.


Tất cả công bằng, và chắc chắn chúng tôi không muốn quay lại "NIH". Mặc dù vậy, tôi ước thư viện này vẫn được đưa vào ngăn xếp của MS. Lý do là, có một áp lực rất lớn đối với bất kỳ thư viện bên ngoài nào để không có bất kỳ phụ thuộc khung bên ngoài, không cốt lõi nào. Đây là thư viện duy nhất mà một người thường xuyên gặp phải, đó là một điều khó thực hiện, và không có gì lạ, đây là chức năng bánh mì như vậy, nó giống như nghĩ về .NET mà không cần công cụ XML nguyên gốc (XEuity, v.v.). Không có gì ngạc nhiên khi đây là thư viện số 1 trong tất cả các nuget (!). 2 xu của tôi.
Nicholas Petersen

1
@NicholasPeteren Bạn có thể đọc ở đây về một đề xuất đưa nó vào .NET Standard. Cuối cùng tôi đã kiểm tra cuộc thảo luận, phần lớn đã chống lại nó, nhưng có lẽ bao gồm một tập hợp con, trình phân tích cú pháp JSON nhẹ hơn trong các thư viện tiêu chuẩn.
Avner Shahar-Kashtan

Họ đã đưa ra những quan điểm tốt, mặc dù tôi không nghĩ rằng nó nên được thêm vào như một phần của .NET Standard, như một số người đã đề cập, vì dường như quá nặng nề để trở thành tiêu chuẩn ròng cho mọi thời đại. Suy nghĩ của tôi bao gồm nó như một phần của netcore (tôi cho là trong corefx), nhưng tôi thừa nhận, tôi có thể ngây thơ trong những gì tôi yêu cầu ở đây. Một số người ở đó cho rằng nó là một phần của NET Foundation, nghe có vẻ hay, nhưng tôi không biết liệu điều đó có làm giảm bớt vấn đề trong thế giới thực khi cho phép các thư viện khác không phải tham chiếu thư viện bên ngoài khung không.
Nicholas Petersen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.