“. NET Core” คืออะไร


323

เมื่อเร็ว ๆ นี้ในทางการ.NET Framework บล็อกมันก็ประกาศว่า.NET หลักเป็นไปโอเพนซอร์ส

ผู้เขียนกล่าวถึงสิ่งที่ . NET Core จะถูกอธิบายในโพสต์ถัดไป บางรายละเอียดเพิ่มเติมที่กล่าวถึงในการโพสต์ประกาศอีก

จากแผนภาพที่ให้มา:

. NET Core diagram

และบทความที่เป็นข้อความตัวเองฉันจะสมมติว่า. NET Core (นอกเหนือจากสิ่งที่ชัดเจนเช่นการเปิดแหล่งที่มา) เป็นการนำมาใช้ใหม่แบบแยกส่วนของ. NET แบบเต็ม Ie framework components ถูกโหลดตามความจำเป็นเหมือนตอนที่โหลดแพ็คเกจ NuGet และตอนนี้ ASP.NET 5 เป็นหนึ่งในโมดูลที่มีการใช้งานแล้ว ความเข้าใจของฉันเกี่ยวกับ. NET Core ถูกต้องหรือไม่ บางทีฉันอาจจะหายไปบางอย่าง


ฉันได้พบบทความล่าสุดซึ่งฉันพบว่าทั้งสั้นและดีมาก มันครอบคลุม. NET Standard,. NET Core และ. NET Framework และความสัมพันธ์ของพวกเขา ฉันขอแนะนำอย่างยิ่ง


5
มีการโพสต์บล็อกใหม่ที่นี่เกี่ยวกับเรื่องนี้blogs.msdn.com/b/dotnet/archive/2014/12/04/...แต่ยังคงยากที่จะเข้าใจว่าแผนภาพ มันหมายความว่า WPF และ WinForms ไม่สามารถใช้. NET Core ตัวอย่างเช่น
dodgy_coder

@dodgy_coder ฉันคิดว่าในที่สุดมันก็แค่ Store Apps และ ASP.NET 5 เป็นคนแรกที่ใช้สถาปัตยกรรมเฟรมเวิร์กใหม่
Petr Abdulin

1
@dodgy_coder ถูกต้อง ณ ตอนนี้แอพ WPF และ WinForms ไม่สามารถพกพาไปยัง. net core ได้ พวกเขาอาจถูกพัฒนาขึ้นใหม่เป็นแอพสากลของ windows ดูสิ่งนี้: blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core
VivekDev

คำตอบ:


154

จากบล็อก. NET การประกาศ. NET 2015 Preview: ยุคใหม่สำหรับ. NET :

.NET Core มีสององค์ประกอบหลัก มันมีรันไทม์ขนาดเล็กที่สร้างขึ้นจาก codebase เดียวกันกับ. NET Framework CLR รันไทม์. NET Core มี GC และ JIT (RyuJIT) เดียวกัน แต่ไม่มีคุณสมบัติเช่น Application Domains หรือ Code Access Security รันไทม์ถูกส่งผ่าน NuGet ซึ่งเป็นส่วนหนึ่งของแพ็คเกจ [ASP.NET Core]

.NET Core ยังรวมถึงไลบรารีคลาสพื้นฐาน ไลบรารีเหล่านี้ส่วนใหญ่เป็นรหัสเดียวกับไลบรารีคลาส. NET Framework แต่ได้รับการแยกออกจากกัน (เอาการอ้างอิง) เพื่อให้เราสามารถจัดส่งชุดของไลบรารีที่เล็กลง ไลบรารีเหล่านี้จัดส่งเป็นระบบ * แพ็คเกจ NuGet บน NuGet.org

และ:

[ASP.NET Core] เป็นภาระงานแรกที่ใช้. NET Core [ASP.NET Core] ทำงานบนทั้ง. NET Framework และ. NET Core ค่าคีย์ของ [ASP.NET Core] คือมันสามารถทำงานกับ [.NET Core] หลายรุ่นบนเครื่องเดียวกัน เว็บไซต์ A และเว็บไซต์ B สามารถทำงานบน. NET Core สองรุ่นที่แตกต่างกันบนเครื่องเดียวกันหรือสามารถใช้รุ่นเดียวกันได้

