.NET Core vs ASP.NET Core


171

อะไรคือความแตกต่างระหว่าง. NET Core และ ASP.NET Core?

พวกเขาเป็นพิเศษร่วมกัน? ฉันได้ยินมาว่า ASP.NET Core นั้นสร้างขึ้นบน. NET Core แต่มันก็สามารถสร้างได้ในกรอบ NET เต็มรูปแบบ

ดังนั้น ASP.NET Core คืออะไร?


3
มีความเป็นไปได้ที่ซ้ำกันของASP.NET 5, .NET Core และ ASP.NET Core 5 แตกต่างกันอย่างไร
Tseng

คำตอบ:


209

อัปเดต 2020 : โปรดทราบว่า ASP.NET Core 3 และสูงกว่านั้นขึ้นอยู่กับ. NET Core และไม่สามารถใช้บน. NET Framework ได้อีกต่อไป คำอธิบายด้านล่างสำหรับ ASP.NET Core 1.x-2.x; การแยกเลเยอร์ยังคงเป็นจริงสำหรับ ASP.NET Core 3.0 แต่เลเยอร์ ASP.NET Core ไม่สามารถใช้บน. NET Framework ใน 3.0+ ได้อีกต่อไป

.NET Core เป็นรันไทม์ มันสามารถรันแอพพลิเคชั่นที่สร้างขึ้นมาได้

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

ส่วนที่สับสนคือแอปพลิเคชันที่ใช้ไลบรารีและเครื่องมือของ ASP.NET Core มักจะถูกเรียกว่า "ASP.NET Core Application" ซึ่งในทางทฤษฎีไม่ได้บอกว่ามันถูกสร้างขึ้นสำหรับ. NET Core หรือ. NET Framework ดังนั้น "แกนโปรแกรมประยุกต์ ASP.NET" คือยังเป็น "แกนแอพลิเคชัน .NET" หรือ "กรอบใบสมัคร .NET"

ภาพนี้แสดงความสัมพันธ์ของเทคโนโลยีที่เกี่ยวข้อง (นำมาจากโพสต์บล็อกนี้ ) เทคโนโลยีเว็บแอพพลิเคชั่น. NET

ที่นี่คุณจะเห็นว่า ASP.NET Core นั้นถูกสร้างขึ้น "ที่ด้านบนของ". NET Framework และ. NET Core ขณะที่ "ASP.NET" (ตอนนี้มักเรียกว่า "classic ASP.NET") เป็น. NET Framework เท่านั้น


22
แล้วเราจะเรียกคลาส ASP ว่าอะไร? "Ancient ASP"? : p
Dan Schnau

1
ดังนั้นหากแอปพลิเคชันได้รับการพัฒนาโดยใช้ASP.NET Core บนเว็บเซิร์ฟเวอร์เราจำเป็นต้องติดตั้ง.NET Core RuntimeและASP.NET Core runtimeหรือไม่ASP.NET Core runtimeก็เพียงพอ
LP13

ขึ้นอยู่กับเวอร์ชัน 2.1 จะแยกออกเล็กน้อย แต่ตราบใดที่คุณติดตั้ง "โฮสติ้งบันเดิล" บนเซิร์ฟเวอร์คุณควรจะใช้ได้ ถ้าคุณพัฒนาสำหรับ ASP.NET Core บน. NET Framework คุณยังคงต้องการบันเดิลโฮสต์สำหรับโมดูล IIS ที่จำเป็น
Martin Ullrich

3
@DanSchnau เรามี "Classic ASP", "ASP.NET" AKA "Classic ASP.NET" และ "ASP.NET Core" ดังนั้นจึงไม่มีข้อขัดแย้งเลย :)
Gouda

@ LP13: ไม่มี "ASP.NET Core Runtime" มันเป็นเพียงกลุ่มของแพคเกจที่ไม่สามารถทำงานได้ด้วยตัวเอง (โดยไม่ต้องติดตั้ง. NET Core pre หรือติดตั้งหรือจัดส่งเป็นแอพที่มีในตัวเอง)
Tseng

43

ASP.NET Core ที่ใช้. NET Core - การพึ่งพาทั้งหมดมีอยู่ในตัวเองสามารถใช้แพ็คเกจ NuGet ส่วนใหญ่ไม่สามารถใช้แพ็คเกจเฉพาะของ Windows สามารถทำงานบน Windows, Linux และ Mac ได้

ASP.NET Core ที่ใช้. NET Framework - การพึ่งพาตัวเองส่วนใหญ่นั้นอยู่ในตัวเอง, เรียกใช้งานบน Windows เท่านั้น, จะสามารถเข้าถึงแพ็คเกจ NuGet เฉพาะ Windows ได้, ต้องใช้. NET Framework version ซึ่งมีการกำหนดเป้าหมายไว้ในเครื่อง


8
ใครตั้งชื่อสิ่งเหล่านี้ นี่คือความสับสนสุด ๆ
นิค

1
@Nick: การตลาดของ Microsoft พวกเขามีประวัติอันยาวนานในเรื่องนี้ พวกเขายังไม่ได้ค้นพบเว็บ - ใช้คำนามทั่วไปสำหรับผลิตภัณฑ์ (ไม่ดีในโลกของเครื่องมือค้นหาที่คำทั่วไปที่เฉพาะเจาะจงน้อยกว่าจะดีกว่าโดยเฉพาะคำที่ไม่ซ้ำในพจนานุกรม)
Peter Mortensen

23

ASP.NET Core เป็นหนึ่งในปริมาณงานที่รองรับโดย. NET Core

จากคู่มือ. NET Core :

โดยตัวมันเอง. NET Core มีรูปแบบแอพพลิเคชั่นเดียว - แอพคอนโซล - ซึ่งมีประโยชน์สำหรับเครื่องมือบริการในท้องถิ่นและเกมที่ใช้ข้อความ มีการสร้างโมเดลแอปพลิเคชันเพิ่มเติมที่ด้านบนของ. NET Core เพื่อขยายฟังก์ชันการทำงานเช่น:

  • แกน ASP.NET
  • แพลตฟอร์ม Windows 10 Universal Windows (UWP)
  • Xamarin.Forms

นี่คือคำตอบที่เกี่ยวข้องมากขึ้นสำหรับฉัน .Net Core สำหรับแอปคอนโซล, ASP.Net Core สำหรับเว็บแอป
Shawn Zhang

5

.NET Framework เป็นรุ่นล่าสุด จะไม่มีอีกหลังจาก 4.8 Microsoft จะดำเนินการต่อด้วย. NET Core จากเวลานี้คุณควรเลือก. NET Core ในโครงการของคุณ


2

ด้านบนของมันฉันต้องการเพิ่มที่อาจช่วยใครบางคน

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


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