MXC kapsülleme seçenekleri ve platform desteği

MXC, kapsayıcı kullanmanın karmaşıklığını yönetmenize yardımcı olur: bir ilkeyi tanımlamak ve kapsayıcının yaşam döngüsünü yönetmek için MXC kullanırsınız, ancak asıl uygulamayı seçilen yalıtım arka ucu gerçekleştirir. Her arka uç farklı bir işletim sistemi mekanizması üzerinde oluşturulur. Sonuç olarak, arka uçlar bir iş yükünü yalıtma ve dosyaları, ağ iletişimi, kullanıcı arabirimini ve yaşam döngüsünü işleme şekli bakımından farklılık gösterir.

İş yükünüzün ihtiyaç duyduğu şeyden başlayın ve ardından arka ucun hedeflediğiniz ana bilgisayarlarda bunu sağlayabildiğini onaylayın. yalnızca işletim sisteminin adı veya sürümü size arka ucun desteklenip desteklenmediğini söylemez.

Ana bilgisayar ve iş yükü ortamlarını anlama

Bir istekte, containment intent olarak adlandırılan bir ortam türü isteyebilir veya belirli bir backend adı verebilirsiniz. process intent, çalıştığınız ana makinede yerel işlem yalıtımı arka ucuna eşlenir. Arka uç işletim sistemine göre farklılık gösterdiğinden, aynı amaç size Windows, Linux ve macOS üzerinde farklı özellikler sağlayabilir.

Host Varsayılan işlem arka ucu Diğer ortamlar
Windows ProcessContainer Ayrı bir Windows oturumu, bir Windows VM’si veya desteklendiği durumlarda WSLc aracılığıyla Linux iş yükleri
Linux Balonlu naylon LXC ve desteklendiği durumlarda özel sanallaştırma arka uçları
macOS Emniyet kemeri Diğer desteklenen seçenekler için yükleyeceğiniz sürümü denetleyin

İş yükünün konakla aynı işletim sisteminde çalıştırılması gerekmez. Örneğin, WSLc bir Windows ana bilgisayarı üzerinde Linux iş yükü çalıştırır. Kendi önkoşulları vardır ve kaynakları konakla Windows işlem korumalı alanının yaptığından farklı şekilde paylaşır.

Yayın durumunu ve SDK kapsamını denetleme

Arka uç desteği sürümden sürüme değişir, bu nedenle yüklediğiniz paket sürümü için destek bilgilerini denetleyin.

MXC v1.0.0'da V1 SDK'ları şu arka uçları kullanan kapsayıcılar oluşturabilir:

  • Windows: ProcessContainer, IsolationSession ve WSLc
  • Linux: Bubblewrap ve LXC
  • macOS: Seatbelt

Windows Sandbox, MicroVM ve Hyperlight deneyseldir. Bunlar açık deneysel izin gerektirir ve bunları V1 SDK API'leri aracılığıyla oluşturamazsınız. Bunlardan birini veya başka bir özelleştirilmiş ortamı düşünüyorsanız, önce sürümünüzün sürüm notlarını denetleyin.

Ana bilgisayarda kullanılabilen bir arka uç, çağırmayı planladığınız SDK işlemini yine de desteklemeyebilir. V1 SDK'larında:

  • Yaşam döngüsü API'leri yalnızca IsolationSession ve WSLc ile çalışır.
  • Tek seferlik PTY yürütme, IsolationSession, Bubblewrap, LXC ve Seatbelt ile çalışır.
  • Mevcut bir kapsayıcıda PTY yürütmesi yalnızca IsolationSession ile çalışır.

Ayrıntılar için bkz. SDK başvuruları:

Rust kullanıyorsanız arka uç desteği, etkinleştirdiğiniz crate özelliklerine de bağlıdır. IsolationSession veya WSLc kullanmak için mxc-sdk crate'inin isolation_session veya wslc özelliğini etkinleştirin. Daha fazla bilgi için Rust SDK kılavuzuna bakın.

Çalışma zamanı keşfi ile başlayın

Her SDK, bir şey başlatmadan önce geçerli ana bilgisayarın neleri desteklediğini söyleyebilir. Önce bu denetimleri çalıştırın, ancak ana bilgisayarın yapılandırması denetim ile başlatma arasında değişebileceğinden başlatma hatalarını işlemeye devam edin.

Kapsayıcıları başlatıp başlatamayacağınızı, konağın daha geniş bir görünümü için kullanılabilir arka uçları ve çalıştırmadan önce Windows'ta belirli bir isteği test etmek için kullanılacak araştırmayı öğrenmek için platform desteğini kullanın.