ในระยะสั้น: ครั้งแรกก็มีMicrosoft .NET Frameworkซึ่งประกอบด้วยรันไทม์ที่รันการประยุกต์ใช้และรหัสห้องสมุดและเอกสารเกือบเต็มที่ ห้องสมุดชั้นมาตรฐาน

รันไทม์เป็นรันไทม์ภาษาทั่วไปซึ่งจะใช้งานโครงสร้างพื้นฐานภาษาทั่วไปทำงานร่วมกับJIT คอมไพเลอร์ในการเรียกใช้CIL (เดิม MSIL) bytecode

ข้อมูลจำเพาะและการดำเนินการของ. NET ของ Microsoft ได้รับตามประวัติและวัตถุประสงค์ของ Windows และ IIS เป็นศูนย์กลางและ "อ้วน" มาก นอกจากนี้รูปแบบกับห้องสมุดน้อย namespaces และประเภทมี แต่ไม่กี่ของพวกเขาเป็นประโยชน์สำหรับเว็บหรือเดสก์ทอปพัฒนาหรือลำบากกับพอร์ตจากมุมมองทางกฎหมาย

ดังนั้นเพื่อให้. NET รุ่นที่ไม่ใช่ Microsoft ซึ่งสามารถทำงานบนเครื่องที่ไม่ใช่ Windows จึงต้องมีการพัฒนาทางเลือกอื่น ไม่เพียง แต่ต้องทำการรันไทม์สำหรับการใช้งานนั้นเท่านั้น แต่ยังต้องใช้ไลบรารีคลาส Framework ทั้งหมดเพื่อให้เป็นที่ยอมรับ ยิ่งไปกว่านั้นเพื่อให้เป็นอิสระจาก Microsoft คอมไพเลอร์สำหรับภาษาที่ใช้บ่อยที่สุดจะต้อง

Monoเป็นหนึ่งในไม่กี่คนถ้าไม่ดำเนินการทางเลือกเดียวของรันไทม์ที่ทำงานบนระบบปฏิบัติการต่าง ๆ นอกเหนือจากของ Windows เกือบ namespaces ทั้งหมดออกจากห้องสมุด Class กรอบ ณ .NET 4.5และVBและC # คอมไพเลอร์

ป้อน. NET Core: การใช้งานโอเพ่นซอร์สของรันไทม์และไลบรารีคลาสพื้นฐานที่น้อยที่สุด ฟังก์ชั่นเพิ่มเติมทั้งหมดจะถูกส่งผ่านแพ็คเกจ NuGet การปรับใช้รันไทม์เฉพาะไลบรารีเฟรมเวิร์กและแพ็คเกจบุคคลที่สามด้วยแอปพลิเคชันเอง

ASP.NET Core เป็นเวอร์ชันใหม่ของ MVC และ WebAPI ที่มาพร้อมกับเซิร์ฟเวอร์ HTTP แบบบางซึ่งทำงานบนรันไทม์. NET Core แต่ยังอยู่ใน. NET Framework


4
โอ้นั่นเป็นวิธีที่ฉันพลาด! จริงๆแล้วมันอยู่ด้านล่างในไทม์ไลน์ของบล็อก! ความอัปยศเช่นนี้ ..
Petr Abdulin

17
มันเป็นสิ่งใหม่ที่สวยและอธิบายได้ยากฉันคิดว่าคุณถามคำถามที่ดี :)
CodeCaster

3
ในความคิดที่สองดูเหมือนว่าไม่ใช่ "โพสต์ถัดไป" เนื่องจากคำอธิบายยังค่อนข้างสั้น
Petr Abdulin

2
นี่ไม่ใช่สิ่งที่ vNext นำเรามาใช่หรือไม่
ps2goat

