Apa perbedaan antara .NET Core, .NET Framework, dan Xamarin?

362

Microsoft sekarang memiliki .NET Core, .NET Framework dan Xamarin (Mono) dalam keluarga .NET-nya.

Tampaknya ada banyak tumpang tindih di sini. Apa perbedaan antara jenis .NET ini? Kapan saya harus memilih untuk menggunakan .NET Core di proyek saya, daripada .NET Framework atau Xamarin?

MeeChao
sumber
2
Pertanyaan yang bagus! Berikut ini adalah artikel tambahan tentang .net framework dan .net core. pogsdotnet.blogspot.sg/2017/11/... Terima kasih!
Allan Chua

Jawaban:

269

Anda harus menggunakan .NET Core, sebagai ganti .NET Framework atau Xamarin, dalam 6 skenario khas berikut ini sesuai dengan dokumentasi di sini .

1. Kebutuhan Cross-Platform

Jelas, jika tujuan Anda adalah memiliki aplikasi (web / layanan) yang seharusnya dapat berjalan di berbagai platform (Windows, Linux dan MacOS), pilihan terbaik dalam ekosistem .NET adalah menggunakan .NET Core sebagai runtime-nya (CoreCLR ) dan perpustakaan adalah lintas platform. Pilihan lain adalah menggunakan Proyek Mono.

Kedua pilihan adalah open source, tetapi .NET Core secara langsung dan resmi didukung oleh Microsoft dan akan memiliki investasi besar yang bergerak maju.

Saat menggunakan .NET Core di seluruh platform, pengalaman pengembangan terbaik ada pada Windows dengan Visual Studio IDE yang mendukung banyak fitur produktivitas termasuk manajemen proyek, debugging, kontrol sumber, refactoring, pengeditan kaya termasuk Intellisense, pengujian dan banyak lagi. Tetapi pengembangan yang kaya juga didukung menggunakan Visual Studio Code pada Mac, Linux dan Windows termasuk intellisense dan debugging. Bahkan editor pihak ketiga seperti Sublime, Emacs, VI dan banyak lagi bekerja dengan baik dan bisa mendapatkan intellisense editor menggunakan proyek open source Omnisharp.

2. Layanan Mikro

Ketika Anda sedang membangun sistem yang berorientasi layanan-mikro yang terdiri dari beberapa layanan-layanan mikro yang independen, dapat diskalakan, status atau stateless, keuntungan besar yang Anda miliki di sini adalah bahwa Anda dapat menggunakan teknologi / kerangka / bahasa yang berbeda pada tingkat layanan-mikro. Itu memungkinkan Anda untuk menggunakan pendekatan dan teknologi terbaik per area mikro di sistem Anda, jadi jika Anda ingin membangun layanan Microsoft yang sangat berkinerja dan terukur, Anda harus menggunakan .NET Core. Akhirnya, jika Anda perlu menggunakan pustaka .NET Framework yang tidak kompatibel dengan .NET Core, tidak ada masalah, Anda dapat membangun microservice itu dengan .NET Framework dan di masa depan Anda mungkin dapat menggantinya dengan .NET Inti.

Platform infrastruktur yang bisa Anda gunakan banyak. Idealnya, untuk sistem microservice yang besar dan kompleks, Anda harus menggunakan Azure Service Fabric. Tetapi untuk layanan microser stateless, Anda juga dapat menggunakan produk lain seperti Azure App Service atau Azure Functions.

Perhatikan bahwa pada Juni 2016, tidak semua teknologi dalam Azure mendukung NET Core, tetapi .NET Core dukungan di Azure akan meningkat secara dramatis sekarang. NET Core RTM dirilis.

3. Sistem berkinerja terbaik dan terukur

Ketika sistem Anda membutuhkan kinerja dan skalabilitas terbaik sehingga Anda mendapatkan respons terbaik tidak peduli berapa banyak pengguna yang Anda miliki, maka di situlah .NET Core dan ASP.NET Core benar-benar bersinar. Semakin banyak yang dapat Anda lakukan dengan jumlah infrastruktur / perangkat keras yang sama, semakin kaya pengalaman yang akan Anda miliki untuk pengguna akhir Anda - dengan biaya lebih rendah.

Hari-hari peningkatan kinerja hukum Moore untuk CPU tunggal tidak berlaku lagi; namun Anda perlu melakukan lebih banyak ketika sistem Anda tumbuh dan membutuhkan skalabilitas dan kinerja yang lebih tinggi untuk pengguna sehari-hari yang lebih menuntut yang tumbuh secara eksponensial dalam jumlah. Anda perlu lebih efisien, mengoptimalkan di mana-mana, dan skala yang lebih baik di seluruh kelompok mesin, VM dan core CPU, pada akhirnya. Ini bukan hanya masalah kepuasan pengguna; itu juga dapat membuat perbedaan besar dalam biaya / TCO. Inilah sebabnya mengapa penting untuk mengupayakan kinerja dan skalabilitas.

