Aracılığıyla paylaş


Docker kapsayıcıları için ne zaman .NET seçilmelidir?

İpucu

Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Kapsayıcılı .NET Uygulamaları için .NET Mikro Hizmet Mimarisi e-Kitabı'ndan bir alıntıdır.

Kapsayıcılı .NET Uygulamaları için .NET Mikro Hizmetler Mimarisi eKitap kapak küçük resmi.

.NET 8'in modülerliği ve hafif yapısı kapsayıcılar için mükemmeldir. Kapsayıcıyı dağıtıp başlattığınızda , .NET 8 ile görüntüsü .NET Framework'e göre çok daha küçüktür. Buna karşılık, bir kapsayıcı için .NET Framework kullanmak için, görüntünüzü .NET 8 için kullandığınız Windows Nano Sunucu veya Linux görüntülerinden çok daha ağır olan Windows Server Core görüntüsüne dayandırmalısınız.

Buna ek olarak, .NET 8 platformlar arasıdır, bu nedenle Sunucu uygulamalarını Linux veya Windows kapsayıcı görüntüleriyle dağıtabilirsiniz. Ancak, geleneksel .NET Framework kullanıyorsanız, yalnızca Windows Server Core tabanlı görüntüleri dağıtabilirsiniz.

Aşağıda ,NET 8'in neden seçileceğine ilişkin daha ayrıntılı bir açıklama yer alır.

Platformlar arası geliştirme ve dağıtma

Hedefiniz Docker (Linux ve Windows) tarafından desteklenen birden çok platformda çalışabilen bir uygulamaya (web uygulaması veya hizmet) sahip olmaksa, .NET Framework yalnızca Windows'u desteklediğinden doğru seçim .NET 8'dir.

.NET 8, geliştirme platformu olarak macOS'i de destekler. Ancak, kapsayıcıları bir Docker konağına dağıttığınızda, bu konağın (şu anda) Linux veya Windows'u temel alması gerekir. Örneğin, bir geliştirme ortamında Mac üzerinde çalışan bir Linux VM kullanabilirsiniz.

Visual Studio , Windows için tümleşik bir geliştirme ortamı (IDE) sağlar ve Docker geliştirmesini destekler.

MacOS, Linux ve Windows üzerinde Visual Studio Code da kullanabilirsiniz. Visual Studio Code, IntelliSense ve hata ayıklama dahil olmak üzere .NET 8'i tam olarak destekler. VS Code basit bir düzenleyici olduğundan docker CLI ve .NET CLI ile birlikte makinede kapsayıcılı uygulamalar geliştirmek için bunu kullanabilirsiniz. .NET 8'i Sublime, Emacs, vi ve IntelliSense desteği sağlayan açık kaynak OmniSharp projesi gibi çoğu üçüncü taraf düzenleyiciyle de hedefleyebilirsiniz.

IDE'lere ve düzenleyicilere ek olarak, desteklenen tüm platformlar için .NET CLI kullanabilirsiniz.

Yeni ("yeşil alan") projeleri için kapsayıcıları kullanma

Kapsayıcılar yaygın olarak bir mikro hizmet mimarisiyle birlikte kullanılır, ancak herhangi bir mimari desene uyan web uygulamalarını veya hizmetlerini kapsayıcıya almak için de kullanılabilir. .NET Framework'i Windows Kapsayıcılarında kullanabilirsiniz, ancak .NET 8'in modülerliği ve hafif yapısı, kapsayıcılar ve mikro hizmet mimarileri için mükemmel olmasını sağlar. Bir kapsayıcı oluşturduğunuzda ve dağıttığınızda, .NET 8 ile görüntüsü .NET Framework'e göre çok daha küçüktür.

Kapsayıcılarda mikro hizmetler oluşturma ve dağıtma

Düz işlemleri kullanarak mikro hizmet tabanlı uygulamalar (kapsayıcılar olmadan) oluşturmak için geleneksel .NET Framework kullanabilirsiniz. Bu şekilde, .NET Framework zaten yüklü olduğundan ve işlemler arasında paylaşıldığından işlemler basit ve hızlı başlatılır. Ancak kapsayıcıları kullanıyorsanız, geleneksel .NET Framework görüntüsü de Windows Server Core'a dayanır ve bu da kapsayıcılarda mikro hizmetler yaklaşımı için çok ağır olmasını sağlar. Ancak, ekipler .NET Framework kullanıcıları için de deneyimi geliştirmek için fırsatlar arıyor. Son zamanlarda Windows Server Core kapsayıcı görüntülerinin boyutu %40'a >düşürüldü.

Öte yandan ,NET 8 basit olduğundan kapsayıcıları temel alan mikro hizmet odaklı bir sistemi benimsiyorsanız en iyi aday .NET 8'dir. Buna ek olarak, Linux veya Windows Nano Server için ilgili kapsayıcı görüntüleri basit ve küçüktür ve kapsayıcıların hafif ve hızlı başlatılmasını sağlar.

Mikro hizmetin mümkün olduğunca küçük olması amaçlanmıştır: dönerken hafif olmak, küçük bir ayak izine sahip olmak, küçük bir Sınırlanmış Bağlama sahip olmak (DDD, Etki Alanı Odaklı Tasarım'ı kontrol edin), küçük bir sorun alanını temsil etmek ve hızlı bir şekilde başlayıp durabilmek. Bu gereksinimler için .NET 8 kapsayıcı görüntüsü gibi küçük ve hızlı örnek oluşturma kapsayıcı görüntülerini kullanmak isteyeceksiniz.

Mikro hizmetler mimarisi, bir hizmet sınırında teknolojileri karıştırmanıza da olanak tanır. Bu yaklaşım, diğer mikro hizmetlerle veya Node.js, Python, Java, GoLang veya diğer teknolojilerle geliştirilen hizmetlerle birlikte çalışan yeni mikro hizmetler için .NET 8'e aşamalı geçiş sağlar.

Ölçeklenebilir sistemlerde yüksek yoğunluklu dağıtım

Kapsayıcı tabanlı sisteminiz mümkün olan en iyi yoğunluk, ayrıntı düzeyi ve performansa ihtiyaç duyduğunda, .NET ve ASP.NET Core en iyi seçeneklerinizdir. ASP.NET Core, geleneksel .NET Framework'teki ASP.NET 10 kata kadar daha hızlıdır ve Java servlet'leri, Go ve Node.js gibi mikro hizmetler için diğer popüler endüstri teknolojilerine yol açar.

Bu yaklaşım özellikle yüzlerce mikro hizmetin (kapsayıcı) çalıştırıldığı mikro hizmet mimarileri için geçerlidir. Linux veya Windows Nano'daki ASP.NET Core görüntüleriyle (.NET çalışma zamanına göre) sisteminizi çok daha az sayıda sunucu veya VM ile çalıştırarak altyapı ve barındırma maliyetlerinden tasarruf edebilirsiniz.