3
เราทำเช่นนี้ตั้งแต่พวกเขาเริ่มเผยแพร่เฟรมเวิร์กผ่านทาง nuget ไม่จำเป็นต้องมีวิธีแก้ไขในโพสต์นั้น
ps2goat

84

มันเป็นชุดย่อยของ. NET Framework ที่เริ่มต้นด้วยรุ่น Compact Framework มันพัฒนาไปสู่ ​​Silverlight, Windows Store และ Windows Phone มันมุ่งเน้นไปที่การทำให้การปรับใช้มีขนาดเล็กเหมาะสำหรับการดาวน์โหลดและอุปกรณ์ที่รวดเร็วด้วยความสามารถในการจัดเก็บข้อมูลที่ จำกัด และง่ายต่อการติดตั้งบนแพลตฟอร์มที่ไม่ใช่ Windows และแน่นอนว่านี่คือเหตุผลที่เลือกเป็นรุ่นเปิดแหล่งที่มา ละเว้นส่วน "ยาก" และ "แพง" ของ CLR และไลบรารีคลาสพื้นฐาน

ไม่เช่นนั้นจะง่ายต่อการจดจำเมื่อคุณกำหนดเป้าหมายเวอร์ชันเฟรมเวิร์กเนื่องจากสารพัดจำนวนมากจะหายไป คุณจะใช้ชุดประกอบอ้างอิงที่แตกต่างกันซึ่งจะเปิดเผยเฉพาะสิ่งที่สนับสนุนโดยรันไทม์ มันถูกเก็บไว้ในเครื่องของคุณในC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCoreไดเรกทอรี


อัปเดต: หลังจากการวางจำหน่าย. NET Core 2.0 ฉันเห็นตัวเลขตัวแทนบางส่วนที่ให้ความเข้าใจที่ดี พวกเขาทำงานอย่างหนักใน API back-porting frameworks ไปยัง. NET Core ในช่วงสองปีที่ผ่านมา .NET Core 1.0 เดิมรองรับ 13,000 APIs .NET Core 2.0 เพิ่ม 20,000 APIs ทำให้มีจำนวนทั้งหมด 32,000 รายการและอนุญาตให้มีประมาณ 70% ของแพ็คเกจ NuGet ที่มีอยู่ มีชุดของ API ที่เชื่อมต่อกับ Windows มากเกินไปทำให้ง่ายต่อการเชื่อมต่อกับ Linux และ MacOS ครอบคลุมโดย Windows Compatibility Pack ซึ่งเพิ่งเปิดตัวเมื่อเร็ว ๆ นี้โดยจะเพิ่ม API อีก 20,000 รายการ


4
จากโพสต์ในบล็อกฉันจะไม่พูดแบบนี้อีก ประกาศ.NET Coreเป็นเวอร์ชัน 5.0 ซึ่งสูงกว่าเฟรมเวิร์กแบบเต็มล่าสุด ฉันคิดว่าพวกเขาหมายถึงสิ่งที่แตกต่าง
Petr Abdulin

5
ฉันเพิ่งอธิบายประวัติของ. NETCore version ไม่มีอะไรใหม่ภายใต้ดวงอาทิตย์มันมีมานานแล้ว การเปลี่ยนแปลงใน 5.0 เพิ่มขึ้นเรื่อย ๆ ตัวสั่น RyuJIT x64 ใหม่เป็นสิ่งเดียวที่ฉันนึกได้ตอนนี้ เฉพาะการเปลี่ยนแปลงใบอนุญาตใหม่จริงๆ :)
ฮันส์ Passant

3
ฉันเข้าใจคุณแล้ว แม้ว่าฉันจะยังคงคิดว่าการประกาศเซตย่อยของเฟรมเวิร์กในยุคต่อไปของ. NET เป็นตัวหนา
Petr Abdulin

50

ฉันได้พบบทความล่าสุดซึ่งฉันพบว่าทั้งสั้นและดีมาก มันครอบคลุม. NET Standard,. NET Core และ. NET Framework และความสัมพันธ์ของพวกเขา ฉันขอแนะนำอย่างยิ่ง น่าเสียดายที่ฉันไม่มีเวลาปรับตัวและวางไว้ที่นี่