Seperti yang disebutkan, jika Anda dapat mengisolasi bagian-bagian kecil dari sistem Anda sebagai layanan microser atau pendekatan yang digabungkan secara longgar lainnya, itu akan lebih baik karena Anda tidak hanya dapat mengembangkan setiap bagian kecil / layanan mikro secara mandiri dan memiliki jangka panjang yang lebih baik kelincahan dan pemeliharaan, tetapi Anda juga akan dapat menggunakan teknologi lain di tingkat layanan mikro jika apa yang perlu Anda lakukan tidak kompatibel dengan .NET Core. Dan pada akhirnya Anda akan dapat melakukan refactor dan membawanya ke .NET Core jika memungkinkan.

4. Pengembangan gaya baris perintah untuk Mac, Linux atau Windows.

Pendekatan ini bersifat opsional saat menggunakan .NET Core. Anda juga dapat menggunakan Visual Studio IDE lengkap, tentu saja. Tetapi jika Anda adalah pengembang yang ingin mengembangkan dengan editor yang ringan dan penggunaan banyak baris perintah, .NET Core dirancang untuk CLI. Ini menyediakan alat baris perintah sederhana yang tersedia di semua platform yang didukung, memungkinkan pengembang untuk membangun dan menguji aplikasi dengan instalasi minimal pada pengembang, lab atau mesin produksi. Editor seperti Visual Studio Code menggunakan alat baris perintah yang sama untuk pengalaman pengembangan mereka. Dan IDE seperti Visual Studio menggunakan alat CLI yang sama tetapi menyembunyikannya di belakang pengalaman IDE yang kaya. Pengembang sekarang dapat memilih level yang mereka inginkan untuk berinteraksi dengan rantai alat dari CLI ke editor ke IDE.

5. Perlu berdampingan versi .NET per tingkat aplikasi.

Jika Anda ingin dapat menginstal aplikasi dengan dependensi pada berbagai versi kerangka kerja dalam .NET, Anda perlu menggunakan .NET Core yang menyediakan 100% berdampingan seperti dijelaskan sebelumnya dalam dokumen ini.

6. Aplikasi Windows 10 UWP .NET.

Selain itu, Anda mungkin juga ingin membaca:

  1. Kapan saya TIDAK harus menggunakan .NET Core?
  2. Kapan saya harus tetap menggunakan .NET Framework 4.x, bukannya .NET Core?
  3. Kapan saya harus menggunakan Xamarin, bukannya .NET Core?
Fiona Bi
sumber
17
Mengapa asp.net Core lebih performant? Mengapa lebih baik ketika Anda membangun layanan microser?
Juan Zamudio
4
Sekarang Visual Studio untuk Mac juga tersedia. Jadi satu lagi poin positif ke arah .NET Core. visualstudio.com/vs/visual-studio-mac
Husyn
8
Tautan Anda rusak
shaneparsons
2
@JuanZamudio Versi kerangka kerja ini adalah lapisan monolitik, masing-masing bergantung pada versi yang sebelumnya, dalam rantai ketergantungan kembali ke versi 2.0 yang seluruhnya diganti 1,1. Akibatnya, jika Anda menggunakan apa pun dari 4,5 Anda secara implisit bergantung pada semua yang pernah kembali ke 2.0. Kerangka kerja inti lebih banyak tentang refactoring dependensi untuk menghilangkan bagasi yang tidak relevan daripada menulis ulang API, yang sebagian besar tetapi tidak sepenuhnya tidak berubah. Beberapa hal juga menjadi sangat disederhanakan, seperti EF Core.
Peter Wone
Terima kasih atas jawaban deskriptifnya
Tolga Kartal
171

Beginilah cara Microsoft menjelaskannya:

.NET Framework, .NET Core, Xamarin

.NET Framework adalah rasa "penuh" atau "tradisional" dari .NET yang didistribusikan dengan Windows. Gunakan ini ketika Anda sedang membangun aplikasi desktop Windows atau UWP, atau bekerja dengan ASP.NET 4.6+ yang lebih lama.

.NET Core adalah .NET lintas platform yang berjalan di Windows, Mac, dan Linux. Gunakan ini ketika Anda ingin membangun aplikasi konsol atau web yang dapat berjalan di platform apa pun, termasuk di dalam wadah Docker. Ini tidak termasuk aplikasi UWP / desktop saat ini.

