.NET vs. .NET Framework untuk aplikasi server

Ada dua implementasi .NET yang didukung untuk membangun aplikasi sisi server.

implementasi Versi yang disertakan
.NET .NET Core 1.0 - 3.1, .NET 5, dan versi .NET yang lebih baru.
.NET Framework .NET Framework 1.0 - 4.8

Mereka berbagi banyak komponen platform .NET, dan Anda dapat berbagi kode di kedua komponen tersebut. Namun, ada perbedaan mendasar antara keduanya, dan pilihan Anda tergantung pada apa yang ingin Anda capai. Artikel ini menyediakan panduan tentang kapan harus menggunakan masing-masing.

Gunakan .NET untuk aplikasi server Anda saat:

  • Anda memiliki kebutuhan lintas platform.
  • Anda menargetkan layanan mikro.
  • Anda menggunakan kontainer Docker.
  • Anda memerlukan sistem berkinerja tinggi dan dapat diskalakan.
  • Anda memerlukan versi .NET berdampingan per aplikasi.

Gunakan .NET untuk aplikasi server Anda saat:

  • Aplikasi Anda saat ini menggunakan .NET Framework (rekomendasinya adalah memperluas alih-alih bermigrasi).
  • Menggunakan pustaka .NET pihak ketiga atau paket NuGet yang tidak tersedia untuk .NET.
  • Aplikasi Anda menggunakan teknologi .NET Framework yang tidak tersedia untuk .NET.
  • Aplikasi Anda menggunakan platform yang tidak mendukung .NET.

Kapan memilih .NET

Bagian berikut memberikan penjelasan yang lebih rinci tentang alasan yang dinyatakan sebelumnya untuk memilih .NET melalui .NET Framework.

Kebutuhan lintas platform

Jika aplikasi web atau layanan Anda perlu berjalan di beberapa platform, misalnya, Windows, Linux, dan macOS, gunakan .NET.

.NET mendukung sistem operasi yang disebutkan sebelumnya sebagai stasiun kerja pengembangan Anda. Visual Studio menyediakan Lingkungan Pengembangan Terpadu (IDE) untuk Windows dan macOS. Anda juga dapat menggunakan Visual Studio Code, yang berjalan di macOS, Linux, dan Windows. Visual Studio Code sepenuhnya mendukung .NET 6, termasuk IntelliSense dan debug. Sebagian besar editor pihak ketiga, seperti Sublime, Emacs, dan VI, bekerja dengan .NET. Editor pihak ketiga ini mendapatkan editor IntelliSense menggunakan Omnisharp. Anda juga dapat menghindari editor kode apa pun dan langsung menggunakan .NET CLI, yang tersedia untuk semua platform yang didukung.

Layanan mikro arsitektur

Arsitektur layanan mikro juga memungkinkan Anda menggabungkan teknologi melintasi batas layanan. Campuran teknologi ini memungkinkan pelukan bertahap .NET untuk layanan mikro baru yang bekerja dengan layanan atau layanan mikro lainnya. Misalnya, Anda dapat mencampur layanan mikro atau layanan yang dikembangkan dengan .NET Framework, Java, Ruby, atau teknologi monolitik lainnya.

Ada banyak platform infrastruktur yang tersedia. Azure Service Fabric dirancang untuk sistem layanan mikro besar dan kompleks. Azure App Service adalah pilihan yang baik untuk layanan mikro stateless. Alternatif layanan mikro berdasarkan Docker sesuai dengan pendekatan layanan mikro apa pun, seperti yang dijelaskan di bagian Kontainer . Semua platform ini mendukung .NET dan membuatnya ideal untuk menghosting layanan mikro Anda.

Untuk informasi selengkapnya tentang arsitektur layanan mikro, lihat .NET Microservices. Arsitektur untuk Aplikasi .NET Containerized.

Kontainer

Kontainer umumnya digunakan dengan arsitektur layanan mikro. Kontainer juga dapat digunakan untuk mengkontainerisasi aplikasi web atau layanan yang mengikuti pola arsitektur apa pun. .NET Framework dapat digunakan pada kontainer Windows. Namun, modularitas dan sifat ringan .NET menjadikannya pilihan yang lebih baik untuk kontainer. Saat Anda membuat dan menyebarkan kontainer, ukuran gambarnya jauh lebih kecil dengan .NET daripada dengan .NET Framework. Karena lintas platform, Anda dapat menyebarkan aplikasi server ke kontainer Linux Docker.

Kontainer Docker dapat dihosting di infrastruktur Linux atau Windows Anda sendiri atau di layanan cloud seperti Azure Kubernetes Service. Azure Kubernetes Service dapat mengelola, mengatur, dan menskalakan aplikasi berbasis kontainer di cloud.

