Mối quan hệ giữa C #, .NET, ASP, ASP.NET, vv [đã đóng]


143

Tôi thực sự không rõ ràng về sự khác biệt giữa C #, C # .NET và tương tự đối với các ngôn ngữ '.NET' khác.

Theo những gì tôi hiểu, .NET là một thư viện / khung của ... những thứ. Tôi nghĩ rằng về cơ bản họ truy cập vào dữ liệu Windows, chẳng hạn như các yếu tố biểu mẫu, nhưng điều đó dường như không áp dụng cho ASP.NET.

Ngoài ra, tôi thấy mọi người tự gọi mình là nhà phát triển '.NET'. Điều này có nghĩa là họ thông thạo C #, ASP và các ngôn ngữ khác?

Cuối cùng, tôi không bao giờ thấy C # mà không có .NET kèm theo. Là C # gắn chặt với .NET là không thể sử dụng mà không có nó?

Tóm lại: .NET cung cấp chính xác những gì? Làm thế nào nó liên quan đến C # và ASP, vv? "Nhà phát triển .NET" nghĩa là gì? Và cuối cùng, tại sao bạn không bao giờ thấy C # mà không có .NET?

[Bên cạnh đó, tôi nhận ra đây là nhiều câu hỏi, nhưng tôi nghĩ chúng rất liên quan đến nhau (hoặc ít nhất đó là ấn tượng mà các lập trình viên / SO, v.v. đã mang lại cho tôi)].

Câu trả lời:


172

Tôi hiểu sự nhầm lẫn của bạn, hãy tin tôi, tôi có cùng quan điểm khi nói đến thế giới Java! Dù sao, tôi sẽ cố gắng phá vỡ các câu hỏi của bạn và giải quyết từng câu hỏi một ... cũng như thêm một số điểm khác trong đó hy vọng sẽ giúp làm rõ những gì đang diễn ra:

  1. C # và C # .NET là cùng một thứ ... C #
  2. .NET là, như bạn nói, một thư viện mã mà các ngôn ngữ .NET có thể nói chuyện.
  3. Các ngôn ngữ .NET có các hương vị khác nhau như: C # .NET, VB.NET, Managed C ++, F #.
  4. Các ngôn ngữ .NET biên dịch thành CIL ( Ngôn ngữ trung gian chung ) có nghĩa là tất cả chúng bắt đầu "nói" cùng một ngôn ngữ và do đó có thể tương tác với nhau.
  5. ASP.NET là một phần của thư viện .NET được sử dụng để tạo các trang web. Có các phần phụ khác của ASP.NET như WebForms (cách tạo trang web cũ) hoặc thư viện MVC trưởng thành nhanh chóng cũng đáng để xem xét.
  6. Biểu mẫu (công nghệ cũ) hoặc WPF mới (Windows Presentation Foundation) là những công nghệ bạn thường sử dụng trong .NET để tạo ra những gì bạn biết là ứng dụng máy tính để bàn truyền thống.

Một điều cuối cùng tôi muốn kết thúc là sự khác biệt giữa thư viện và khung. Trong những năm gần đây, hai thuật ngữ này đã được sử dụng như những từ đồng nghĩa, tuy nhiên đó không phải là trường hợp. Cách dễ nhất tôi có thể nghĩ để phân biệt hai loại này là:

  • Một thư viện chứa nhiều phần chức năng mà bạn có thể chọn và chọn, tức là sử dụng một phần công nghệ không có nghĩa là bạn bị khóa trong phần còn lại. Điều này có nghĩa là tự do, tuy nhiên bạn sẽ có nhiều công việc hơn cho bạn.
  • Tuy nhiên, một khung làm việc đặt ra cách bạn sẽ làm việc. Nó cung cấp một quy trình công việc mà tốt hơn hoặc xấu hơn là khó thay đổi. Điều này có nghĩa là phát triển / tạo mẫu nhanh, nhưng nếu những thay đổi đáng kể được thực hiện trong tương lai thì có thể không thể (hoặc rất tốn thời gian) để thực hiện chúng.

Dự án bạn đang làm sẽ phụ thuộc vào lựa chọn của bạn.