Xamarin digunakan untuk membangun aplikasi seluler yang dapat berjalan di perangkat iOS, Android, atau Windows Phone.

Xamarin biasanya berjalan di atas Mono , yang merupakan versi .NET yang dibangun untuk dukungan lintas platform sebelum Microsoft memutuskan untuk secara resmi pergi lintas platform dengan .NET Core. Seperti Xamarin, platform Unity juga berjalan di atas Mono.


Titik kebingungan yang umum adalah di mana ASP.NET Core cocok. ASP.NET Core dapat berjalan di atas .NET Framework (Windows) atau .NET Core (lintas-platform), sebagaimana dirinci dalam jawaban ini: Perbedaan antara ASP. NET Core (.NET Core) dan ASP.NET Core (.NET Framework)

Nate Barbettini
sumber
3
Setiap kali seseorang mengatakan .NET Core adalah lintas platform, pengembang baru menjadi bingung. '.NET Core' hanya mendukung UWP + ASP.NET Core & ASP.NET Core adalah lintas-platform, UWP tidak.
Hassan Tareq
@HassanTareq Itu tidak sepenuhnya benar. .NET Core mengacu pada runtime dan pustaka yang dapat berjalan di Windows, Mac, atau Linux. ASP.NET Core adalah cross-platform karena .NET Core adalah cross-platform.
Nate Barbettini
Maka akan sangat membantu bagi greenhorns jika Anda menyebutkan bahwa .Net core ( run-time dan libraries ) adalah cross platform, kita tidak dapat menggunakan aplikasi UWP di Mac / Linux. UWP bukan cross-platform, saya berharap UWP menjadi alternatif lintas-platform WPF (Xamarin.Forms)
Hassan Tareq
@HassanTareq Saran yang bagus, saya sudah mengedit jawaban saya.
Nate Barbettini
1
Formulir Xamarin sekarang berjalan di hampir semua hal dari satu basis kode. Desktop Windows UWP, desktop WPF, MacOS, iOS, Android, dan Tizen (TV). Defaultnya adalah untuk menargetkan .NET Standard dari implementasi Core. Waktu yang baik!
Sean Anderson
35

Anda dapat merujuk pada baris ini - Perbedaan antara ASP.NET Core (.NET Core) dan ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin sama sekali bukan debat. Saat Anda ingin membangun aplikasi seluler (iOS, Android, dan Windows Mobile) menggunakan C #, Xamarin adalah satu-satunya pilihan Anda.

.NET Framework mendukung aplikasi Windows dan Web. Hari ini, Anda dapat menggunakan Windows Forms, WPF, dan UWP untuk membangun aplikasi Windows di .NET Framework. ASP.NET MVC digunakan untuk membangun aplikasi Web dalam .NET Framework.

.NET Core adalah kerangka kerja open-source dan cross-platform baru untuk membangun aplikasi untuk semua sistem operasi termasuk Windows, Mac, dan Linux. .NET Core hanya mendukung UWP dan ASP.NET Core. UWP digunakan untuk membangun target Windows 10 Windows dan aplikasi mobile. ASP.NET Core digunakan untuk membangun aplikasi web berbasis browser.

Anda ingin lebih detail lihat tautan ini
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / memilih-inti-kerangka-server

logeshpalani98
sumber
12
  1. .NET adalah Ekosistem berdasarkan bahasa c #
  2. .NET Standard adalah Standar (dengan kata lain, spesifikasi) dari .NET Ecosystem.

.Net Core Class Library dibangun di atas standar .Net . .NET Standard Anda hanya dapat membuat proyek perpustakaan kelas yang tidak dapat dieksekusi mandiri dan harus dirujuk oleh proyek yang dapat dieksekusi .NET Core atau .NET Framework . Jika Anda ingin menerapkan perpustakaan yang portabel ke .Net Framework , .Net Core dan Xamarin , pilih .Net Standard Library

  1. .NET Framework adalah kerangka kerja yang didasarkan pada .NET dan mendukung aplikasi Windows dan Web

(Anda dapat membuat proyek yang dapat dieksekusi (seperti aplikasi Konsol, atau aplikasi ASP.NET) dengan .NET Framework

  1. ASP.NET adalah teknologi pengembangan aplikasi web yang dibangun di atas .NET Framework
  2. .NET Core juga merupakan kerangka kerja berdasarkan .NET .

Ini adalah kerangka kerja open-source dan lintas-platform baru untuk membangun aplikasi untuk semua sistem operasi termasuk Windows, Mac, dan Linux.

  1. Xamarin adalah kerangka kerja untuk mengembangkan aplikasi seluler lintas platform ( iOS, Android, dan Windows Mobile ) menggunakan C #

Dukungan implementasi .NET Standard [biru] dan platform minimum yang layak untuk dukungan penuh .NET Standard (terbaru: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- mendukung] )

