Hubungan antara C #, .NET, ASP, ASP.NET dll [ditutup]

143

Saya benar-benar tidak jelas tentang perbedaan antara C #, C # .NET dan sama untuk ASP dan bahasa '.NET' lainnya.

Dari apa yang saya mengerti, .NET adalah pustaka / kerangka dari ... hal-hal. Saya pikir mereka pada dasarnya mengakses data Windows seperti elemen formulir dll, tetapi itu tampaknya tidak berlaku untuk ASP.NET.

Selain itu, saya melihat orang menyebut diri mereka pengembang '.NET'. Apakah ini berarti mereka fasih berbahasa C #, ASP dan bahasa lainnya?

Akhirnya, saya tidak pernah melihat C # tanpa .NET terlampir. Apakah C # terkait erat dengan .NET sehingga tidak dapat digunakan tanpa itu?

Singkatnya: apa sebenarnya yang disediakan oleh .NET? Bagaimana hubungannya dengan C # dan ASP dll? Apa yang dimaksud dengan 'pengembang .NET'? Dan akhirnya, mengapa Anda tidak pernah melihat C # tanpa .NET?

[Sebagai tambahan, saya menyadari ini adalah beberapa pertanyaan, tapi saya pikir mereka sangat saling terkait (atau setidaknya kesan bahwa browsing Programmer / SO dll telah memberi saya)].

Megan Walker
sumber

Jawaban:

172

Saya mengerti kebingungan Anda, percayalah, saya memiliki perspektif yang sama ketika datang ke dunia Jawa! Pokoknya saya akan mencoba memecah pertanyaan Anda dan mengatasinya satu per satu ... serta menambahkan beberapa poin lain yang diharapkan akan membantu memperjelas apa yang terjadi:

  1. C # dan C # .NET adalah hal yang sama ... C #
  2. .NET adalah, seperti yang Anda katakan, perpustakaan kode yang dapat diajak berbicara dengan bahasa .NET
  3. Bahasa. NET hadir dalam berbagai rasa seperti: C # .NET, VB.NET, Managed C ++, F #.
  4. Bahasa .NET mengkompilasi ke CIL ( Common Intermediate Language ) yang berarti mereka semua mulai "berbicara" dengan bahasa yang sama dan karenanya dapat beroperasi.
  5. ASP.NET adalah bagian dari perpustakaan .NET yang digunakan untuk membuat situs web. Ada subbagian lain dari ASP.NET seperti WebForms (cara lama membuat halaman web) atau pustaka MVC yang cepat matang yang juga layak untuk dilihat.
  6. Formulir (teknologi lama) atau WPF (Windows Presentation Foundation) baru adalah teknologi yang biasanya Anda gunakan di .NET untuk membuat apa yang Anda ketahui sebagai aplikasi desktop tradisional.

Satu hal terakhir yang ingin saya selesaikan adalah perbedaan antara perpustakaan dan kerangka kerja. Dalam beberapa tahun terakhir, kedua istilah ini telah digunakan sebagai sinonim, namun bukan itu masalahnya. Cara termudah yang dapat saya pikirkan untuk membedakan keduanya adalah:

  • Pustaka berisi banyak fungsionalitas yang dapat Anda pilih dan pilih, yaitu menggunakan satu teknologi tidak berarti Anda terkunci di dalam sisanya. Ini berarti kebebasan, namun Anda akan memiliki lebih banyak pekerjaan yang cocok untuk Anda.
  • Kerangka kerja bagaimanapun sangat menentukan bagaimana Anda akan bekerja. Ini memberikan alur kerja yang lebih baik atau lebih buruk sulit untuk diubah. Ini berarti pengembangan / prototyping yang cepat, tetapi jika perubahan signifikan dibuat di masa depan mungkin tidak mungkin (atau sangat memakan waktu) untuk mengimplementasikannya.

Proyek yang sedang Anda kerjakan tergantung pada pilihan yang Anda buat.