7
+1, nhưng một điều nhỏ nhặt trên # 2 - .NET không phải là "thư viện mã", nó là một khung (mà bạn xác định chính xác là "quy trình công việc" xác định cách chương trình của bạn được xác định và chạy). Bộ sưu tập các thư viện tiêu chuẩn do Microsoft xuất bản có sẵn cho các ngôn ngữ .NET là Thư viện lớp cơ sở .NET (BCL).
nlawalker

7
Lưu ý rằng ASP cũng có thể được sử dụng để tham khảo ASP cổ điển thay vì ASP.NET.
Brian

11
Tôi không đồng ý với điểm 1. C # có thể được sử dụng mà không có .NET vì vậy C # .NET tuyên bố rõ ràng rằng bạn sử dụng C # với khung .NET trong khi C # thì không. Trong thực tế, hầu hết mọi người cho rằng C # được sử dụng với .NET.
Ian Newson

23

.NET là một khung phát triển ứng dụng - nó chứa nhiều thư viện chứa một loạt các chức năng.

C # là ngôn ngữ được tạo để sử dụng với .NET. Đây không phải là ngôn ngữ tương thích .NET duy nhất - các tùy chọn khác bao gồm VB.NET, F #, Managed C ++, IronRuby và IronPython. Bạn viết mã bằng ngôn ngữ bạn chọn để sử dụng chức năng trong khung .NET.

ASP.NET là một phần mở rộng của .NET giúp bạn viết các ứng dụng và trang web dựa trên web. Phần lớn khung tổng thể có sẵn (hoặc hữu ích, trong trường hợp ví dụ WinForms) trong bối cảnh này.

[Classic] ASP là một khung web cũ hơn, cũng từ Microsoft. Mặc dù có cùng tên, nhưng ASP và ASP.NET khá khác nhau. Một điểm khác biệt đáng chú ý là các tùy chọn ngôn ngữ duy nhất của bạn cho ASP là VBScript và JScript. ASP là một công nghệ cũ và lỗi thời, đừng tự làm phiền mình với nó.


14

Trước hết, .Net là một khung công tác mã byte, tương tự như mã byte Java. .Net tuy nhiên chỉ là BYTECODE. Không có ngôn ngữ chính thức ".Net". Hai ngôn ngữ chính nhắm mục tiêu .Net là C # và VB.Net. ASP.Net là một phần mở rộng cho thư viện .Net được cung cấp để cho phép các ứng dụng được viết bằng C # hoặc VB.Net (hoặc các ngôn ngữ được nhắm mục tiêu .Net khác) hoạt động như một trang web.

Các nhà phát triển nói rằng họ biết .Net thường có nghĩa là họ biết C # hoặc VB.Net hoặc cả hai và có thể dễ dàng tìm hiểu bất kỳ ngôn ngữ nào họ không biết (C # và VB.Net là các ngôn ngữ cực kỳ giống nhau ngoài cú pháp chung)

Cuối cùng, ASP KHÔNG giống như ASP.Net. Họ có sự khác biệt rất lớn


Vậy có sự khác biệt giữa ứng dụng ac # và ứng dụng ac # .net không? Tôi hỏi khi bạn bỏ .net từ c # .net trong câu trả lời của bạn. Phần nhà phát triển .Net rất hữu ích.
Megan Walker

5
Chà, C # thực sự chỉ là một ngôn ngữ, không gắn liền với .Net. NHƯNG tất cả việc sử dụng C # hiện tại là với .Net, vì vậy thực tế, không có sự khác biệt giữa "C #" và "C # .Net"
Earlz

Là nhà phát triển ".NET", tôi đưa ra yêu cầu vì tôi tránh các phương thức / tính năng độc quyền ngôn ngữ càng nhiều càng tốt để tôi có thể chuyển qua tất cả các ngôn ngữ .NET chỉ bằng các thay đổi cú pháp.
Wayne

1
C # ngôn ngữ chỉ là một ngôn ngữ. Bạn có thể viết bất cứ điều gì trong C # mà không cần phải nói chuyện với phụ trợ hoặc khung .NET. Đối với những người nghi ngờ tôi, hãy xem Xamarin C #: một cách để viết các ứng dụng gốc iOS và Android mà không cần sử dụng bất kỳ .NET nào.
Phil Ryan

@PhilRyan Vì giá trị của nó, Xamarin thậm chí không được phát minh khi câu trả lời này được đăng.
TylerH

8

