Cara lain untuk menjelaskan perbedaan bisa dengan contoh dunia nyata, karena kebanyakan dari kita manusia akan menggunakan alat dan kerangka kerja yang ada (Xamarin, Unity, dll) untuk melakukan pekerjaan itu.
Jadi, dengan .NET Framework Anda memiliki semua alat .NET untuk digunakan, tetapi Anda hanya dapat menargetkan aplikasi Windows (UWP, Winforms, ASP.NET, dll). Karena .NET Framework adalah sumber tertutup, tidak banyak yang dapat dilakukan tentangnya.
Dengan .NET Core Anda memiliki lebih sedikit alat tetapi Anda dapat menargetkan Platform Desktop utama (Windows, Linux, Mac). Ini sangat berguna dalam aplikasi ASP.NET Core, karena Anda sekarang dapat meng-host Asp.net di Linux (harga hosting lebih murah). Sekarang, karena .NET Core bersumber terbuka, secara teknis dimungkinkan untuk mengembangkan perpustakaan untuk platform lain. Tetapi karena tidak ada kerangka kerja yang mendukungnya, saya tidak berpikir itu ide yang bagus.
Dengan .NET Standard Anda memiliki alat yang lebih sedikit tetapi Anda dapat menargetkan semua / sebagian besar platform. Anda dapat menargetkan Seluler berkat Xamarin, dan Anda bahkan dapat menargetkan Konsol Game berkat Mono / Unity. Pembaruan: Mungkin juga untuk menargetkan klien web dengan platform UNO dan Blazor (meskipun keduanya agak eksperimental sekarang).
Dalam aplikasi dunia nyata Anda mungkin perlu menggunakan semuanya. Sebagai contoh, saya mengembangkan aplikasi point of sale yang memiliki arsitektur berikut:
Dibagikan Server dan Klien:
- Pustaka .NET Standard yang menangani Model aplikasi saya.
- Pustaka .NET Standard yang menangani validasi data yang dikirim oleh klien.
Karena ini adalah perpustakaan .NET Standard, ini dapat digunakan dalam proyek lain (klien dan server).
Juga keuntungan bagus memiliki validasi pada pustaka .NET standard karena saya dapat memastikan validasi yang sama diterapkan pada server dan klien. Server wajib, sementara klien opsional dan berguna untuk mengurangi lalu lintas.
Sisi Server (API Web):
Karena ini dikembangkan dalam .NET Core, saya dapat meng-host aplikasi pada server Linux.
Sisi Klien (MVVM dengan WPF + Xamarin. Bentuk Android / iOS):
Pustaka .NET Standard yang menangani koneksi API klien.
Pustaka .NET Standard yang menangani Logika ViewModels. Digunakan di semua tampilan.
Aplikasi .NET Framework WPF yang menangani tampilan WPF untuk aplikasi windows. Pembaruan: Aplikasi WPF dapat menjadi .NET core sekarang, meskipun saat ini hanya berfungsi di windows. AvaloniaUI adalah alternatif yang baik untuk membuat aplikasi Desktop GUI untuk platform desktop lainnya.
Pustaka .NET Standard yang menangani tampilan Formulir Xamarin.
Proyek Xamarin Android dan Xamarin IOS.
Jadi Anda dapat melihat bahwa ada keuntungan besar di sini di sisi klien dari aplikasi, karena saya dapat menggunakan kembali keduanya .NET Standard libraries (Client API dan ViewModels) dan hanya membuat tampilan tanpa logika untuk aplikasi WPF, Xamarin dan iOS.