PaulCarroll
sumber
7
+1, tetapi satu gangguan kecil di # 2 - .NET bukan "pustaka kode", ini adalah kerangka kerja (yang Anda tetapkan dengan benar sebagai "alur kerja" yang menentukan bagaimana program Anda didefinisikan dan dijalankan). Kumpulan pustaka standar yang diterbitkan oleh Microsoft yang tersedia untuk bahasa .NET adalah .NET Base Class Library (BCL).
nlawalker
7
Perhatikan bahwa ASP juga dapat digunakan untuk merujuk ke ASP klasik daripada ASP.NET.
Brian
11
Saya tidak setuju dengan poin 1. C # dapat digunakan tanpa .NET sehingga C # .NET secara eksplisit menyatakan bahwa Anda menggunakan C # dengan kerangka .NET sedangkan C # tidak. Dalam prakteknya meskipun kebanyakan orang menganggap C # digunakan dengan .NET.
Ian Newson
23

.NET adalah kerangka pengembangan aplikasi -. Ini berisi banyak perpustakaan yang berisi berbagai fungsionalitas.

C # adalah bahasa yang dibuat untuk digunakan dengan .NET. Ini bukan satu-satunya bahasa yang kompatibel dengan NET -. Pilihan lain termasuk VB.NET, F #, Managed C ++, IronRuby, dan IronPython. Anda menulis kode dalam bahasa pilihan Anda untuk menggunakan fungsionalitas dalam kerangka NET.

ASP.NET adalah ekstensi .NET yang membantu Anda menulis aplikasi dan situs web berbasis web. Banyak kerangka keseluruhan tersedia (atau berguna, dalam kasus misalnya WinForms) dalam konteks ini.

[Klasik] ASP adalah kerangka kerja web yang lebih lama, juga dari Microsoft. Meskipun nama-nama yang serupa, ASP dan ASP.NET sangat berbeda di bawah tenda. Satu perbedaan penting adalah bahwa satu-satunya pilihan bahasa Anda untuk ASP adalah VBScript dan JScript. ASP adalah teknologi yang lebih tua dan ketinggalan zaman, jangan repot-repot dengan itu.

Grant Palin
sumber
14

Pertama, .Net adalah kerangka kerja bytecode, mirip dengan bytecode Java. Namun .Net hanya BYTECODE. Tidak ada bahasa resmi ".Net". Dua bahasa utama yang menargetkan .Net adalah C # dan VB.Net. ASP.Net adalah ekstensi ke perpustakaan .Net yang disediakan untuk memungkinkan aplikasi yang ditulis dalam C # atau VB.Net (atau bahasa lain yang ditargetkan .Net) berfungsi sebagai situs web.

Pengembang yang mengatakan mereka tahu. Net biasanya berarti mereka tahu C # atau VB.Net, atau keduanya, dan dapat dengan mudah mempelajari mana yang tidak mereka ketahui (C # dan VB.Net adalah bahasa yang sangat mirip selain dari sintaksis umum)

Terakhir, ASP TIDAK sama dengan ASP.Net. Mereka memiliki perbedaan besar

Earlz
sumber
Jadi apakah ada perbedaan antara aplikasi ac # dan aplikasi ac # .net? Saya bertanya karena Anda telah menjatuhkan .net dari c # .net dalam jawaban Anda. Bagian .Net developer sangat membantu.
Megan Walker
5
Yah, C # sebenarnya hanya bahasa, tidak diikat dengan .Net. TETAPI semua penggunaan C # saat ini adalah dengan .Net, jadi praktis, tidak ada perbedaan antara "C #" dan "C # .Net"
Earlz
Sebagai pengembang ".NET", saya membuat klaim karena saya menghindari metode / fitur eksklusif bahasa sebanyak mungkin sehingga saya dapat melompati semua bahasa .NET dengan hanya perubahan sintaks.
Wayne
1
C # bahasanya hanyalah bahasa. Anda dapat menulis apa pun dalam C # tanpa harus berbicara dengan .NET backend atau framework. Bagi mereka yang meragukan saya, lihat Xamarin C #: cara untuk menulis aplikasi asli iOS dan Android tanpa menggunakan .NET.
Phil Ryan
@ PhilRyan Untuk apa nilainya, Xamarin bahkan tidak ditemukan ketika jawaban ini diposting.
TylerH
8

