ขณะนี้ Microsoft มี. NET Core, .NET Framework และ Xamarin (Mono) ในตระกูล. NET
ดูเหมือนจะมีการทับซ้อนกันมากมายที่นี่ . NET ประเภทนี้แตกต่างกันอย่างไร เมื่อใดที่ฉันควรเลือกใช้. NET Core ในโครงการของฉันแทนที่จะเป็น. NET Framework หรือ Xamarin
ขณะนี้ Microsoft มี. NET Core, .NET Framework และ Xamarin (Mono) ในตระกูล. NET
ดูเหมือนจะมีการทับซ้อนกันมากมายที่นี่ . NET ประเภทนี้แตกต่างกันอย่างไร เมื่อใดที่ฉันควรเลือกใช้. NET Core ในโครงการของฉันแทนที่จะเป็น. NET Framework หรือ Xamarin
คำตอบ:
คุณควรใช้ .NET หลักแทนการ .NET Framework หรือ Xamarin ใน 6 ต่อไปนี้สถานการณ์โดยทั่วไปเป็นไปตามเอกสารที่นี่
1. ความต้องการข้ามแพลตฟอร์ม
เห็นได้ชัดว่าถ้าเป้าหมายของคุณคือมีแอพพลิเคชัน (เว็บ / บริการ) ที่ควรจะสามารถใช้งานข้ามแพลตฟอร์ม (Windows, Linux และ MacOS) ตัวเลือกที่ดีที่สุดในระบบนิเวศ. NET คือการใช้. NET Core เป็นรันไทม์ (CoreCLR ) และไลบรารีเป็นข้ามแพลตฟอร์ม อีกทางเลือกหนึ่งคือใช้โครงการโมโน
ตัวเลือกทั้งสองเป็นโอเพ่นซอร์ส แต่. NET Core ได้รับการสนับสนุนโดยตรงและเป็นทางการโดย Microsoft และจะมีการลงทุนจำนวนมากก้าวไปข้างหน้า
เมื่อใช้. NET Core ข้ามแพลตฟอร์มประสบการณ์การพัฒนาที่ดีที่สุดจะมีอยู่ใน Windows ด้วย Visual Studio IDE ซึ่งสนับสนุนคุณสมบัติการเพิ่มผลผลิตมากมายรวมถึงการจัดการโครงการการดีบักการควบคุมแหล่งข้อมูลการปรับโครงสร้างการแก้ไขที่หลากหลายรวมถึง Intellisense การทดสอบและอีกมากมาย แต่การพัฒนาที่หลากหลายก็รองรับการใช้ Visual Studio Code บน Mac, Linux และ Windows รวมถึงระบบภายในและการดีบัก แม้แต่บรรณาธิการบุคคลที่สามเช่น Sublime, Emacs, VI และทำงานได้ดีขึ้นและสามารถแก้ไขระบบ Intellisense โดยใช้โอเพ่นซอร์ส Omnisharp
2. Microservices
เมื่อคุณกำลังสร้างระบบไมโครเซอร์วิซที่ประกอบด้วยไมโครเซลเวอร์ขนาดเล็กแบบอิสระปรับขนาดได้แบบไร้รัฐหรือไร้รัฐประโยชน์ที่ยอดเยี่ยมที่คุณมีที่นี่คือคุณสามารถใช้เทคโนโลยี / กรอบ / ภาษาต่างๆในระดับบริการไมโคร ที่ช่วยให้คุณใช้วิธีการที่ดีที่สุดและเทคโนโลยีต่อพื้นที่ขนาดเล็กในระบบของคุณดังนั้นหากคุณต้องการสร้าง microservices ที่มีประสิทธิภาพและปรับขนาดได้คุณควรใช้. NET Core ในที่สุดหากคุณต้องการใช้ไลบรารี. NET Framework ใด ๆ ที่ไม่รองรับกับ. NET Core คุณสามารถสร้าง microservice นั้นด้วย. NET Framework และในอนาคตคุณอาจจะสามารถแทนที่ด้วย. NET แกน
แพลตฟอร์มโครงสร้างพื้นฐานที่คุณสามารถใช้ได้มีมากมาย ในอุดมคติสำหรับระบบไมโครบริการขนาดใหญ่และซับซ้อนคุณควรใช้ Azure Service Fabric แต่สำหรับ Microservices ไร้สัญชาติคุณสามารถใช้ผลิตภัณฑ์อื่น ๆ เช่น Azure App Service หรือ Azure Function
โปรดทราบว่า ณ เดือนมิถุนายน 2559 เทคโนโลยีทุกตัวใน Azure ไม่รองรับ. NET Core แต่การสนับสนุน. NET Core ใน Azure จะเพิ่มขึ้นอย่างมากในขณะนี้ที่. NET Core นั้นเปิดตัว RTM
3. ระบบที่มีประสิทธิภาพและปรับขนาดได้ดีที่สุด
เมื่อระบบของคุณต้องการประสิทธิภาพและความสามารถในการปรับขยายที่ดีที่สุดเพื่อให้คุณได้รับการตอบสนองที่ดีที่สุดไม่ว่าคุณจะมีผู้ใช้จำนวนเท่าใดก็ตามนั่นคือที่. NET Core และ ASP.NET Core ส่องแสงจริงๆ ยิ่งคุณสามารถทำอะไรกับโครงสร้างพื้นฐาน / ฮาร์ดแวร์ในจำนวนที่เท่ากันประสบการณ์ที่คุณมีต่อผู้ใช้ของคุณก็จะยิ่งมากขึ้นด้วยต้นทุนที่ต่ำลง
การปรับปรุงกฎหมายของ Moore สำหรับซีพียูเดี่ยวไม่ได้ใช้งานอีกต่อไป แต่คุณต้องทำมากขึ้นในขณะที่ระบบของคุณกำลังเติบโตและต้องการความสามารถในการปรับขนาดและประสิทธิภาพที่สูงขึ้นสำหรับผู้ใช้ที่มีความต้องการมากขึ้นทุกวันซึ่งมีจำนวนเพิ่มขึ้นอย่างทวีคูณ คุณต้องมีประสิทธิภาพมากขึ้นปรับให้เหมาะสมทุกที่และเพิ่มขนาดให้ดีขึ้นในกลุ่มของเครื่อง VMs และแกนประมวลผล CPU ในที่สุด มันไม่ได้เป็นเพียงเรื่องของความพึงพอใจของผู้ใช้ นอกจากนี้ยังสามารถสร้างความแตกต่างอย่างมากในต้นทุน / TCO นี่คือเหตุผลว่าทำไมจึงเป็นเรื่องสำคัญที่จะต้องพยายามให้มีประสิทธิภาพและขยายขีดความสามารถได้
ดังที่กล่าวไว้ถ้าคุณสามารถแยกชิ้นส่วนเล็ก ๆ ของระบบของคุณเป็น microservices หรือวิธีการแบบคู่อื่น ๆ แบบหลวม ๆ มันจะดีกว่าเพราะคุณจะไม่สามารถพัฒนาแต่ละชิ้นเล็ก ๆ / microservice ได้อย่างอิสระและมีระยะยาวที่ดีขึ้น ความคล่องตัวและการบำรุงรักษา แต่คุณจะสามารถใช้เทคโนโลยีอื่นใดในระดับบริการระดับไมโครถ้าสิ่งที่คุณต้องทำไม่สามารถทำงานร่วมกับ. NET Core ได้ และในที่สุดคุณจะสามารถ refactor มันและนำไปที่. NET Core เมื่อเป็นไปได้
4. การพัฒนารูปแบบบรรทัดคำสั่งสำหรับ Mac, Linux หรือ Windows
วิธีนี้เป็นทางเลือกเมื่อใช้. NET Core คุณสามารถใช้ Visual Studio IDE แบบเต็มได้ แต่ถ้าคุณเป็นนักพัฒนาซอฟต์แวร์ที่ต้องการพัฒนาด้วยเครื่องมือแก้ไขน้ำหนักเบาและการใช้บรรทัดคำสั่งอย่างหนัก NET Core ได้รับการออกแบบสำหรับ CLI มันมีเครื่องมือบรรทัดคำสั่งง่าย ๆ ที่มีอยู่บนแพลตฟอร์มที่รองรับทั้งหมดทำให้ผู้พัฒนาสามารถสร้างและทดสอบแอพพลิเคชั่นด้วยการติดตั้งเพียงเล็กน้อยบนเครื่องผู้พัฒนาห้องปฏิบัติการหรือเครื่องจักรที่ใช้งานจริง บรรณาธิการเช่น Visual Studio Code ใช้เครื่องมือบรรทัดคำสั่งเดียวกันสำหรับประสบการณ์การพัฒนาของพวกเขา และเช่นเดียวกับ Visual Studio ใช้เครื่องมือ CLI เดียวกัน แต่ซ่อนไว้เบื้องหลังประสบการณ์ IDE ที่สมบูรณ์ ตอนนี้นักพัฒนาสามารถเลือกระดับที่พวกเขาต้องการโต้ตอบกับห่วงโซ่เครื่องมือจาก CLI ไปยังตัวแก้ไขไปยัง IDE
5. ต้องการเคียงข้างกับ. NET เวอร์ชั่นต่อระดับแอปพลิเคชัน
หากคุณต้องการติดตั้งแอปพลิเคชั่นที่มีการพึ่งพาเฟรมเวิร์กเวอร์ชันต่าง ๆ ใน. NET คุณต้องใช้. NET Core ซึ่งให้ 100% เคียงข้างกันตามที่อธิบายไว้ก่อนหน้าในเอกสารนี้
6. แอพ Windows 10 UWP .NET
นอกจากนี้คุณอาจต้องการอ่าน:
นี่คือวิธีที่ Microsoft อธิบาย:
.NET Frameworkเป็นรสชาติ "เต็ม" หรือ "ดั้งเดิม" ของ. NET ที่เผยแพร่กับ Windows ใช้สิ่งนี้เมื่อคุณสร้างเดสก์ท็อป Windows หรือแอพ UWP หรือทำงานกับ ASP.NET 4.6 ขึ้นไป
.NET Coreเป็น. NET แบบข้ามแพลตฟอร์มที่ทำงานบน Windows, Mac และ Linux ใช้สิ่งนี้เมื่อคุณต้องการสร้างคอนโซลหรือเว็บแอปที่สามารถทำงานบนแพลตฟอร์มใดก็ได้รวมถึงภายในคอนเทนเนอร์ Docker ไม่รวมแอพ UWP / เดสก์ท็อปในปัจจุบัน
Xamarinใช้สำหรับสร้างแอพมือถือที่สามารถทำงานบน iOS, Android หรืออุปกรณ์ Windows Phone
โดยปกติ Xamarin จะทำงานบนMonoซึ่งเป็นรุ่นของ. NET ที่สร้างขึ้นเพื่อรองรับข้ามแพลตฟอร์มก่อนที่ Microsoft จะตัดสินใจข้ามแพลตฟอร์มกับ. NET Core อย่างเป็นทางการ เช่นเดียวกับ Xamarin แพลตฟอร์ม Unity ยังทำงานบน Mono
จุดสับสนโดยทั่วไปคือที่ที่ ASP.NET Core พอดี ASP.NET Core สามารถทำงานบน. NET Framework (Windows) หรือ. NET Core (ข้ามแพลตฟอร์ม) อย่างละเอียดตามรายละเอียดในคำตอบนี้: ความแตกต่างระหว่าง ASP NET Core (.NET Core) และ ASP.NET Core (.NET Framework)
คุณสามารถอ้างอิงในบรรทัดนี้ - ความแตกต่างระหว่าง ASP.NET Core (.NET Core) และ ASP.NET Core (.NET Framework)
ซามารินไม่ได้เป็นที่ถกเถียงกันเลย เมื่อคุณต้องการสร้างแอปมือถือ (iOS, Android และ Windows Mobile) โดยใช้ C # Xamarin เป็นทางเลือกเดียวของคุณ
.NET Frameworkรองรับ Windows และเว็บแอปพลิเคชัน วันนี้คุณสามารถใช้ Windows Forms, WPF และ UWP เพื่อสร้างแอปพลิเคชัน Windows ใน. NET Framework ASP.NET MVC ใช้เพื่อสร้างเว็บแอปพลิเคชั่นใน. NET Framework
.NET Coreเป็นเฟรมเวิร์กโอเพนซอร์สและข้ามแพลตฟอร์มใหม่เพื่อสร้างแอปพลิเคชันสำหรับระบบปฏิบัติการทั้งหมดรวมถึง Windows, Mac และ Linux .NET Core รองรับ UWP และ ASP.NET Core เท่านั้น UWP ใช้เพื่อสร้าง Windows 10 เป้าหมาย Windows และแอพพลิเคชั่นมือถือ ASP.NET Core ใช้เพื่อสร้างเว็บแอปพลิเคชันที่ใช้เบราว์เซอร์
คุณต้องการรายละเอียดเพิ่มเติมอ้างอิงลิงค์นี้
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/
https://docs.microsoft.com/en-us/dotnet/articles / มาตรฐาน / การเลือก-core กรอบเซิร์ฟเวอร์
สุทธิแกนคลาสไลบรารีที่ถูกสร้างขึ้นบนสุทธิมาตรฐาน .NET Standard คุณสามารถสร้างโปรเจ็กต์ไลบรารีคลาสที่ไม่สามารถดำเนินการแบบสแตนด์อโลนได้และควรอ้างอิงโดย. NET Core อื่นหรือโครงการปฏิบัติการ. NET Framework หากคุณต้องการติดตั้งไลบรารี่ที่พกพาไปยัง. Net Framework , .Net CoreและXamarinเลือก. Net Standard Library
(คุณสามารถสร้างโครงการที่ปฏิบัติการได้ (เช่นแอปพลิเคชันคอนโซลหรือแอปพลิเคชัน ASP.NET) ด้วย. NET Framework
เป็นกรอบโอเพ่นซอร์สและข้ามแพลตฟอร์มใหม่เพื่อสร้างแอปพลิเคชันสำหรับระบบปฏิบัติการทั้งหมดรวมถึง Windows, Mac และ Linux
การสนับสนุนการใช้งาน. NET Standard [สีน้ำเงิน]และแพลตฟอร์มที่ทำงานได้ขั้นต่ำสำหรับการสนับสนุนอย่างเต็มรูปแบบของ. NET Standard (ล่าสุด: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-net) สนับสนุน] )
.NET 5จะเป็นเวอร์ชั่นรวมของ. NET Variants ทุกรุ่นที่จะมีขึ้นในเดือนพฤศจิกายน 2563 ดังนั้นจึงไม่จำเป็นต้องเลือกระหว่างตัวแปรอีกต่อไป
.NET Core เป็น. NET ปัจจุบันที่คุณควรใช้ในตอนนี้ (ฟีเจอร์เพิ่มเติม, บั๊กคงที่ ฯลฯ )
Xamarin เป็นแพลตฟอร์มที่ให้บริการโซลูชั่นสำหรับปัญหามือถือข้ามแพลตฟอร์มที่เข้ารหัสใน C # ดังนั้นคุณไม่จำเป็นต้องใช้ Swift แยกต่างหากสำหรับ IOS และจะใช้สำหรับ Android
Xamarin ใช้สำหรับแอปพลิเคชั่นโทรศัพท์ (ทั้ง IOS / Android) .NET Core ใช้สำหรับการออกแบบเว็บแอปพลิเคชันที่สามารถทำงานได้ทั้ง Apache และ IIS
นั่นคือความแตกต่างในสองประโยค
อัพเดทเมื่อพฤษภาคม 2019
คุณควรใช้. Net Core 3.0 และใหม่กว่าในการอัปเกรดเป็นรุ่นถัดไป. Net 5 สิ่งที่คุณต้องการคือเพียงหนึ่งแพลตฟอร์มแบบครบวงจร. Net5
จะมีเพียง. NET เพียงหนึ่งก้าวไปข้างหน้าและคุณจะสามารถใช้เพื่อกำหนดเป้าหมาย> Windows, Linux, macOS, iOS, Android, tvOS, watchOS และ WebAssembly และอื่น ๆ https://devblogs.microsoft.com/dotnet/introducing-net-5/