Razib Hossain
sumber
Turunkan suara untuk tabel "Riwayat Versi". Ini bukan "Riwayat Versi" .net / standar atau inti yang telah Anda buat. Ini adalah versi platform minimum yang dapat Anda gunakan jika Anda ingin mencocokkan versi standar .Net tertentu. EG: jika Anda ingin mendukung .NET Standard 1.4 pada Full .NET, versi terendah yang dapat Anda gunakan adalah 4.6.1
shawty
Down Vote dihapus, sekarang Anda telah memperbarui dan mendokumentasikan jawaban Anda dengan benar :-)
shawty
Saya pikir saya hanya akan mengembangkan di Apple ...
Richard Hammond
7

.NET 5 akan menjadi versi terpadu dari semua varian .NET yang datang pada November 2020, sehingga tidak perlu lagi memilih di antara varian. masukkan deskripsi gambar di sini

yanlend
sumber
1
Itu bohong. .NET Core tidak dapat mendukung WPF / WinForms di Linux!
Vincent
Itu benar, tetapi varian lain dari .NET tidak mendukung itu juga. Pilihan untuk varian .NET hilang, yang merupakan hal yang baik.
yanlend
1

.NET Core adalah versi saat ini. NET yang harus Anda gunakan saat ini (lebih banyak fitur, bug yang diperbaiki, dll.)

Xamarin adalah platform yang menyediakan solusi untuk masalah lintas platform seluler yang dikodekan dalam C #, sehingga Anda tidak perlu menggunakan Swift secara terpisah untuk iOS dan hal yang sama berlaku untuk Android.

Marto99
sumber
2
Saya akan mengatakan. Net Core adalah apa yang harus Anda gunakan jika Anda harus menjalankan Linux atau Linux dan Windows. Tapi Anda bisa membuat kasus itu untuk Mono juga, saya pikir. Tentu tidak memiliki lebih banyak fitur. Menurut definisi itu hanya bit "inti", tidak memiliki bit Windows saja, karenanya, lebih sedikit fitur. Dan saya hanya menebak tetapi tampaknya tidak mungkin. Net Core memiliki bug lebih sedikit. Kerangka Bersih. Sudah di dunia selama hampir dua dekade. Saya akan membayangkan itu cukup keras pada saat ini. Tapi itu hanya dugaan saja.
Jason Boyd
Ini tentu saja memiliki lebih banyak fitur baru, mereka baru-baru ini menambahkan kelas baru yang tidak akan ditambahkan ke .NET 4.8. Mereka juga mem-porting WPF dan WinForms. Sebenarnya sepertinya .NET Core dapat menggantikan .NET Framework. Tampaknya menjadi lebih baik juga.
asdf
0

Xamarin digunakan untuk aplikasi telepon (baik iOS / Android). .NET Core digunakan untuk mendesain aplikasi Web yang dapat bekerja pada Apache dan IIS.

Itulah perbedaan dalam dua kalimat.

pengguna10868910
sumber
Hmm .. selain dari kehilangan opsi ke-3 (.net framework) itu tidak sepenuhnya benar. Inti NET dapat digunakan pada hampir semua hal (Web, Desktop, Mobile, Cloud, Gaming, IOT dll). .NET Framework adalah windows centric dan sepenuhnya ditutup. Mono adalah versi open source (berbasis komunitas) dari .NET Framework yang digunakan oleh Xamarin yang menempatkan cross platform tooling mobile di atas mono. Xamarin akhirnya akan diganti, kemungkinan besar oleh Blazor (saat ini pwa, tetapi hibrida yang asli adalah bagian dari peta jalan).
shox
Itu benar. Xamarin adalah untuk aplikasi seluler. Saya tidak berpikir itu akan segera diganti. ASMX masih digunakan untuk Layanan Web, dan termasuk dalam Visual 2019.
user10868910
-1

diperbarui pada Mei 2019

Anda harus menggunakan .Net Core 3.0 dan versi yang lebih baru pada versi berikutnya. Net 5, yang Anda butuhkan hanyalah satu platform terpadu. Net5

Hanya akan ada satu NET. Maju, dan Anda akan dapat menggunakannya untuk menargetkan> Windows, Linux, macOS, iOS, Android, tvOS, watchOS dan WebAssembly dan banyak lagi. https://devblogs.microsoft.com/dotnet/introducing-net-5/

Yangching
sumber
Jawaban ini tidak masuk akal.
Kiril1512