Karena hanya satu jawaban yang menyebutkan Mono tanpa merinci:

Meskipun C # sebagai bahasa awalnya dikembangkan di Microsoft sebagai bagian dari .NET Framework, ini kemudian distandarisasi oleh ECMA , yang berarti bahwa implementasi independen dari standar bahasa yang sesuai dapat dikembangkan, dan memang benar demikian. Yang paling menonjol dari mereka adalah Mono .

Mono adalah implementasi open source dari seperangkat alat yang kompatibel dengan standar ECMA yang kompatibel dengan .NET Framework, termasuk compiler C # dan implementasi CLI (Mono Runtime, setara dengan CLR Microsoft - mesin virtual .NET Framework). Tujuannya adalah untuk menjalankan lintas platform .NET aplikasi. Sampai hari ini, ia mendukung C # 4.0 dan sebagian besar fitur .NET Framework . Selain mencerminkan implementasi Microsoft, tim Mono juga membuat inovasi sendiri.

Jadi, ya, mungkin dan layak untuk bekerja di C # tanpa .NET. Namun tidak mungkin bahwa Mono akan dapat menyaingi pangsa pasar Microsoft dan posisi .NET Framework, tidak sekarang, dan tidak dalam waktu dekat.

scrwtp
sumber
Sedang menunggu seseorang untuk menjelaskan Mono, untuk memperbaiki asumsi yang salah bahwa Anda tidak pernah melihat C # tanpa dipasangkan dengan .NET. +1.
KChaloux
7

Buku Jon Skeet, C # In Depth memecah .NET turun dengan lebih ringkas. Ini sering digunakan sehubungan dengan

  1. Bahasa Pemrograman (C #, VB)
  2. Runtime (CLR) yang menjalankan bytecode bahasa-bahasa tersebut dikompilasi.
  3. Framework Framework (Windows Forms / ASP.NET)
mootinator
sumber
2

jawaban yang lain melakukan pekerjaan yang baik untuk menjelaskan apa teknologi masing-masing, tapi saya pikir mereka kehilangan salah satu alasan utama untuk kebingungan. C # dan C #. NET pada dasarnya sama, namun VB.NET dan VB berbeda dan ASP dan ASP.NET juga berbeda. VB umumnya mengacu pada VB6 dan lebih lama, dan ASP mengacu pada ASP klasik. Teknologi ini didesain ulang secara radikal dengan dirilisnya .NET framework dan bukannya muncul dengan nama baru untuk produk yang ditambahkan Microsoft. NET untuk hampir semua, tetapi C # juga baru sehingga kedua nama benar-benar merujuk pada hal yang sama.

Ryathal
sumber
0

Anda harus membedakan antara Bahasa, Kerangka Kerja, CLR, Pola dan Metode pemrograman.

ASP.Net menggunakan pola pemrograman yang sama sekali berbeda untuk pengembangan Winforms meskipun mereka berbagi fondasi yang sama. Anda dapat memprogram aplikasi ASP.net dan .Net dalam berbagai bahasa.

Lalu ada bahasa Mono dan bahasa C # yang digunakan dalam konteks Mono - mungkin perlu penelitian.

Baca tautan-tautan ini:
http://en.wikipedia.org/wiki/Common_Language_Runtime
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations
http://en.wikipedia.org/wiki/File: Gambaran umum_of_the_Common_Language_Infrastructure.svg

Jeremy
sumber
"Anda dapat memprogram aplikasi ASP.net dan .Net dalam berbagai bahasa." Saya tidak yakin apa yang Anda maksud dengan ini. Anda mengatakan bahwa Anda dapat menulis program ASP.net dalam berbagai bahasa. Tapi saya pikir ASP adalah bahasanya, dan .NET adalah kerangka yang Anda tambahkan.
Megan Walker
ASP.net adalah suatu kerangka kerja dan saya melihatnya sebagai metodologi pemrograman. ASP.net dapat dikodekan dalam bahasa apa pun dari daftar ini en.wikipedia.org/wiki/List_of_CLI_languages ​​di mana ASP Class tidak bisa.
Jeremy
1
ASP bukan bahasa.
Marcie