ความสัมพันธ์ระหว่าง C #, .NET, ASP, ASP.NET ฯลฯ [ปิด]


143

ฉันไม่ชัดเจนเกี่ยวกับความแตกต่างระหว่าง C #, C # .NET และเหมือนกันสำหรับ ASP และภาษา '.NET' อื่น ๆ

จากสิ่งที่ฉันเข้าใจ. NET เป็นสิ่งที่ห้องสมุด / กรอบของ ... สิ่ง ฉันคิดว่าพวกเขาเข้าถึงข้อมูล Windows เช่นองค์ประกอบของฟอร์มเป็นต้น แต่ดูเหมือนจะไม่ได้ใช้กับ ASP.NET

นอกจากนี้ฉันเห็นผู้คนเรียกตัวเองว่า '.NET' นี่หมายความว่าพวกเขาคล่องแคล่วใน C #, ASP และภาษาอื่น ๆ ?

ในที่สุดฉันไม่เคยเห็น C # หากไม่ได้แนบ. NET C # เชื่อมโยงกับ. NET อย่างใกล้ชิดว่าไม่สามารถใช้งานได้หรือไม่

โดยสรุป:. NET มีอะไรให้บ้าง มันเกี่ยวข้องกับ C # และ ASP ฯลฯ อย่างไร 'นักพัฒนา. NET' หมายถึงอะไร? และในที่สุดทำไมคุณไม่เห็น C # ที่ไม่มี. NET