เนื้อหาคำตอบเดิมด้านล่าง:


ดังนั้นตามรายการอย่างเป็นทางการล่าสุดในเรื่องนี่คือประเด็นสำคัญที่ฉันเห็นพวกเขา:

. NET Core นั้นเป็นส่วนหนึ่งของ. NET Framework ที่มีการปรับใช้งานให้เหมาะสมกับข้อกังวลของแฟคตอริ่ง

เราคิดว่า. NET Core ไม่เฉพาะเจาะจงกับ. NET Native หรือ ASP.NET 5 - BCL และ runtimes นั้นมีวัตถุประสงค์ทั่วไปและออกแบบมาให้เป็นแบบแยกส่วน ดังนั้นจึงเป็นพื้นฐานสำหรับแนวด. NET ในอนาคตทั้งหมด

ดังนั้น. Native NET และ ASP.NET 5 เป็นเพียงการทดสอบ "วิชา" สำหรับการกำหนดค่ากรอบงานใหม่บางส่วนอาจเป็นเพราะพวกเขาแตกต่างกันมาก:

ป้อนคำอธิบายภาพที่นี่

ดูว่าพวกเขาต้องการแยกระดับต่ำ แต่ส่วนใหญ่ของ BCL ยังคงเป็นเรื่องปกติ:

เราคิดว่า. NET Core ไม่เฉพาะเจาะจงกับ. NET Native หรือ ASP.NET 5 - BCL และ runtimes นั้นมีวัตถุประสงค์ทั่วไปและออกแบบมาให้เป็นแบบแยกส่วน ดังนั้นจึงเป็นพื้นฐานสำหรับแนวด. NET ในอนาคตทั้งหมด

เช่นสี่เหลี่ยมสีแดงม่วงที่ด้านบนจะถูกเพิ่มอย่างหนาแน่นกับ App รุ่นใหม่ แต่ฐานจะยังคงอยู่ร่วมกัน

การปรับใช้ NuGet:

ตรงกันข้ามกับ. NET Framework แพลตฟอร์ม. NET Core จะถูกส่งเป็นชุดของแพ็คเกจ NuGet เราตัดสินที่ NuGet เพราะนั่นคือที่ส่วนใหญ่ของระบบนิเวศห้องสมุดอยู่แล้ว

ความสัมพันธ์กับกรอบปัจจุบัน:

สำหรับ Visual Studio 2015 เป้าหมายของเราคือการทำให้แน่ใจว่า. NET Core เป็นชุดย่อยที่แท้จริงของ. NET Framework กล่าวอีกนัยหนึ่งจะไม่มีช่องว่างของฟีเจอร์ หลังจากเปิดตัว Visual Studio 2015 เราคาดหวังว่า. NET Core จะเป็นเวอร์ชั่นที่เร็วกว่า. NET Framework ซึ่งหมายความว่าจะมีการให้คะแนนในเวลาที่คุณลักษณะจะพร้อมใช้งานบนแพลตฟอร์มที่ใช้. NET Core เท่านั้น

สรุป:

แพลตฟอร์ม. NET Core เป็น. NET สแต็กใหม่ที่ปรับให้เหมาะสมสำหรับการพัฒนาโอเพนซอร์ซและการส่งที่คล่องตัวบน NuGet เรากำลังทำงานร่วมกับชุมชนโมโนเพื่อให้ใช้งานได้ดีบน Windows, Linux และ Mac และ Microsoft จะสนับสนุนบนแพลตฟอร์มทั้งสาม

เรายังคงรักษาคุณค่าที่. NET Framework นำมาสู่การพัฒนาระดับองค์กร เราจะนำเสนอ. NET Core distributions ที่เป็นตัวแทนของแพ็คเกจ NuGet ที่เราทดสอบและสนับสนุนร่วมกัน Visual Studio ยังคงเป็นศูนย์รวมการพัฒนาของคุณ การใช้แพ็คเกจ NuGet ที่เป็นส่วนหนึ่งของการจัดจำหน่ายนั้นไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ต

