.NET Standard so với .NET Core

253
Álvaro García 2017-05-21 01:38.

Tôi đã đọc về sự khác biệt giữa .NET Standard và .NET Core, nhưng tôi thực sự không biết sự khác biệt là gì, hoặc khi nào nên chọn một dự án thư viện .NET Standard và khi nào chọn một dự án thư viện .NET Core.

Tôi đã đọc rằng .NET Standard là để đảm bảo rằng một bộ API luôn có sẵn, bất kể nền tảng được sử dụng (miễn là nền tảng đó tương thích với phiên bản .NET Standard mà tôi đã chọn). Nếu tôi không nhầm, điều này có nghĩa là tôi có thể tạo một thư viện lớp của .NET Standard và sau đó sử dụng nó trên bất kỳ nền tảng nào tương thích với phiên bản .NET Standard mà tôi đã chọn.

Với .NET Core, tôi đã đọc rằng nó cũng được thiết kế để sử dụng trên nhiều nền tảng, vì vậy nếu tôi chọn một thư viện .NET Core thì có vẻ như tôi cũng có thể sử dụng nó trên nhiều nền tảng, giống như .NET Standard.

Vì vậy, cuối cùng, tôi không thấy sự khác biệt. Khi nào tôi nên sử dụng cái nào? sự khác biệt giữa chúng là gì?

7 answers

204
Federico Dipuma 2017-05-21 07:07.

Tôi sẽ cố gắng làm rõ thêm những nghi ngờ của bạn và mở rộng câu trả lời của Jon Skeet.

.NET Standard là một đặc tả , do đó, một thư viện được biên dịch cho một phiên bản .NET Standard cụ thể có thể được sử dụng trong các triển khai .NET Standard khác nhau.

Như đã nói trong nhận xét khác của tôi, một sự tương tự tốt cho mối quan hệ giữa .NET Standard và các triển khai .NET Standard khác (.NET Core, .NET Framework, v.v.) là ý chính của David Fowler : Phiên bản .NET Standard là Interfaces, trong khi các khuôn khổ triển khai của các giao diện đó.

Sơ đồ đơn giản này có thể giúp hiểu mối quan hệ này:

Bất kỳ thứ gì nhắm mục tiêu NetCore10đều có quyền truy cập vào INetStandard15các API NetCore10 các API cụ thể (chẳng hạn như DotNetHostPolicy).

Tất nhiên thư viện này không thể được sử dụng trong các INetStandard15triển khai khác nhau ( NetCore10không thể chuyển đổi thành NetFramework462hoặc Mono46).

Nếu bạn, thay vào đó, nhu cầu chỉ truy cập vào INetStandard15API (và mục tiêu mà đặc điểm kỹ thuật thay vì một khuôn khổ cụ thể) thư viện của bạn có thể được sử dụng bởi bất kỳ khuôn khổ mà dụng cụ đó ( NetCore10, NetFramework462, vv)

Lưu ý: trong trường hợp tương tự ban đầu, David Fowler đã sử dụng giao diện cho cả phiên bản .NET Standard và triển khai khuôn khổ. Thay vào đó, tôi tin rằng việc sử dụng giao diện và lớp sẽ trực quan hơn và thể hiện tốt hơn mối quan hệ giữa các thông số kỹ thuật và triển khai cụ thể.

188
Jon Skeet 2017-05-21 01:41.

.NET Core là một triển khai của .NET Standard. Nó có sẵn trên nhiều hệ điều hành, nhưng điều đó không giống nhau - cũng có những cách triển khai khác của .NET Standard.

Vì vậy, nếu bạn tạo thư viện .NET Core, nó sẽ có quyền truy cập vào những thứ được triển khai trong .NET Core, nhưng không phải là một phần của .NET Standard và thư viện của bạn sẽ không tương thích với các triển khai khác của .NET Standard, chẳng hạn như Xamarin, Tizen, khung máy tính để bàn .NET đầy đủ, v.v.