SDK Discovery API Denetlenecek şeyler
.NET MxcPlatform.GetPlatformSupport() IsSupported, Reasonve AvailableMethods, SDK'nın başlatabileceği arka uçları listeler
.NET MxcPlatform.GetAvailableBackends() Ana bilgisayar kullanılabilirliği, isteğe bağlı özellikler ve uyarılar. Bazı yürütme API'leri burada listelenen her arka ucu kullanamaz.
.NET MxcContainer.Probe() Windows üzerinde, bir kapsayıcı oluşturmadan isteğin alacağı ProcessContainer yalıtım katmanı ve isteğe özgü uyumluluk tanılamaları
TypeScript getPlatformSupport() isSupported, reason, availableMethods ve konağa özgü uyarılar ve yetenek alanları
TypeScript getAvailableBackends() Ana bilgisayar kullanılabilirliği, isteğe bağlı özellikler ve uyarılar. Bazı yürütme API'leri burada listelenen her arka ucu kullanamaz.
TypeScript probe() Windows üzerinde, istek bir kapsayıcı oluşturmadan ProcessContainer yalıtım katmanını ve isteğe özgü uyumluluk tanılamalarını alır
Rust v1::platform_support() is_supported, reason, available_methods ve Linux'ta Bubblewrap ağ özelliği
Rust v1::available_backends() Ana bilgisayar kullanılabilirliği, isteğe bağlı özellikler ve uyarılar. Bazı yürütme API'leri burada listelenen her arka ucu kullanamaz.
Rust v1::probe() Windows üzerinde, istek bir kapsayıcı oluşturmadan ProcessContainer yalıtım katmanını ve isteğe özgü uyumluluk tanılamalarını alır

Uygulanamaz veya algılanamayan alanlar sonuçlarda eksik olabilir. Discovery yararlı bir ilk denetimdir, ancak politikanızın tamamını doğrulamaz. Emin olmak için, çalıştırmayı planladığınız isteği oluşturun ve seçilen arka uç sistemin gerektirdiği tüm kontrolleri uygulayabildiğini onaylayın.

Bazı konakların, bir arka ucun çalışması için ek bileşenlere veya yönetici kurulumuna ihtiyacı vardır. Keşif sonuçları ve başlatma hataları eksik olan şeyleri size söyleyebilir, ancak bu, uygulamanıza veya kodlama aracınıza ana makineyi değiştirme izni vermez. Ana makineyi yöneten kişiden arka ucun belgelenen kurulum adımlarını izlemesini isteyin.

Windows için bkz. İşletim sistemi sürümü ilkesi desteği. Bir Windows sürümü MXC tarafından desteklenebilir ve yine de belirli bir ilke özelliğinden yoksun olabilir, bu nedenle her ikisini de denetleyin.

İş yükünüz için gereken kısıtlamaları denetleyin

İki arka uç aynı ilke söz dizimini kabul edebilir ve yine de onu farklı şekilde uygulayabilir. Bir backend seçmeden önce aşağıdaki gibi alanları göz önünde bulundurun:

Alan Sorulacak sorular
Dosyaları Arka uç, çakışan olanlar da dahil olmak üzere ihtiyacınız olan okuma, yazma ve engelleme yetkilendirmelerini ifade edebilir mi? Dosyaları konakla paylaşıyor, takıyor veya kopyalıyor mu?
Network Özel ağ ve konak geri döngü kuralları dahil olmak üzere doğrudan veya ara sunucu aracılığıyla ağ modelinizi uygulayabilir mi?
Kullanıcı Arayüzü (UI) İhtiyacınız olan pencere, pano ve giriş kısıtlamalarını uygulayabilir mi?
Lifecycle Her komutu bağımsız olarak mı çalıştırıyor yoksa ortamı komutlar arasında tutabilir mi? Bir durmadan sonra ne tutulur?
Öğrenme Modu Ana bilgisayar ProcessContainer engelleme yakalamayı destekliyor mu? Aksi takdirde arka uç hangi tanılama iş akışını sağlar?

GitHub üzerindeki MXC kılavuzları, her arka uç için desteklenen özellikleri, işletim sistemi derlemelerini ve gereksinimleri listeler.

Gereksinimlerinize göre bir arka uç seçin

Arka ucu seçmeden önce not alın:

  • Uygulamanızın desteklediği konak işletim sistemleri ve işlemci mimarileri.
  • İş yükünün ihtiyaç duyduğu konuk veya araç ortamı.
  • İş yükünün ihtiyaç duyduğu dosya, ağ, kullanıcı arabirimi, cihaz ve konak aracı erişimleri.
  • Her komutun kendi başına çalışıp çalışmadığı veya önceki komutlardan durum bilgisi gerekip gerekmediği.
  • Başlangıç süresi, kaynaklar, dağıtım ve kullanıcı etkileşimiyle ilgili sınırlarınız.
  • İş yükünün ve verilerinin ne kadar güçlü bir yalıtım sınırı gerektirdiği.
  • Arka ucun ihtiyacınız olan her ilke denetimini uygulayıp uygulayamayacağı.

Ardından hem pozitif hem de negatif testlerle desteklediğiniz her konak yapılandırmasını test edin. Başarılı bir başlatma yalnızca MXC'nin yapılandırmayı kabul ettiğini gösterir. Verilen yolların dışında yazma girişimi gibi negatif testler, kısıtlamaların gerçekten geçerli olup olmadığını gösterir.