โดยพื้นฐานแล้วสิ่งนี้สามารถคิดได้ว่าเป็น. NET 4.6 ที่มีรูปแบบการกระจายที่เปลี่ยนแปลงซึ่งพร้อมกันนั้นกำลังอยู่ในขั้นตอนของการเป็นโอเพ่นซอร์ส


22

เอกสารปัจจุบันมีคำอธิบายที่ดีเกี่ยวกับ. NET Core คือพื้นที่ที่ใช้และอื่น ๆ ลักษณะดังต่อไปนี้ให้นิยาม. NET Core ที่ดีที่สุด:

การปรับใช้ที่ยืดหยุ่น : สามารถรวมในแอพของคุณหรือติดตั้งแบบผู้ใช้หรือเครื่อง

ข้ามแพลตฟอร์ม : ทำงานบน Windows, macOS และ Linux; สามารถย้ายไปยังระบบปฏิบัติการอื่น ๆ ได้ ระบบปฏิบัติการที่รองรับ (OSes), ซีพียูและสถานการณ์การใช้งานแอปพลิเคชันจะเพิ่มขึ้นเมื่อเวลาผ่านไปโดย Microsoft บริษัท อื่นและบุคคลทั่วไป

เครื่องมือบรรทัดคำสั่ง : สถานการณ์ผลิตภัณฑ์ทั้งหมดสามารถใช้สิทธิได้ที่บรรทัดคำสั่ง

เข้ากันได้ :. NET Core เข้ากันได้กับ. NET Framework, Xamarin และ Mono ผ่าน. NET Standard Library

โอเพ่นซอร์ส : แพลตฟอร์ม. NET Core เป็นโอเพ่นซอร์สโดยใช้ลิขสิทธิ์ MIT และ Apache 2 เอกสารอนุญาตให้ใช้ภายใต้ CC-BY .NET Core เป็นโครงการ. NET Foundation

สนับสนุนโดย Microsoft : .NET Core รองรับโดย Microsoft ต่อการสนับสนุน. NET Core

และนี่คือสิ่งที่. NET Core รวมถึง:

.NET runtime ซึ่งจัดเตรียมระบบชนิดการโหลดแอสเซมบลีตัวรวบรวมขยะการทำงานร่วมกันแบบเนทีฟและบริการพื้นฐานอื่น ๆ

ชุดของไลบรารีเฟรมเวิร์กซึ่งจัดเตรียมชนิดข้อมูลดั้งเดิมชนิดองค์ประกอบแอ็พพลิเคชันและยูทิลิตี้พื้นฐาน

ชุดเครื่องมือ SDK และคอมไพเลอร์ภาษาที่เปิดใช้งานประสบการณ์ผู้พัฒนาพื้นฐานพร้อมใช้งานใน. NET Core SDK

โฮสต์แอปพลิเคชัน 'dotnet' ซึ่งใช้เพื่อเรียกใช้แอปพลิเคชัน. NET Core มันเลือกรันไทม์และโฮสต์รันไทม์จัดทำนโยบายการโหลดแอสเซมบลีและเรียกใช้แอป โฮสต์เดียวกันยังใช้เพื่อเปิดเครื่องมือ SDK ในลักษณะเดียวกัน


19

.NET Core เป็นการนำข้ามแพลตฟอร์มใหม่มาใช้ของมาตรฐาน. NET (ECMA 335) ที่คล้ายคลึงกับ Mono แต่ทำโดย Microsoft เอง

ดูdocs.microsoft.com


18

Microsoft ยอมรับกระบวนทัศน์ของโอเพ่นซอร์สของเว็บในอนาคตและตัดสินใจที่จะเปิด. NET กับระบบปฏิบัติการอื่น .NET Core เป็น. NET Framework สำหรับ Mac และ Linux มันเป็น. NET Framework“ น้ำหนักเบา” ดังนั้นคุณสมบัติ / ไลบรารีบางอย่างจึงขาดหายไป

