Farkı açıklamanın bir başka yolu da gerçek dünya örnekleriyle olabilir, çünkü çoğumuz ölümlüler işi yapmak için mevcut araçları ve çerçeveleri (Xamarin, Unity, vb.) Kullanacaklardır.
Böylece, .NET Framework ile çalışmak için tüm .NET araçlarına sahipsiniz, ancak yalnızca Windows uygulamalarını (UWP, Winforms, ASP.NET, vb.) Hedefleyebilirsiniz. .NET Framework kapalı kaynak olduğundan, bu konuda yapılacak çok şey yoktur.
.NET Core ile daha az aracınız vardır, ancak ana Masaüstü Platformlarını (Windows, Linux, Mac) hedefleyebilirsiniz. Artık ASP.net'i Linux'ta (daha ucuz barındırma fiyatları) barındırabildiğiniz için bu özellikle ASP.NET Core uygulamalarında kullanışlıdır. Şimdi, .NET Core açık kaynaklı olduğundan, diğer platformlar için kütüphaneler geliştirmek teknik olarak mümkündür. Ama onu destekleyen çerçeveler olmadığı için, bunun iyi bir fikir olduğunu düşünmüyorum.
.NET Standard ile daha az aracınız vardır, ancak tüm platformları / çoğu platformları hedefleyebilirsiniz. Xamarin sayesinde Mobil'i hedefleyebilir ve Mono / Unity sayesinde Oyun Konsollarını bile hedefleyebilirsiniz. Güncelleme: UNO platformu ve Blazor ile web istemcilerini hedeflemek de mümkündür (her ikisi de şu anda biraz deneysel olsa da).
Gerçek bir dünya uygulamasında hepsini kullanmanız gerekebilir. Örneğin, aşağıdaki mimariye sahip bir satış noktası uygulaması geliştirdim:
Hem Sunucu hem de İstemci paylaştı:
- Uygulamamın Modellerini işleyen bir .NET Standart kütüphanesi.
- İstemciler tarafından gönderilen verilerin doğrulanmasını işleyen bir .NET Standart kitaplığı.
Bir .NET Standart kitaplığı olduğundan, başka herhangi bir projede (istemci ve sunucu) kullanılabilir.
Ayrıca sunucu ve istemcide aynı doğrulama uygulandığından emin olabilirsiniz çünkü bir .NET standart kitaplığında doğrulama sahip güzel bir avantajı. Sunucu zorunluyken, istemci trafiği azaltmak için isteğe bağlı ve kullanışlıdır.
Sunucu Tarafı (Web API'sı):
Bu .NET Core'da geliştirildiğinden uygulamayı bir Linux sunucusunda barındırabilirim.
İstemci Tarafı (WPF + Xamarin.Forms Android / IOS ile MVVM):
İstemci API bağlantısını işleyen bir .NET Standart kitaplığı.
ViewModels Logic'i işleyen bir .NET Standart kütüphanesi. Tüm görünümlerde kullanılır.
Windows uygulaması için WPF görünümlerini işleyen bir .NET Framework WPF uygulaması. Güncelleme: WPF uygulamaları şu anda yalnızca Windows üzerinde çalışmasına rağmen .NET çekirdeği olabilir. AvaloniaUI, diğer masaüstü platformları için Masaüstü GUI uygulamaları yapmak için iyi bir alternatiftir.
Xamarin Forms görünümlerini işleyen bir .NET Standart kitaplığı.
Bir Xamarin Android ve Xamarin IOS projesi.
Hem .NET Standard kitaplıklarını (İstemci API'sı ve ViewModels) hem de WPF, Xamarin ve IOS uygulamaları için mantıksız görünümler yapabildiğim için, uygulamanın istemci tarafında burada büyük bir avantaj olduğunu görebilirsiniz.