Anda memerlukan sistem berkinerja tinggi dan dapat diskalakan

Ketika sistem Anda membutuhkan performa dan skalabilitas terbaik, .NET dan ASP.NET Core adalah opsi terbaik Anda. Runtime server berkinerja tinggi untuk Windows Server dan Linux menjadikan ASP.NET Core sebagai kerangka kerja web berkinerja tinggi pada tolok ukur TechEmpower.

Performa dan skalabilitas sangat relevan untuk arsitektur layanan mikro, di mana ratusan layanan mikro mungkin berjalan. Dengan ASP.NET Core, sistem berjalan dengan jumlah server/Virtual Machines (VM) yang jauh lebih rendah. Berkurangnya server/VM menghemat biaya pada infrastruktur dan hosting.

Versi .NET berdampingan per tingkat aplikasi

Untuk menginstal aplikasi dengan dependensi pada versi .NET yang berbeda, kami merekomendasikan .NET. Implementasi ini mendukung penginstalan berdampingan dari berbagai versi runtime .NET pada komputer yang sama. Penginstalan berdampingan memungkinkan beberapa layanan di server yang sama, masing-masing pada versi .NET-nya sendiri. Ini juga menurunkan risiko dan menghemat uang dalam peningkatan aplikasi dan operasi IT.

Penginstalan berdampingan tidak dimungkinkan dengan .NET Framework. Ini adalah komponen Windows, dan hanya satu versi yang dapat ada pada mesin pada satu waktu. Setiap versi .NET Framework menggantikan versi sebelumnya. Jika Anda menginstal aplikasi baru yang menargetkan versi .NET Framework yang lebih baru, Anda mungkin merusak aplikasi yang ada yang berjalan di komputer karena versi sebelumnya diganti.

Kapan memilih .NET Framework

.NET menawarkan manfaat signifikan untuk aplikasi baru dan pola aplikasi. Namun, .NET Framework terus menjadi pilihan alami untuk banyak skenario yang ada, dan dengan demikian, .NET Framework tidak digantikan oleh .NET untuk semua aplikasi server.

Menyebarkan Aplikasi .NET Framework

Dalam kebanyakan kasus, Anda tidak perlu memigrasikan aplikasi yang ada ke .NET. Sebagai gantinya, sebaiknya gunakan .NET saat Anda memperluas aplikasi yang ada, seperti menulis layanan web baru di ASP.NET Core.

Menggunakan pustaka .NET pihak ketiga atau paket NuGet yang tidak tersedia untuk .NET

.NET Standard memungkinkan berbagi kode di semua implementasi .NET, termasuk .NET Core/5+. Dengan .NET Standard 2.0, mode kompatibilitas memungkinkan proyek .NET Standard dan .NET mereferensikan pustaka .NET Framework. Untuk informasi selengkapnya, lihat Dukungan untuk pustaka .NET Framework.

Anda perlu menggunakan .NET Framework hanya dalam kasus di mana pustaka atau paket NuGet menggunakan teknologi yang tidak tersedia di .NET Standard atau .NET.

Menggunakan teknologi .NET yang tidak tersedia untuk .NET

Ada beberapa teknologi .NET Framework tidak tersedia di .NET. Daftar berikut menunjukkan teknologi paling umum yang tidak ditemukan di .NET:

  • ASP.NET aplikasi Web Forms: ASP.NET Web Forms hanya tersedia di .NET Framework. ASP.NET Core tidak dapat digunakan untuk Formulir Web ASP.NET.

  • ASP.NET aplikasi Halaman Web: halaman web ASP.NET tidak disertakan dalam ASP.NET Core.

  • Layanan terkait alur kerja: Windows Workflow Foundation (WF), Workflow Services (WCF + WF dalam satu layanan), dan WCF Data Services (sebelumnya dikenal sebagai "ADO.NET Data Services") hanya tersedia dalam .NET Framework.

  • Dukungan bahasa: Visual Basic dan F# saat ini didukung di .NET tetapi tidak untuk semua jenis proyek. Untuk daftar templat proyek yang didukung, lihat Opsi templat untuk dotnet baru.

Untuk informasi selengkapnya, lihat teknologi .NET Framework tidak tersedia di .NET.

Platform tidak mendukung .NET

Beberapa platform Microsoft dan platform pihak ketiga tidak mendukung .NET 6. Beberapa layanan Azure menyediakan SDK yang belum tersedia untuk dikonsumsi di .NET. Dalam kasus seperti itu, Anda dapat menggunakan REST API yang setara alih-alih SDK klien.

Lihat juga