Microsoft artık .NET ailesinde .NET Core, .NET Framework ve Xamarin (Mono) var.
Burada çok fazla örtüşme var gibi görünüyor. Bu .NET türleri arasındaki fark nedir? Ne zaman projemde .NET Framework veya Xamarin yerine .NET Core kullanmayı seçmeliyim?
Microsoft artık .NET ailesinde .NET Core, .NET Framework ve Xamarin (Mono) var.
Burada çok fazla örtüşme var gibi görünüyor. Bu .NET türleri arasındaki fark nedir? Ne zaman projemde .NET Framework veya Xamarin yerine .NET Core kullanmayı seçmeliyim?
Yanıtlar:
Buradaki belgelere göre aşağıdaki 6 tipik senaryoda .NET Framework veya Xamarin yerine .NET Core kullanmalısınız .
1. Çapraz Platform ihtiyaçları
Açıkçası, hedefiniz platformlar arasında (Windows, Linux ve MacOS) çalışması gereken bir uygulamaya (web / hizmet) sahip olmaksa, .NET ekosistemindeki en iyi seçenek .NET Core'u çalışma zamanı olarak kullanmaktır (CoreCLR) ) ve kütüphaneler platformlar arasıdır. Diğer seçenek Mono Projesini kullanmaktır.
Her iki seçenek de açık kaynaklıdır, ancak .NET Core doğrudan ve resmi olarak Microsoft tarafından desteklenmektedir ve ileriye doğru büyük bir yatırım yapacaktır.
Platformlarda .NET Core kullanıldığında, proje yönetimi, hata ayıklama, kaynak kontrolü, yeniden düzenleme, Intellisense dahil zengin düzenleme, test etme ve daha pek çok verimlilik özelliğini destekleyen Visual Studio IDE ile Windows'ta en iyi geliştirme deneyimi bulunmaktadır. Ancak, zengin geliştirme ve hata ayıklama dahil Mac, Linux ve Windows'ta Visual Studio Code kullanılarak da desteklenir. Sublime, Emacs, VI ve daha fazlası gibi üçüncü taraf editörler bile iyi çalışıyor ve açık kaynak Omnisharp projesini kullanarak editör zekası alabilirler.
2. Mikro hizmetler
Birden çok bağımsız, dinamik olarak ölçeklendirilebilir, durum bilgisi olan veya durumsuz mikro hizmetlerden oluşan mikro hizmet odaklı bir sistem oluştururken, burada sahip olduğunuz en büyük avantaj, mikro hizmet düzeyinde farklı teknolojiler / çerçeveler / diller kullanabilmenizdir. Bu, sisteminizdeki mikro alan başına en iyi yaklaşımı ve teknolojiyi kullanmanıza izin verir, bu nedenle çok performanslı ve ölçeklenebilir mikro hizmetler oluşturmak istiyorsanız, .NET Core'u kullanmalısınız. Sonunda, .NET Core ile uyumlu olmayan herhangi bir .NET Framework kütüphanesi kullanmanız gerekiyorsa, sorun yoktur, bu mikro hizmeti .NET Framework ile oluşturabilirsiniz ve gelecekte .NET ile değiştirebilirsiniz. Çekirdek.
Kullanabileceğiniz altyapı platformu çoktur. İdeal olarak, büyük ve karmaşık mikro servis sistemleri için Azure Service Fabric'i kullanmalısınız. Ancak durum bilgisi olmayan mikro hizmetler için Azure Uygulama Hizmeti veya Azure İşlevleri gibi diğer ürünleri de kullanabilirsiniz.
Haziran 2016 itibarıyla, Azure'daki her teknolojinin .NET Core'u desteklemediğini, ancak .NET Core'un RTM yayınlandığı için Azure'daki .NET Core desteğinin önemli ölçüde artacağını unutmayın.
3. En iyi performans ve ölçeklenebilir sistemler
Sisteminiz mümkün olan en iyi performansa ve ölçeklendirilebilirliğe ihtiyaç duyduğunda, kaç kullanıcıya sahip olursanız olun en iyi yanıt verebilmeniz için .NET Core ve ASP.NET Core'un gerçekten parladığı yerdir. Aynı miktarda altyapı / donanımla ne kadar çok şey yaparsanız, son kullanıcılarınız için sahip olduğunuz deneyim daha düşük maliyetle o kadar zengin olur.
Moore'un tek CPU'lar için performans iyileştirme günleri artık geçerli değil; yine de sisteminiz büyürken daha fazlasını yapmanız gerekir ve sayıları katlanarak büyüyen günlük talepkar kullanıcılar için daha yüksek ölçeklenebilirlik ve performansa ihtiyaç duyarsınız. Sonuçta daha verimli olmanız, her yerde optimize etmeniz ve sonuçta makine, VM ve CPU çekirdeği kümeleri arasında daha iyi ölçeklendirme yapmanız gerekir. Bu sadece kullanıcının memnuniyeti meselesi değildir; ayrıca maliyet / TCO büyük bir fark yaratabilir. Bu nedenle performans ve ölçeklenebilirlik için çabalamak önemlidir.
Belirtildiği gibi, sisteminizin küçük parçalarını mikro hizmetler veya herhangi bir gevşek bağlanmış yaklaşım olarak izole edebiliyorsanız, her bir küçük parçayı / mikro hizmeti bağımsız olarak geliştiremeyeceğiniz ve daha uzun vadede daha iyi olacağınız için daha iyi olacaktır. çeviklik ve bakım, ancak yapmanız gereken şey .NET Core ile uyumlu değilse, başka bir teknolojiyi mikro hizmet düzeyinde kullanabileceksiniz. Ve sonunda yeniden düzenleyebilir ve mümkün olduğunda .NET Core'a getirebilirsiniz.
4. Mac, Linux veya Windows için komut satırı stili geliştirme.
.NET Core kullanılırken bu yaklaşım isteğe bağlıdır. Tabii ki, tam Visual Studio IDE'yi de kullanabilirsiniz. Ancak, hafif editörler ve yoğun komut satırı kullanımı ile geliştirmek isteyen bir geliştiriciyseniz, .NET Core CLI için tasarlanmıştır. Desteklenen tüm platformlarda kullanılabilen basit komut satırı araçları sunarak geliştiricilerin geliştirici, laboratuvar veya üretim makinelerine minimum kurulumla uygulamalar oluşturup test etmesini sağlar. Visual Studio Code gibi editörler, geliştirme deneyimleri için aynı komut satırı araçlarını kullanır. IDE'ler de Visual Studio gibi aynı CLI araçlarını kullanıyor ancak bunları zengin bir IDE deneyiminin arkasına saklıyor. Geliştiriciler artık CLI'dan editörden IDE'ye araç zinciri ile etkileşim kurmak istedikleri seviyeyi seçebiliyorlar.
5. Uygulama düzeyi başına .NET sürümlerinin yan yana olması gerekir.
.NET'te farklı çerçeve sürümlerine bağımlılık içeren uygulamalar yüklemek istiyorsanız, bu belgede daha önce açıklandığı gibi% 100 yan yana sağlayan .NET Core'u kullanmanız gerekir.
6. Windows 10 UWP .NET uygulamaları.
Ayrıca, şunları da okumak isteyebilirsiniz:
Microsoft bunu şöyle açıklıyor:
.NET Framework , Windows ile dağıtılan .NET'in "tam" veya "geleneksel" lezzetidir. Bir masaüstü Windows veya UWP uygulaması oluştururken veya daha eski ASP.NET 4.6+ ile çalışırken bunu kullanın.
.NET Core , Windows, Mac ve Linux üzerinde çalışan platformlar arası .NET'tir. Docker kapları dahil olmak üzere herhangi bir platformda çalışabilecek konsol veya web uygulamaları oluşturmak istediğinizde bunu kullanın. Buna şu anda UWP / masaüstü uygulamaları dahil değildir.
Xamarin , iOS, Android veya Windows Phone cihazlarında çalışabilen mobil uygulamalar oluşturmak için kullanılır.
Xamarin genellikle üstünde çalıştığı Mono Microsoft resmi olarak .NET Core çapraz platform gitmeye karar önce çapraz platform desteği için inşa edilmiş .NET bir sürümüdür. Xamarin gibi, Birlik platformu da Mono'nun üstünde çalışır.
Yaygın bir karışıklık noktası, ASP.NET Core'un uyduğu yerdir. ASP.NET Core, bu yanıtta ayrıntılı olarak açıklandığı gibi .NET Framework (Windows) veya .NET Core (çapraz platform) üzerinde çalışabilir: ASP arasındaki fark. NET Core (.NET Core) ve ASP.NET Core (.NET Framework)
Bu satırda başvurabilirsiniz - ASP.NET Core (.NET Core) ve ASP.NET Core (.NET Framework) arasındaki fark
Xamarin hiç tartışma değil. C # kullanarak mobil (iOS, Android ve Windows Mobile) uygulamalar oluşturmak istediğinizde Xamarin tek seçeneğinizdir.
.NET Framework , Windows ve Web uygulamalarını destekler. Bugün, .NET Framework'te Windows uygulamaları oluşturmak için Windows Forms, WPF ve UWP'yi kullanabilirsiniz. ASP.NET MVC, .NET Framework'te Web uygulamaları oluşturmak için kullanılır.
.NET Core , Windows, Mac ve Linux dahil tüm işletim sistemleri için uygulamalar oluşturmak üzere yeni açık kaynaklı ve çapraz platform çerçevesidir. .NET Core yalnızca UWP ve ASP.NET Core'u destekler. UWP, Windows 10'u Windows ve mobil uygulamaları hedeflemek için kullanılır. ASP.NET Core tarayıcı tabanlı web uygulamaları oluşturmak için kullanılır.
daha fazla ayrıntı istiyorsanız bu bağlantılara bakın
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/
https://docs.microsoft.com/en-us/dotnet/articles / standardı / seçme çekirdekli-çerçeve-sunucu
.Net Core Class Library, .Net Standardı üzerine kurulmuştur . .NET Standard, yalnızca bağımsız olarak yürütülemeyen ve başka bir .NET Core veya .NET Framework yürütülebilir projesi tarafından başvuruda bulunulması gereken sınıf kitaplığı projesi yapabilirsiniz . .Net Framework , .Net Core ve Xamarin , bir .Net Standart Kütüphanesi seçin
(.NET Framework ile yürütülebilir proje (Konsol uygulaması veya ASP.NET uygulaması gibi) yapabilirsiniz
Windows, Mac ve Linux dahil tüm işletim sistemleri için uygulamalar oluşturmak için yeni açık kaynaklı ve çapraz platform çerçevesidir.
Uygulama desteği .NET Standard [mavi] ve .NET Standardı (en son tam destek için asgari canlı platformu: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- destek] )
.NET 5 , Kasım 2020'de gelen tüm .NET varyantlarının birleşik bir sürümü olacaktır, bu nedenle artık varyantlar arasında seçim yapmaya gerek kalmayacaktır.

.NET Core, şu anda kullanmanız gereken .NET'in geçerli sürümüdür (daha fazla özellik, sabit hata, vb.)
Xamarin, C # ile kodlanmış çapraz platform mobil sorunlarına çözümler sunan bir platformdur, böylece Swift'i IOS için ayrı ayrı kullanmanız gerekmez ve aynı şey Android için de geçerlidir.
Xamarin telefon uygulamaları için kullanılır (her ikisi de IOS / Android). .NET Core, hem Apache hem de IIS üzerinde çalışabilen Web uygulamaları tasarlamak için kullanılır.
İki cümle arasındaki fark budur.
Mayıs 2019'da güncellendi
.Net Core 3.0 ve sonraki sürümlerini bir sonraki sürümüne yükseltmek için kullanmalısınız. Net 5, tek ihtiyacınız olan tek bir birleşik platformdur.
Gelecekte yalnızca bir .NET olacak ve bunu Windows> Linux, macOS, iOS, Android, tvOS, watchOS ve WebAssembly ve daha fazlasını hedeflemek için kullanabileceksiniz. https://devblogs.microsoft.com/dotnet/introducing-net-5/