Tóm lại: để đạt được tính di động tối đa, hãy đặt mục tiêu thư viện của bạn là Tiêu chuẩn .NET.

8
Nipuna 2019-04-24 21:31.

.NET Standard là một đặc điểm kỹ thuật của các API .NET nhằm mục đích có sẵn trên các triển khai .NET. Điều này cho phép xác định bộ BCL API thống nhất cho tất cả các triển khai .NET.

.NET Core là một trong những cách triển khai .NET Standard. .NET Framework là một triển khai khác của .NET Standard.

Hình ảnh từ .NET Blog

Câu trả lời của Federicos cung cấp cho bạn cái nhìn tổng quan về đồ họa về cách mỗi khung công tác phát triển với các phiên bản. Hãy xem sơ đồ bên dưới từ Microsoft Docs .

Nhắm mục tiêu .NET Standard tăng hỗ trợ nền tảng của bạn trong khi nhắm mục tiêu một nền tảng .NET cụ thể như .NET Core (hoặc .NET Framework) sẽ cho phép bạn sử dụng tất cả các tính năng nền tảng cho nền tảng đó.

6
user2771704 2017-08-17 10:12.

Thư viện .NET Core Class về cơ bản là một tập hợp con của thư viện .NET Framework, chỉ chứa ít API hơn. Việc gắn bó với thư viện .NET Core Class gây khó khăn cho việc chia sẻ mã giữa các lần chạy. Mã này có thể không hoạt động trong một thời gian chạy khác (Mono cho Xamarin), vì nó không có API mà bạn cần. Để giải quyết điều này, có .NET Standard, chỉ là một tập hợp các đặc điểm kỹ thuật cho bạn biết bạn có thể sử dụng API nào . Mục đích chính của .NET Standard là chia sẻ mã giữa các lần chạy. Và điều quan trọng là đặc điểm kỹ thuật này được thực hiện bởi tất cả các thời gian chạy. (.NET Framework, .NET Core và Mono cho Xamarin).

Vì vậy, nếu bạn chắc chắn rằng bạn sẽ chỉ sử dụng thư viện của mình cho các dự án .NET Core, bạn có thể bỏ qua .NET Standard, nhưng nếu thậm chí có một cơ hội nhỏ mã của bạn sẽ được sử dụng bởi .NET Framework hoặc Mono cho Xamarin thì tốt hơn để tuân theo .NET Standard

Cũng lưu ý rằng các phiên bản cao hơn của .NET Standard chứa nhiều API hơn, nhưng các phiên bản thấp hơn được nhiều nền tảng hơn hỗ trợ. Do đó, nếu bạn tạo một thư viện .NET Standard mà bạn muốn chia sẻ giữa các thời gian chạy thì hãy nhắm mục tiêu phiên bản thấp nhất mà bạn có thể , điều này giúp bạn tiếp cận hầu hết các nền tảng. Ví dụ: nếu bạn muốn chạy trên .NET Framework 4.5 và .NET Core 1.0, phiên bản .NET Standard cao nhất mà bạn có thể sử dụng là .NET Standard 1.1. Tham khảo bảng tuyệt vời này từ tài liệu để biết thêm thông tin về nó.

Tái bút: Ngoài ra, nếu bạn muốn chuyển đổi thư viện của mình sang .NET Standard, .NET Portability Analyzer có thể giúp bạn điều đó.

2
steliosalex 2017-10-05 14:17.

.NET Standard là một đặc điểm kỹ thuật của các API mà tất cả các triển khai .NET phải cung cấp. Nó mang lại tính nhất quán cho họ .NET và cho phép bạn xây dựng các thư viện mà bạn có thể sử dụng từ bất kỳ triển khai .NET nào. Nó thay thế PCL để xây dựng các thành phần dùng chung.

.NET Core là một triển khai của Tiêu chuẩn .NET được tối ưu hóa để xây dựng các ứng dụng bảng điều khiển, ứng dụng Web và dịch vụ đám mây sử dụng ASP.NET Core. SDK của nó đi kèm với một công cụ mạnh mẽ ngoài việc phát triển Visual Studio còn hỗ trợ toàn bộ quy trình phát triển dựa trên dòng lệnh. Bạn có thể tìm hiểu thêm về chúng tại aka.ms/netstandardfaqaka.ms/netcore .