สำหรับ Windows ฉันยังคงใช้งาน. NET Framework และ Visual Studio 2015 .NET Core เป็นมิตรกับโลกโอเพ่นซอร์สเช่นNode.js , npm, Yeoman , Dockerและอื่น ๆ

คุณสามารถพัฒนาเว็บไซต์เต็มรูปแบบและ RESTful API บน Mac หรือ Linux ด้วย Visual Studio Code +. NET Core ที่ไม่สามารถทำได้ ดังนั้นหากคุณรัก Mac หรือ Ubuntu และคุณเป็นผู้พัฒนา. NET ให้ดำเนินการต่อและตั้งค่า

สำหรับMonoกับ. NET Core Mono ได้รับการพัฒนาเป็น. NET Framework สำหรับ Linux ซึ่งขณะนี้ได้รับมาจาก Microsoft (บริษัท ที่เรียกว่าXamarin ) และใช้ในการพัฒนาอุปกรณ์พกพา ในที่สุด Microsoft อาจผสาน / ย้าย Mono ไปเป็น. NET Core ฉันไม่ต้องกังวลเกี่ยวกับโมโนตอนนี้


12

ฉันพยายามสร้างโครงการใหม่ใน Visual Studio 2017 วันนี้ (เพิ่งอัพเกรดจาก Visual Studio 2015) และสังเกตเห็นชุดตัวเลือกใหม่สำหรับประเภทของโครงการ ไม่ว่าจะเป็นเรื่องใหม่หรือไม่นานหลังจากฉันเริ่มโครงการใหม่ !! :)

โปรแกรม Visual Studio

ฉันเจอลิงค์เอกสารนี้และพบว่ามันมีประโยชน์มากดังนั้นฉันจึงแบ่งปัน รายละเอียดของกระสุนมีอยู่ในบทความด้วย ฉันเพิ่งโพสต์กระสุนที่นี่:

คุณควรใช้. NET Core สำหรับแอปพลิเคชันเซิร์ฟเวอร์ของคุณเมื่อ:

You have cross-platform needs.
You are targeting microservices.
You are using Docker containers.
You need high performance and scalable systems.
You need side by side of .NET versions by application.

คุณควรใช้. NET Framework สำหรับแอปพลิเคชันเซิร์ฟเวอร์ของคุณเมื่อ:

Your application currently uses .NET Framework (recommendation is to extend instead of migrating)
You need to use third-party .NET libraries or NuGet packages not available for .NET Core.
You need to use .NET technologies that are not available for .NET Core.
You need to use a platform that doesnt support .NET Core.

ลิงค์นี้มีคำศัพท์ศัพท์. NET


11

จากเว็บไซต์ของ Microsoft :

.NET Core หมายถึงเทคโนโลยีต่าง ๆ รวมถึง. NET Core, ASP.NET Core และ Entity Framework Core

เทคโนโลยีเหล่านี้แตกต่างจากเนทิฟ. NET ที่ใช้รันด้วย CoreCLR รันไทม์ (ใช้ในแพลตฟอร์ม Windows สากล )

ดังที่คุณกล่าวถึงในคำถามของคุณ. NET Core ไม่เพียง แต่เป็นโอเพ่นซอร์ส แต่ยังพกพาได้ด้วย [ทำงานบน MacOS, Windows และ Linux]

internals ของ. NET Core ยังได้รับการปรับให้เหมาะสมที่จะไม่ใช้โมดูลที่แตกต่างจากไลบรารีหลักของมันเว้นแต่ว่ามันจะเป็นที่ต้องการโดยโปรแกรม


4
". NET Core หมายถึงเทคโนโลยีต่าง ๆ รวมถึง. NET Core" ... สิ่งที่ยอดเยี่ยม
Kieren Johnstone

3

Microsoft เพิ่งประกาศ. NET Core v 3.0 ซึ่งเป็น. NET Core เวอร์ชันที่ได้รับการปรับปรุง