[นอกเหนือจากนี้ฉันรู้ว่าคำถามเหล่านี้มีหลายคำถาม แต่ฉันคิดว่าพวกเขามีความเกี่ยวพันกันมาก (หรืออย่างน้อยนั่นก็คือความประทับใจที่เรียกว่า

คำตอบ:


172

ฉันเข้าใจความสับสนของคุณเชื่อฉันฉันมีมุมมองเดียวกันเมื่อมันมาถึงโลก Java! อย่างไรก็ตามฉันจะพยายามทำลายคำถามของคุณและจัดการกับพวกเขาทีละคน ... และเพิ่มจุดอื่น ๆ ที่หวังว่าจะช่วยชี้แจงสิ่งที่เกิดขึ้น:

  1. C # และ C # .NET เป็นสิ่งเดียวกัน ... C #
  2. .NET คือที่คุณพูดไลบรารีของรหัสที่. NET ภาษาสามารถพูดคุยกับ
  3. ภาษา. NET มีหลายรสชาติเช่น: C # .NET, VB.NET, C ++ ที่มีการจัดการ, F #
  4. . NET รวบรวมภาษา CIL ( Common Intermediate Language ) ซึ่งหมายความว่าพวกเขาทั้งหมดเริ่ม "พูด" ภาษาเดียวกันและสามารถทำงานร่วมกัน
  5. ASP.NET เป็นส่วนหนึ่งของ. NET library ที่ใช้ในการทำเว็บไซต์ มีส่วนย่อยอื่น ๆ ของ ASP.NET เช่น WebForms (วิธีเก่าแก่ในการสร้างเว็บเพจ) หรือไลบรารี MVC ที่สุกเร็วซึ่งน่าดูเช่นกัน
  6. แบบฟอร์ม (เทคโนโลยีเก่า) หรือ WPF ใหม่ (Windows Presentation Foundation) เป็นเทคโนโลยีที่คุณมักใช้ใน. NET เพื่อสร้างสิ่งที่คุณรู้ว่าเป็นแอปพลิเคชันเดสก์ท็อปแบบดั้งเดิม

สิ่งสุดท้ายที่ฉันอยากจะทำคือความแตกต่างระหว่างห้องสมุดและกรอบงาน ในช่วงไม่กี่ปีที่ผ่านมามีการใช้คำทั้งสองนี้เป็นคำเหมือนกันอย่างไรก็ตามไม่ใช่กรณี วิธีที่ง่ายที่สุดที่ฉันสามารถคิดให้แตกต่างคือ

  • ห้องสมุดมีฟังก์ชั่นมากมายที่คุณอาจเลือกและเลือกใช้เช่นการใช้เทคโนโลยีชิ้นเดียวไม่ได้หมายความว่าคุณถูกล็อคไว้ในส่วนที่เหลือ นี่หมายถึงอิสรภาพ แต่คุณจะมีงานที่ถูกตัดออกมากขึ้นสำหรับคุณ
  • อย่างไรก็ตามกรอบการทำงานได้กำหนดไว้เป็นอย่างมากว่าคุณจะทำงานอย่างไร มันให้ขั้นตอนการทำงานที่ดีขึ้นหรือแย่ลงยากที่จะเปลี่ยนแปลง นี่หมายถึงการพัฒนาอย่างรวดเร็ว / การสร้างต้นแบบ แต่หากมีการเปลี่ยนแปลงที่สำคัญในอนาคตอาจเป็นไปไม่ได้ (หรือใช้เวลานานมาก) ในการดำเนินการ

โครงการที่คุณกำลังดำเนินการจะขึ้นอยู่กับตัวเลือกที่คุณเลือก


7
+1 แต่หนึ่ง niggle เล็กน้อยใน # 2 - .NET ไม่ใช่ "ไลบรารี่ของรหัส" มันเป็นเฟรมเวิร์ก (ซึ่งคุณกำหนดอย่างถูกต้องว่าเป็น "เวิร์กโฟลว์" ที่กำหนดวิธีการกำหนดและเรียกใช้โปรแกรมของคุณ) คอลเลกชันของไลบรารีมาตรฐานที่เผยแพร่โดย Microsoft ที่พร้อมใช้งานกับภาษา. NET คือ. NET Base Class Library (BCL)
nlawalker

7
โปรดทราบว่าอาจใช้ ASP เพื่ออ้างถึง ASP คลาสสิกแทน ASP.NET
Brian

11
ฉันไม่เห็นด้วยกับจุดที่ 1 สามารถใช้ C # ได้โดยไม่มี. NET ดังนั้น C # .NET จะระบุอย่างชัดเจนว่าคุณใช้ C # กับ. NET Framework ในขณะที่ C # ไม่ ในทางปฏิบัติแม้ว่าคนส่วนใหญ่คิดว่า C # ใช้กับ. NET
Ian Newson

23

.NET เป็นเฟรมเวิร์กการพัฒนาแอปพลิเคชัน - ประกอบด้วยไลบรารีจำนวนมากที่มีฟังก์ชันการทำงานหลากหลาย

C # เป็นภาษาที่สร้างขึ้นเพื่อใช้กับ. NET ไม่ใช่ภาษาที่รองรับ. NET เท่านั้น - ตัวเลือกอื่น ๆ ได้แก่ VB.NET, F #, Managed C ++, IronRuby และ IronPython คุณเขียนโค้ดในภาษาที่คุณเลือกเพื่อใช้ฟังก์ชันการทำงานใน. NET Framework

ASP.NET เป็นส่วนเสริมของ. NET ที่ช่วยคุณในการเขียนแอปพลิเคชันและเว็บไซต์บนเว็บ กรอบงานโดยรวมส่วนใหญ่มีอยู่ (หรือเป็นประโยชน์ในกรณีของ WinForms) ในบริบทนี้

[Classic] ASP เป็นเฟรมเวิร์กเว็บที่เก่ากว่าจาก Microsoft เช่นกัน แม้จะมีชื่อที่คล้ายกัน ASP และ ASP.NET นั้นค่อนข้างแตกต่างกันภายใต้ประทุน ข้อแตกต่างที่โดดเด่นอย่างหนึ่งคือตัวเลือกภาษาเฉพาะสำหรับ ASP คือ VBScript และ JScript ASP เป็นเทคโนโลยีที่เก่าและล้าสมัยอย่าสร้างปัญหาให้ตัวคุณเอง


14

ก่อนอื่น. Net เป็นเฟรมเวิร์ก bytecode คล้ายกับ Java bytecode .Net อย่างไรก็ตามเป็นเพียง BYTECODE ไม่มีภาษาราชการ ".Net" สองภาษาหลักที่กำหนดเป้าหมาย. Net คือ C # และ VB.Net ASP.Net เป็นส่วนขยายของไลบรารี. Net ที่มีให้เพื่อเปิดใช้งานแอปพลิเคชันที่เขียนใน C # หรือ VB.Net (หรือภาษาอื่น ๆ ที่กำหนดเป้าหมายเป็น. Net) เพื่อทำงานเป็นเว็บไซต์

นักพัฒนาที่บอกว่าพวกเขารู้ว่า. Net มักจะหมายถึงพวกเขารู้ว่า C # หรือ VB.Net หรือทั้งสองอย่างและสามารถเรียนรู้ได้อย่างง่ายดายว่าสิ่งใดที่พวกเขาไม่รู้ (C # และ VB.Net เป็นภาษาที่คล้ายกันมากนอกเหนือจากไวยากรณ์ทั่วไป)

สุดท้าย ASP ไม่เหมือนกับ ASP.Net พวกเขามีความแตกต่างอย่างมาก


ดังนั้นจึงมีความแตกต่างระหว่างแอปพลิเคชัน ac # และแอปพลิเคชัน ac # .net หรือไม่ ฉันถามเมื่อคุณลบ. net จาก c # .net ในคำตอบของคุณ ส่วนนักพัฒนา. Net นั้นมีประโยชน์มาก
Megan Walker

5
จริงๆแล้ว C # เป็นเพียงภาษาเดียวเท่านั้นไม่ได้ผูกติดกับ. Net แต่การใช้งานปัจจุบันทั้งหมดของ C # อยู่กับ. Net ดังนั้นในทางปฏิบัติจึงไม่มีความแตกต่างระหว่าง "C #" และ "C # .Net"
Earlz

ในฐานะนักพัฒนา ". NET" ฉันอ้างสิทธิ์เพราะฉันหลีกเลี่ยงวิธี / คุณสมบัติพิเศษด้านภาษามากที่สุดเท่าที่จะเป็นไปได้เพื่อให้ฉันสามารถข้ามภาษา NET ทั้งหมดที่มีการเปลี่ยนแปลงทางไวยากรณ์เท่านั้น
เวย์น

1
C # ภาษาเป็นเพียงภาษา คุณสามารถเขียนอะไรก็ได้ใน C # โดยไม่ต้องคุยกับแบ็กเอนด์หรือ. NET Framework สำหรับผู้ที่สงสัยฉันให้ดูที่ Xamarin C #: วิธีการเขียนแอพพื้นฐานของ iOS และ Android โดยไม่ต้องใช้. NET
Phil Ryan

@PhilRyan สำหรับสิ่งที่มีค่า Xamarin ไม่ได้คิดค้นเมื่อคำตอบนี้ถูกโพสต์
TylerH

8

เนื่องจากมีเพียงคำตอบเดียวที่กล่าวถึง Mono โดยไม่ต้องลงรายละเอียด:

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

Mono เป็นการนำโอเพ่นซอร์สของชุดเครื่องมือที่ได้มาตรฐานตามมาตรฐาน ECMA ที่เข้ากันได้กับ. NET Framework รวมถึงคอมไพเลอร์ C # และการใช้งาน CLI (Mono Runtime เทียบเท่ากับ CLR ของ Microsoft - เครื่องเสมือนของ. NET Framework) เป้าหมายของมันคือการรัน. NET แอพพลิเคชั่นข้ามแพลตฟอร์ม ณ วันนี้ก็สนับสนุน C # 4.0 และส่วนหนึ่งที่สำคัญของคุณสมบัติ NET Framework ที่ นอกเหนือจากการทำมิเรอร์ให้กับไมโครซอฟท์ทีมโมโนยังสร้างนวัตกรรมของตัวเอง

ดังนั้นใช่เป็นไปได้และเป็นไปได้ที่จะทำงานใน C # โดยไม่ต้อง. NET อย่างไรก็ตามเป็นไปได้ยากที่โมโนจะสามารถแข่งขันกับส่วนแบ่งตลาดของ Microsoft และตำแหน่งของ. NET Framework ไม่ใช่ตอนนี้และไม่ใช่ในอนาคตอันใกล้


กำลังรอให้ใครสักคนอธิบายโมโนเพื่อแก้ไขข้อผิดพลาดที่คุณไม่เคยเห็น C # โดยไม่ต้องจับคู่กับ. NET +1
KChaloux

7

หนังสือ Jon Skeet ของ C # ในความลึกแบ่ง. NET ลงค่อนข้างรัดกุม มันมักจะใช้ในการเชื่อมต่อกับ

  1. ภาษาโปรแกรม (C #, VB)
  2. รันไทม์ (CLR) ซึ่งรัน bytecode ภาษาเหล่านั้นจะถูกคอมไพล์
  3. Framework Framework (Windows Forms / ASP.NET)

2

คำตอบอื่น ๆ ทำงานได้ดีในการอธิบายสิ่งที่แต่ละเทคโนโลยี แต่ฉันคิดว่าพวกเขาพลาดหนึ่งในเหตุผลสำคัญสำหรับความสับสน C # และ C # .NET นั้นมีความหมายเหมือนกัน แต่ VB.NET และ VB นั้นแตกต่างกันและ ASP และ ASP.NET ก็แตกต่างกันเช่นกัน VB โดยทั่วไปหมายถึง VB6 และเก่ากว่าและ ASP หมายถึง ASP คลาสสิก เทคโนโลยีเหล่านี้ได้รับการออกแบบใหม่อย่างรุนแรงด้วยการเปิดตัว. NET Framework และแทนที่จะสร้างชื่อใหม่สำหรับผลิตภัณฑ์ Microsoft ผนวก. NET กับทุกสิ่งมาก แต่ C # ยังใหม่อยู่ดังนั้นชื่อทั้งสองจึงอ้างถึงสิ่งเดียวกัน


0

คุณต้องแยกความแตกต่างระหว่างภาษากรอบงาน CLR รูปแบบและวิธีการเขียนโปรแกรม

ASP.Net ใช้รูปแบบการเขียนโปรแกรมที่แตกต่างอย่างสิ้นเชิงกับการพัฒนา Winforms แม้ว่าพวกเขาจะมีพื้นฐานเดียวกัน คุณสามารถโปรแกรมแอปพลิเคชั่น ASP.net และ. Net ได้หลายภาษา

ดังนั้นจึงมีภาษาโมโนและภาษา C # ที่ใช้ในบริบทของโมโน - อาจคุ้มค่ากับการวิจัย

อ่านลิงค์เหล่านี้ได้ที่:
http://en.wikipedia.org/wiki/Common_Language_Runtime
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations
http://en.wikipedia.org/wiki/File: Overview_of_the_Common_Language_Infrastructure.svg


"คุณสามารถโปรแกรมแอปพลิเคชั่น ASP.net และ. Net ในหลากหลายภาษา" ฉันไม่แน่ใจว่าคุณหมายถึงอะไร byu นี้ คุณบอกว่าคุณสามารถเขียนโปรแกรม ASP.net ได้หลายภาษา แต่ฉันคิดว่า ASP เป็นภาษาและ. NET เป็นเฟรมเวิร์กที่คุณเพิ่มเข้าไป
Megan Walker

ASP.net เป็นเฟรมเวิร์กและฉันเห็นว่าเป็นวิธีการเขียนโปรแกรม ASP.net สามารถเขียนรหัสเป็นภาษาใดก็ได้จากรายการนี้en.wikipedia.org/wiki/List_of_CLI_languages wheras ASP Class ไม่สามารถ
Jeremy

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