.NET 8.0'daki yenilikler [40]: WASI için kendi iş yükü

Womanne

Member
WASI (WebAssembly Sistem Arayüzü), WebAssembly bayt kodu tabanlı uygulamaları platformdan bağımsız olarak web tarayıcısı dışında çalıştırmaya yönelik bir standarttır. WASI ilk olarak 27 Mart 2019'da kamuya duyuruldu ve W3C'de WebAssembly grubunun bir alt kümesinde standartlaştırılıyor. (World Wide Web Konsorsiyumu).


Duyuru








Dr. Holger Schwichtenberg, 53 tanınmış uzmanıyla danışmanlık, eğitim ve yazılım geliştirme yoluyla çok sayıda orta ve büyük ölçekli şirketi destekleyen www.IT-Visions.de uzman ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası konferansa katılımı, 90'dan fazla uzmanlık kitabı ve 1.500'den fazla uzmanlık makalesi sayesinde Holger Schwichtenberg, .NET ve web teknolojileri konusunda Almanya'nın en tanınmış uzmanlarından biridir.







Microsoft, 25 Mart 2022'den beri .NET 7.0 ile WASI tabanlı uygulamalar için deneysel bir uygulama sunuyor, ancak başlangıçta yalnızca bir Microsoft çalışanının GitHub deposunda.

.NET 8.0'dan başlayarak proje, .NET SDK için deneysel bir iş yükü olarak mevcuttur.

İş yükünü aşağıdaki gibi yükleyin:


dotnet workload install wasi-experimental


Daha sonra WASI'ya dayalı yeni bir konsol uygulaması oluşturacaksınız.


dotnet net wasiconsole


veya Visual Studio'da:




Visual Studio WASI



WASI uygulaması Visual Studio'dan da oluşturulabilir.


(Resim: ekran görüntüsü (Holger Schwichtenberg))



Aşağıdaki kod, bazı sistem bilgilerini döndüren bir konsol uygulamasını gösterir:


// WASI-Demo (C) Dr. Holger Schwichtenberg, 2022
Console.WriteLine(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription + "' sagt 'Hallo' via WebAssembly/WASI!");

Console.WriteLine("OS Description: " + System.Runtime.InteropServices.RuntimeInformation.OSDescription);
Console.WriteLine("OS Architecture: " + System.Runtime.InteropServices.RuntimeInformation.OSArchitecture);
Console.WriteLine("OS Version: " + System.Environment.OSVersion);
Console.WriteLine("Machine Name: " + System.Environment.MachineName);
Console.WriteLine("Current User: " + System.Environment.UserDomainName + "\" + System.Environment.UserName);
Console.WriteLine("Process Path: " + System.Environment.ProcessPath);
Console.WriteLine("Current Directory: " + System.Environment.CurrentDirectory);
Console.WriteLine("Process ID: " + System.Environment.ProcessId);
Console.WriteLine("64 Bit: " + System.Environment.Is64BitProcess);
Console.WriteLine("Working Set: " + System.Environment.WorkingSet);

foreach (var d in System.Environment.GetLogicalDrives())
{
Console.WriteLine("Drive: " + d);
}



Aşağıdaki koddaki WASI projesi, RuntimeIdentifier'a sahip normal bir .NET 8.0 konsol uygulamasını temel almaktadır. wasi-wasm:


<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>wasi-wasm</RuntimeIdentifier>
<OutputType>Exe</OutputType>
<PublishTrimmed>true</PublishTrimmed>
</PropertyGroup>
</Project>



Derleme sırasında (sonraki şekle bakın), yalnızca bir DLL değil, aynı zamanda yaklaşık 11 MB'lık bir WebAssembly bayt kodu dosyası (.wasm) da oluşturulur.

Bu .wasm dosyası, .NET çalışma zamanı ortamı da dahil olmak üzere WASI uygulamasının tamamını içerir; DLL çalışma zamanında gerekli değildir ve çalışması için .NET Çalışma Zamanının yüklenmesini de gerektirmez. Ancak şu anda herhangi bir normal işletim sisteminde bir .wasm dosyasını doğrudan başlatmak mümkün değildir; Bytecode Alliance'ın Wasmtime veya Wasmer'ı gibi bir WASI çalışma zamanı ortamına ihtiyacınız var.

Sonraki resimler, Windows için yaklaşık 10 MB boyutunda bir .exe dosyasıyla gelen Wasmtime ile çalışmayı göstermektedir. Uygulamanın bir sanal alanda çalıştığını ve oyunda bir tarayıcı olmamasına rağmen şu anda bir “tarayıcı” olarak işletim sistemi ve kullanıcıyla konuştuğunu görebilirsiniz. İşlem kimliği her zaman 42'dir. Microsoft'un WASI SDK'sı ayrıca ASP.NET Core kullanımına da izin verir; bu, WebAssembly bayt koduna dayalı bir web sunucusu uygulaması yazabileceğiniz anlamına gelir.







.NET tabanlı bir WASI uygulamasını derlemek ve çalıştırmak


(Resim: Ekran görüntüsü (Holger Schwichtenberg))








Önce .NET çalışma zamanı ortamını kurmadan WASI uygulamasını Ubuntu 21.10'da çalıştırmak


(Resim: ekran görüntüsü (Holger Schwichtenberg))







(Resim: Dmytro Vikarchuk/Shutterstock)


iX ve dpunkt.verlag tarafından 19 Kasım 2024'te düzenlenecek BetterCode() .NET 9.0 çevrimiçi konferansında, www.IT-Visions.de adresindeki .NET uzmanları pratik örnekler kullanarak .NET 9.0'ın son sürümünü sunacaklar.

Bunlar arasında .NET 9.0 SDK, C# 13.0, ASP.NET Core 9.0, Blazor 9.0, Windows Forms 9.0, WPF 9.0, WinUI, .NET MAUI 9.0'daki yenilikler ve yapay zekanın .NET uygulamalarına entegrasyonu yer alıyor.

Programda altı ders, bir tartışma ve altı atölye çalışması yer alıyor. Biletler 22 Ekim'e kadar erken kayıt fiyatlarıyla satışta.








(Ben)
 
Üst