สำหรับรายละเอียดเพิ่มเติมโปรดเยี่ยมชมบทความที่ยอดเยี่ยมนี้: ความแตกต่างระหว่าง. NET Framework และ. NET Core ตั้งแต่เดือนเมษายน 2019


3
Link-เพียงคำตอบและคำตอบส่วนใหญ่มีความคิดเห็นแบบตามกำลังหมดแรง โปรดดูmeta.stackexchange.com/a/8259
ดับเบิลบี๊บ

ได้ที่ฉันแก้ไขส่วนความเห็น .. ขอบคุณที่แจ้งให้เราทราบ
itsikha

1
ปรับปรุงในทางใดบ้าง คุณสามารถให้ข้อมูลสรุปของสิ่งที่คุณคิดว่าเป็นการเปลี่ยนแปลงและเพิ่มเติมที่สำคัญที่สุดได้หรือไม่?
Peter Mortensen

3

.NET Core เป็นเฟรมเวิร์กซอฟต์แวร์คอมพิวเตอร์ที่ฟรีและโอเพ่นซอร์สที่ได้รับการจัดการสำหรับระบบปฏิบัติการ Windows, Linux และ macOS มันเป็นโอเพนซอร์สข้ามแพลตฟอร์มสืบต่อไป. NET Framework

แอปพลิเคชั่น. NET Core รองรับ Windows, Linux และ macOS โดยสรุปแล้ว. NET Core นั้นคล้ายกับ. NET Framework แต่เป็น cross-platform เช่นอนุญาตให้แอปพลิเคชั่น. NET รันบน Windows, Linux และ MacOS แอ็พพลิเคชันเฟรมเวิร์ก. NET สามารถทำงานบนระบบ Windows เท่านั้น ดังนั้นความแตกต่างพื้นฐานระหว่าง. NET Framework และ. NET หลักคือ. NET Core เป็นแพลตฟอร์มข้ามและ. NET Framework ทำงานบน Windows เท่านั้น

นอกจากนี้. NET Core ยังมีการฉีดพึ่งพาในตัวโดย Microsoft และคุณไม่จำเป็นต้องใช้ไฟล์ซอฟต์แวร์ / DLL ของบุคคลที่สามสำหรับการฉีดพึ่งพา


1
คุณสามารถอธิบายอย่างละเอียดเกี่ยวกับการฉีดพึ่งพา? สิ่งนี้หมายความว่าอะไรในบริบทนี้ คุณอ้างถึงเฟรมเวิร์กเฉพาะหรือไม่ คุณมีข้อมูลอ้างอิง / ลิงค์บ้างไหม?
Peter Mortensen

1

.NET Core เป็น. NET แบบโอเพ่นซอร์สและไขว้แพลตฟอร์ม ผลิตภัณฑ์ของ Microsoft นอกเหนือจากความสามารถที่ยอดเยี่ยมที่พวกเขามีอยู่แล้วนั้นมีราคาแพงสำหรับผู้ใช้ทั่วไปโดยเฉพาะอย่างยิ่งผู้ใช้ปลายทางของผลิตภัณฑ์ที่ทำโดยเทคโนโลยี. NET

ลูกค้าระดับต่ำส่วนใหญ่ต้องการใช้ Linux เป็นระบบปฏิบัติการและก่อนหน้า. NET Core พวกเขาไม่ต้องการใช้เทคโนโลยีของ Microsoft แม้ว่าจะมีความสามารถที่ยอดเยี่ยมก็ตาม แต่หลังจากการผลิต. NET Core ปัญหานี้ได้รับการแก้ไขอย่างสมบูรณ์และเราสามารถทำให้ลูกค้าพึงพอใจโดยไม่ต้องคำนึงถึงระบบปฏิบัติการของพวกเขา ฯลฯ


มันไม่ได้รับการแก้ไขอย่างสมบูรณ์ คุณจะมีเวลาที่ยากลำบากในการใช้งานWindows FormsหรือWPF application บน Linux
Peter Mortensen

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.