Sunucu uygulamaları için .NET ve .NET Framework karşılaştırması

Sunucu tarafı uygulamaları oluşturmak için desteklenen iki .NET uygulaması vardır.

Uygulama Dahil edilen sürümler
.NET .NET Core 1.0 - 3.1, .NET 5 ve sonraki .NET sürümleri.
.NET Framework .NET Framework 1.0 - 4.8

Her ikisi de aynı bileşenlerin çoğunu paylaşır ve iki bileşen arasında kod paylaşabilirsiniz. Ancak ikisi arasında temel farklılıklar vardır ve seçiminiz neyi başarmak istediğinize bağlıdır. Bu makalede her birinin ne zaman kullanılacağına ilişkin yönergeler sağlanır.

Aşağıdaki durumlarda sunucu uygulamanız için .NET kullanın:

  • Platformlar arası gereksinimleriniz var.
  • Mikro hizmetleri hedeflisiniz.
  • Docker kapsayıcıları kullanıyorsunuz.
  • Yüksek performanslı ve ölçeklenebilir sistemlere ihtiyacınız vardır.
  • Uygulama başına yan yana .NET sürümlerine ihtiyacınız vardır.

Aşağıdaki durumlarda sunucu uygulamanız için .NET Framework kullanın:

  • Uygulamanız şu anda .NET Framework kullanıyor (geçiş yapmak yerine genişletmeniz öneridir).
  • Uygulamanız üçüncü taraf kitaplıkları veya .NET için kullanılamayan NuGet paketlerini kullanıyor.
  • Uygulamanız .NET için kullanılamaan .NET Framework teknolojilerini kullanıyor.
  • Uygulamanız .NET'i desteklemeyen bir platform kullanıyor.

.NET ne zaman seçilir?

Aşağıdaki bölümlerde .NET Framework üzerinden .NET'i seçmenin daha önce belirtilen nedenleri hakkında daha ayrıntılı bir açıklama verebilirsiniz.

Platformlar arası gereksinimler

Web veya hizmet uygulamanızın Windows, Linux ve macOS gibi birden çok platformda çalışması gerekiyorsa .NET kullanın.

.NET, geliştirme iş istasyonunuz olarak daha önce bahsedilen işletim sistemlerini destekler. Visual Studio, Windows ve macOS için Tümleşik Geliştirme Ortamı (IDE) sağlar. MacOS, Linux ve Windows üzerinde çalışan Visual Studio Code'ı da kullanabilirsiniz. Visual Studio Code, IntelliSense ve hata ayıklama dahil olmak üzere .NET'i destekler. Sublime, Emacs ve VI gibi çoğu üçüncü taraf düzenleyici .NET ile çalışır. Bu üçüncü taraf düzenleyiciler Omnisharp kullanarak düzenleyici IntelliSense'i alır. Ayrıca herhangi bir kod düzenleyicisinden kaçınabilir ve desteklenen tüm platformlarda kullanılabilen .NET CLI'yi doğrudan kullanabilirsiniz.

Mikro hizmetler mimarisi

Mikro hizmetler mimarisi, bir hizmet sınırında teknolojilerin bir karışımını sağlar. Bu teknoloji karışımı, diğer mikro hizmetler veya hizmetlerle çalışan yeni mikro hizmetler için .NET'in aşamalı olarak benimsenmesini sağlar. Örneğin, .NET Framework, Java, Ruby veya diğer monolitik teknolojilerle geliştirilen mikro hizmetleri veya hizmetleri karıştırabilirsiniz.

Kullanılabilir birçok altyapı platformu vardır. Azure Service Fabric , büyük ve karmaşık mikro hizmet sistemleri için tasarlanmıştır. Azure Uygulaması Hizmeti, durum bilgisi olmayan mikro hizmetler için iyi bir seçimdir. Docker'ı temel alan mikro hizmetler alternatifleri, Kapsayıcılar bölümünde açıklandığı gibi herhangi bir mikro hizmet yaklaşımına uygundur. Tüm bu platformlar .NET'i destekler ve mikro hizmetlerinizi barındırmak için ideal hale getirir.

Mikro hizmetler mimarisi hakkında daha fazla bilgi için bkz . .NET Mikro Hizmetleri. Kapsayıcılı .NET Uygulamaları mimarisi.

Kapsayıcılar

Kapsayıcılar genellikle bir mikro hizmet mimarisiyle kullanılır. Kapsayıcılar, herhangi bir mimari desene uyan web uygulamalarını veya hizmetlerini kapsayıcıya almak için de kullanılabilir. .NET Framework, Windows kapsayıcılarında kullanılabilir. Yine de.NET'in modülerliği ve hafif yapısı, kapsayıcılar için daha iyi bir seçimdir. Kapsayıcı oluştururken ve dağıtırken görüntüsünün boyutu .NET Framework'e kıyasla .NET ile çok daha küçüktür. Platformlar arası olduğundan, sunucu uygulamalarını Linux Docker kapsayıcılarına dağıtabilirsiniz.