Vì chỉ có một câu trả lời đề cập đến Mono mà không đi sâu vào chi tiết:

Mặc dù C # là ngôn ngữ ban đầu được phát triển tại Microsoft như một phần của .NET Framework, nhưng sau đó nó đã được ECMA chuẩn hóa , có nghĩa là việc triển khai ngôn ngữ tuân thủ tiêu chuẩn độc lập có thể được phát triển và thực sự chúng là như vậy. Nổi bật nhất trong số đó là Mono .

Mono là một triển khai mã nguồn mở của một bộ công cụ tuân thủ tiêu chuẩn ECMA tương thích với .NET Framework, bao gồm trình biên dịch C # và triển khai CLI (Mono Runtime, tương đương với CLR của Microsoft - máy ảo của .NET Framework). Mục đích của nó là chạy các ứng dụng .NET đa nền tảng. Cho đến ngày hôm nay, nó hỗ trợ C # 4.0 và một phần đáng kể các tính năng .NET Framework . Ngoài việc phản ánh việc triển khai của Microsoft, nhóm Mono cũng đang thực hiện những đổi mới của riêng mình.

Vì vậy, vâng, có thể và khả thi khi làm việc trong C # mà không cần .NET. Tuy nhiên, không chắc rằng Mono sẽ có thể cạnh tranh thị phần của Microsoft và vị trí của .NET Framework, không phải bây giờ và không trong tương lai trước mắt.


Đang chờ ai đó giải thích về Mono, để sửa lỗi giả định rằng bạn không bao giờ thấy C # mà không được ghép nối với .NET. +1.
KChaloux

7

Cuốn sách của Jon Skeet, C # In Depth phá vỡ .NET khá ngắn gọn. Nó thường được sử dụng liên quan đến

  1. Ngôn ngữ lập trình (C #, VB)
  2. Thời gian chạy (CLR) chạy mã byte mà các ngôn ngữ được biên dịch thành.
  3. Thư viện khung (Windows Forms / ASP.NET)

2

các câu trả lời khác làm tốt công việc giải thích từng công nghệ, nhưng tôi nghĩ rằng họ bỏ lỡ một trong những lý do chính cho sự nhầm lẫn. C # và C # .NET về cơ bản là đồng nghĩa, tuy nhiên VB.NET và VB khác nhau và ASP và ASP.NET cũng khác nhau. VB thường đề cập đến VB6 trở lên và ASP đề cập đến ASP cổ điển. Các công nghệ này được thiết kế lại hoàn toàn với việc phát hành .NET framework và thay vì đưa ra các tên mới cho các sản phẩm Microsoft đã thêm .NET vào mọi thứ, nhưng C # cũng mới nên cả hai tên đều thực sự đề cập đến cùng một điều.


0

Bạn phải phân biệt giữa các ngôn ngữ, khung, CLR, mẫu và phương pháp lập trình.

ASP.Net sử dụng một mô hình lập trình hoàn toàn khác để phát triển Winforms mặc dù chúng có chung nền tảng. Bạn có thể lập trình các ứng dụng ASP.net và .Net bằng nhiều ngôn ngữ.

Sau đó, có ngôn ngữ Mono và C # được sử dụng trong ngữ cảnh Mono - có lẽ đáng để nghiên cứu.

Hãy đọc các liên kết sau:
http://en.wikipedia.org/wiki/Common_L
Language_R.78
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_im THỰCations http://en.wikipedia.org/wiki/File: Tổng quan_of_the_Common_L Language_Infr Hạ tầng.svg


"Bạn có thể lập trình các ứng dụng ASP.net và .Net bằng nhiều ngôn ngữ khác nhau." Tôi không chắc ý của bạn là gì. Bạn nói rằng bạn có thể viết một chương trình ASP.net bằng nhiều ngôn ngữ. Nhưng tôi nghĩ rằng ASP là ngôn ngữ và .NET là khung mà bạn thêm vào.
Megan Walker

ASP.net là một khung công tác và tôi thấy nó là một phương pháp lập trình. ASP.net có thể được mã hóa trong bất kỳ ngôn ngữ khỏi danh sách này en.wikipedia.org/wiki/List_of_CLI_languages wheras ASP Lớp không thể.
Jeremy

1
ASP không phải là một ngôn ngữ.
Marcie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.