Ở trên, cùng với lời giải thích rất rõ ràng về hầu hết những thứ được thảo luận trong câu hỏi này, bạn có thể tìm thấy trong bài viết cực kỳ hữu ích sau của Microsoft (MSDN - tháng 9 năm 2017): .NET Standard - Giải mã .NET Core và .NET Standard

1
Waleed Naveed 2019-08-05 21:50.

Nói một cách dễ hiểu, chuẩn .NET được sử dụng để viết các dự án thư viện lớp biên dịch sang dll. .NET Core có thể được sử dụng để phát triển các ứng dụng web thực tế có thể chạy trên tất cả các hệ điều hành (Windows, Linux, MacOS). (Trong .NET Core 3, Microsoft đã cung cấp chức năng phát triển các ứng dụng dành cho máy tính để bàn bằng WPF, nhưng hiện tại các ứng dụng này sẽ không chạy trên nhiều nền tảng và sẽ chỉ chạy trên hệ thống windows. Trong tương lai, Microsoft cũng có thể làm cho chúng đa nền tảng). thư viện / dlls có thể được sử dụng trong bất kỳ ứng dụng nào sử dụng .NET (.NET framework, .NET Core) có nghĩa là bạn có thể sử dụng tiêu chuẩn .NET với cả .NET framework và .NET core.

0
Fityan Aula 2018-02-17 16:39.

Ý của bạn là .NET Framework? Bởi vì tiêu chuẩn .NET là một triển khai, chẳng hạn như .NET Framework, .NET Core và Xamarin.

Tôi yêu thích .NET Core vì chúng tôi có thể lưu trữ nó trên Linux (sử dụng nginx theo kinh nghiệm của tôi). Nó khác với .NET framework là bạn chỉ có thể lưu trữ trên IIS. Bạn có thể cân nhắc về ngân sách lưu trữ trong trường hợp này (Vì máy chủ windows đắt đối với tôi).

góc độ môi trường phát triển , .Net core rất nhẹ. Vì vậy, bạn có thể sử dụng VSCode, Sublime, cho IDE (không chỉ studio trực quan).

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Làm thế nào để xây dựng một quả địa cầu từ Scratch

Làm thế nào để xây dựng một quả địa cầu từ Scratch

Thời gian, sự kiên nhẫn, thời gian, sự cống hiến và thời gian chỉ là một vài trong số những thứ mà Peter Bellerby cần để thành lập và sau đó điều hành Bellerby & Co. Globemakers, một trong những công ty duy nhất trên Trái đất vẫn sản xuất các quả địa cầu bằng tay.

Năm giai đoạn đau buồn sau khi mất việc làm

Năm giai đoạn đau buồn sau khi mất việc làm

Đó là một ngày thứ Bảy, máy bay của tôi hạ cánh, và tôi đã sẵn sàng để thư giãn trong một kỳ nghỉ cuối tuần ngắn ngủi, khi một email đến trên điện thoại của tôi. Tôi đã mất việc.

Giữ an toàn cho danh tính của bạn với một cảnh báo đóng băng hoặc gian lận tín dụng

Giữ an toàn cho danh tính của bạn với một cảnh báo đóng băng hoặc gian lận tín dụng

Nếu bạn đã từng bị đánh cắp danh tính của mình, bạn biết đó là một trải nghiệm đáng sợ và căng thẳng. Một cách không phổ biến để ngăn chặn nó? Tín dụng bị đóng băng.

Buổi ra mắt phần 3 của The Good Place có một học sinh mới: Khán giả

Buổi ra mắt phần 3 của The Good Place có một học sinh mới: Khán giả

Eleanor (Kristen Bell) dường như đã tình nguyện cho chúng tôi làm vật tưởng nhớ. NBC's The Good Place là một chương trình thích thử thách tốt.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language