Docker kapsayıcıları kendi Linux veya Windows altyapınızda veya Azure Kubernetes Service gibi bir bulut hizmetinde barındırılabilir. Azure Kubernetes Service, buluttaki kapsayıcı tabanlı uygulamaları yönetebilir, düzenleyebilir ve ölçeklendirebilir.

Yüksek performanslı ve ölçeklenebilir sistemler

Sisteminiz mümkün olan en iyi performansa ve ölçeklenebilirliğe ihtiyaç duyduğunda, .NET ve ASP.NET Core en iyi seçeneklerinizdir. Windows Server ve Linux için yüksek performanslı sunucu çalışma zamanı, ASP.NET Core'un TechEmpower karşılaştırmalarında en iyi performansa sahip bir web çerçevesi olmasını sağlar.

Performans ve ölçeklenebilirlik özellikle yüzlerce mikro hizmetin çalışıyor olabileceği mikro hizmet mimarileri için geçerlidir. ASP.NET Core ile sistemler çok daha az sayıda sunucu/Sanal Makineler (VM) ile çalışır. Azaltılan sunucular/VM'ler altyapı ve barındırma maliyetlerinden tasarruf eder.

Uygulama düzeyi başına yan yana .NET sürümleri

Farklı .NET sürümlerine bağımlılıkları olan uygulamaları yüklemek için .NET'i öneririz. Bu uygulama, .NET çalışma zamanının farklı sürümlerinin aynı makineye yan yana yüklenmesini destekler. Yan yana yükleme, aynı sunucuda her biri kendi .NET sürümünde birden çok hizmete izin verir. Ayrıca uygulama yükseltmeleri ve BT işlemlerinde riskleri düşürür ve tasarruf sağlar.

.NET Framework ile yan yana yükleme mümkün değildir. Bu bir Windows bileşenidir ve bir makinede aynı anda yalnızca bir sürüm bulunabilir. .NET Framework'ün her sürümü önceki sürümün yerini alır. .NET Framework'ün daha sonraki bir sürümünü hedefleyen yeni bir uygulama yüklerseniz, önceki sürüm değiştirildiği için makinede çalışan mevcut uygulamaları bozabilirsiniz.

.NET Framework ne zaman seçilir?

.NET, yeni uygulamalar ve uygulama desenleri için önemli avantajlar sunar. Ancak, .NET Framework birçok mevcut senaryo için doğal bir seçim olmaya devam eder ve bu nedenle tüm sunucu uygulamaları için .NET Framework'ün yerini .NET almaz.

Geçerli .NET Framework uygulamaları

Çoğu durumda, mevcut uygulamalarınızı .NET'e geçirmeniz gerekmez. Bunun yerine, ASP.NET Core'da yeni bir web hizmeti yazma gibi mevcut bir uygulamayı genişletirken .NET kullanmanızı öneririz.

.NET için üçüncü taraf kitaplıkları veya NuGet paketleri kullanılamıyor

.NET Standard, .NET Core/5+ dahil olmak üzere tüm .NET uygulamalarında kod paylaşımını sağlar. .NET Standard 2.0 ile, uyumluluk modu .NET Standard ve .NET projelerinin .NET Framework kitaplıklarına başvurmasını sağlar. Daha fazla bilgi için bkz . .NET Framework kitaplıkları desteği.

.NET Framework'ün yalnızca kitaplıkların veya NuGet paketlerinin .NET Standard veya .NET'te bulunmayan teknolojileri kullandığı durumlarda kullanmanız gerekir.

.NET Framework teknolojileri .NET için kullanılamıyor

Bazı .NET Framework teknolojileri .NET'te kullanılamaz. Aşağıdaki listede .NET'te bulunmayan en yaygın teknolojiler gösterilmektedir:

  • Web Forms uygulamalarını ASP.NET: ASP.NET Web Forms yalnızca .NET Framework'te kullanılabilir. ASP.NET Core, ASP.NET Web Forms için kullanılamaz.

  • ASP.NET Web Sayfaları uygulamaları: ASP.NET Web Sayfaları ASP.NET Core'a dahil değildir.

  • İş akışıyla ilgili hizmetler: Windows Workflow Foundation (WF), Workflow Services (tek bir hizmette WCF + WF) ve WCF Veri Hizmetleri (eski adıyla "ADO.NET Veri Hizmetleri") yalnızca .NET Framework'te kullanılabilir.

  • Dil desteği: Visual Basic ve F# şu anda .NET'te desteklenir ancak tüm proje türleri için desteklenmez. Desteklenen proje şablonlarının listesi için bkz . Dotnet new için şablon seçenekleri.

Daha fazla bilgi için bkz . .NET'te kullanılamayan .NET Framework teknolojileri.

Platform .NET'i desteklemiyor

Bazı Microsoft veya üçüncü taraf platformları .NET'i desteklemez. Bazı Azure hizmetleri .NET'te henüz kullanıma sunulmayan bir SDK sağlar. Böyle durumlarda istemci SDK'sı yerine eşdeğer REST API'yi kullanabilirsiniz.

Ayrıca bkz.