Aracılığıyla paylaş


Windows Konsolu ve Terminal Ekosistemi Yol Haritası

Bu belge, Windows Konsolu ve Windows Terminal ürünlerinin üst düzey yol haritasıdır. Aşağıdakileri kapsar:

  • Windows Konsolu ve Windows Terminali' nin Windows ve diğer işletim sistemlerindeki komut satırı uygulamalarının ekosistemine nasıl uyum sağlaması.

  • Platformu oluşturmanın yanı sıra bu platform için oluşturmanın bir parçası olan ürünlerin, özelliklerin ve stratejilerin tarihi ve gelecekteki yol haritası.

Microsoft'ta geçerli konsol/terminal döneminin odak noktası, birinci sınıf terminal deneyimini doğrudan Windows platformundaki geliştiricilere sunmak ve klasik Windows Konsolu API'lerini geçici olarak devre dışı bırakma ve bunların yerine sahte konsol kullanan sanal terminal dizileri eklemektir. Windows Terminali , bu geçişi birinci sınıf bir deneyime dönüştürür ve geliştirici topluluğundan açık kaynak işbirliğine davet eder, istemci komut satırı ve terminal barındırma uygulamalarının tam bir şekilde karıştırılıp eşleştirilmesini destekler ve Windows ekosistemini diğer tüm platformlarla birleştirir.

Tanımlar

Devam etmeden önce bu alanda kullanılan ortak terminoloji tanımlarını öğrenmeniz önerilir. Yaygın terminoloji şunları içerir: Komut Satırı (veya Konsol) uygulamaları, standart tanıtıcılar (STDIN, STDOUT, STDERR), TTY ve PTY cihazları, istemciler ve sunucular, konsol alt sistemi, konsol konağı, sahte konsol ve terminal.

Mimarlık

Sistemin genel mimarisi dört bölümden oluşur: istemci, cihaz, sunucu ve terminal.

Komut Satırı İletişimi akış grafiği kaynağından istemciden cihaza, sunucudan terminale çalışan hedefe

Müşteri

İstemci, kullanıcının komutları girmesini sağlamak için (fare tabanlı kullanıcı arabirimi yerine) metin tabanlı bir arabirim kullanan ve sonucun metin gösterimini döndüren bir komut satırı uygulamasıdır. Windows'da Konsol API'si istemci ile cihaz arasında bir iletişim katmanı sağlar. (Bu, cihaz denetimi API'lerine sahip standart bir konsol tutamacı da olabilir).

Aygıt

Cihaz, istemci ve sunucu olmak üzere iki işlem arasındaki bir ara ileti işleme iletişim katmanıdır. Windows'ta bu, konsol sürücüsüdür. Diğer platformlarda, TTY veya PTY cihazıdır. İşlemin tamamı düz metindeyse veya sanal terminal dizileri içeriyorsa ancak Windows Konsol API'leriyle değilse, dosyalar, kanallar ve yuvalar gibi diğer cihazlar bu iletişim kanalı olarak kullanılabilir.

Sunucu

Sunucu, istenen API çağrılarını veya istemciden gelen iletileri yorumlar. Windows'ta klasik işletim modunda sunucu, çıkışı ekrana sunmak için bir kullanıcı arabirimi de oluşturur. Sunucu ayrıca, aynı modülde paketlenmiş bir terminal gibi sürücü aracılığıyla istemciye yanıt iletileri göndermek için giriş toplar. Psödokonol modunu kullanarak, bunun yerine bu bilgileri ekli terminale sanal terminal dizilerinde sunan bir çeviri aracıdır.

Terminal

Terminal, kullanıcıya grafik görüntüleme ve etkileşim hizmetleri sağlayan son katmandır. Girişi yakalamak ve sonunda istemcinin STDINöğesine ulaşan sanal terminal dizileri olarak kodlamaktan sorumludur. Ayrıca ekranda sunu için istemciden STDOUT geri aldığı sanal terminal dizilerini alır ve kodunu çözer.

Diğer bağlantılar

Ek olarak, birden çok rol sunan uygulamalar uç noktalardan birine zincirlenerek daha fazla bağlantı gerçekleştirilebilir. Örneğin, bir SSH oturumunun iki rolü vardır: bir cihazda çalışan komut satırı uygulaması için bir terminaldir , ancak alınan tüm bilgileri başka bir cihazdaki bir istemci rolüne iletir. Bu zincirleme, geniş bir senaryo esnekliği sunan cihazlar ve bağlamlar arasında süresiz olarak gerçekleşebilir.

Bir API kümesi ile sanal terminal dizileri arasında çeviri uyumluluk katmanına gerek olmadığından, Windows dışı platformlarda sunucu ve terminal rolleri tek bir birimdir.

Microsoft ürünleri

Tüm Microsoft Windows komut satırı ürünleri artık GitHub'da açık kaynak bir depoda , microsoft/terminalde kullanılabilir.

Windows Konsol Konağı

Bu, komut satırı uygulamaları için geleneksel Windows kullanıcı arabirimidir. Ekli herhangi bir komut satırı uygulamasından çağrılan tüm konsol API hizmetlerini işler. Windows Konsolu, bu uygulamaların tümü adına grafik kullanıcı arabirimi (GUI) gösterimini de işler. Sistem dizininde olarak conhost.exeveya openconsole.exe açık kaynak biçiminde bulunur. Windows işletim sistemiyle birlikte gelir. Ayrıca , psödokonsole altyapısının daha up-tobir tarih uygulaması için açık kaynak deposundan oluşturulan diğer Microsoft ürünlerinde de bulunabilir. Yukarıdaki tanımlara göre, geleneksel olarak birleştirilmiş bir sunucu ve terminal rolünde veya tercih edilen pseudoconsole altyapısı aracılığıyla yalnızca sunucu rolünde çalışır.

Windows Terminali

Bu, komut satırı uygulamaları için yeni Windows arabirimidir. Windows Terminali, tüm Windows dışı platformlarda olduğu gibi API hizmeti ve metin tabanlı uygulama birlikte çalışma arasındaki endişeleri ayırmak için sahte virgül kullanmanın birinci taraf bir örneği olarak hizmet verir.

Windows Terminali, Windows için amiral gemisi metin modu kullanıcı arabirimidir. Ekosistemin özelliklerini gösterir ve Windows geliştirmesini diğer platformlarla birleştirmeye yönlendirmektedir. Windows Terminali, Windows API'lerinin ve çerçevelerinin geçmişini ve gamını kapsayan sağlam ve karmaşık bir modern uygulamanın nasıl derlendiğini gösteren bir örnektir. Yukarıdaki tanımlara göre, bu ürün bir terminal rolünde çalışır.

Önemli geçmiş kilometre taşları

Konsol alt sisteminin önemli geçmiş kilometre taşları, 2014'ten önce uygulamaya ayrılır ve ardından Windows 10 döneminde yenilenen komut satırına odaklanıldığında 2014'ten bu yana gerçekleştirilen çalışmalara genel bir bakış sağlar.

İlk Uygulama

[1989-1990'lar] İlk konsol konak sistemi, Windows işletim sistemi içindeki DOS ortamının öykünmesi olarak uygulandı. Kodu dolanıktır ve Komut İstemicmd.exe ile işbirliği yapar ve doss ortamının bir gösterimidir. Konsol konak sistem kodu, sorumlulukları ve ayrıcalıkları Komut İstemi yorumlayıcısı/kabuğu ile paylaşır. Ayrıca, cmd benzeri bir şekilde hizmet gerçekleştirmek için diğer komut satırı yardımcı programları için temel bir hizmet düzeyi sağlar.

CJK için DBCS

[1997-1999] Bu sıralarda , CJK (Çince, Japonca ve Korece) pazarlarını desteklemek için DBCS desteği ("Çift baytlık karakter kümesi") kullanıma sunulmuştur. Bu çaba, konsoldaki birçok yazma ve okuma yönteminin tek baytlı karakterlerle başa çıkmak için "batı" sürümlerinin yanı sıra geniş karakter dizisini temsil etmek için iki bayt gerektiren "doğu" sürümleri için alternatif bir gösterim sağlamasına neden olur. Bu çarpım, konsol ortamındaki bir hücrenin geniş gösterimini 1 veya 2 hücre genişliğinde olacak şekilde içeriyordu; burada 1 hücre dar (genişten uzun) ve 2 hücre geniş, tam genişlikte veya başka bir şekilde tipik Çince, Japonca ve Korece ideografların yazılabildiği bir kare.

Güvenlik/Yalıtım

[2005-2009] Kritik sistem işlemi içinde çalışan konsol alt sistemi deneyimiyle, csrss.exeçeşitli istemci uygulamalarını farklı erişim düzeylerinde tek bir süper kritik ve ayrıcalıklı işleme bağlamak özellikle tehlikeli olarak fark edildi. Bu çağda konsol alt sistemi istemci, sürücü ve sunucu uygulamalarına bölünmüştür. Her uygulama kendi bağlamında çalıştırılabilir ve her birinin sorumluluklarını ve ayrıcalığını azaltır. Konsol alt sistemindeki herhangi bir hata diğer kritik işlem işlevlerini etkilemediğinden, bu yalıtım sistemin genel sağlamlığını artırdı.

Kullanıcı Deneyimi Geliştirmeleri

[2014-2016] Kuruluş genelindeki çeşitli ekipler tarafından konsol alt sisteminin genel olarak dağınık bakımı uzun süre geçtikten sonra, konsolda iyileştirmelere sahip olmak ve geliştirmeleri yönlendirmek için geliştirici odaklı yeni bir ekip oluşturuldu. Bu süre boyunca yapılan geliştirmeler şunları içerir: satır seçimi, düzgün pencere yeniden boyutlandırma, metni yeniden akıtma, kopyalayıp yapıştırma, yüksek DPI desteği ve "batı" ile "doğu" depolama ve akış işleme algoritmaları arasındaki bölmenin yakınsanması da dahil olmak üzere Unicode'a odaklanın.

Sanal Terminal istemcisi

[2015-2017]Linux için Windows Alt Sistemi'nin gelmesi, Microsoft'un Windows'ta Docker deneyimini iyileştirmeye çalışması ve OpenSSH'nin premier komut satırı uzaktan yürütme teknolojisi olarak benimsenmesiyle , sanal terminal dizilerinin ilk uygulamaları konsol konağına eklendi. Bu, mevcut konsolun kendi ortamlarındaki Linux yerel uygulamalarına doğrudan bağlı terminal olarak davranmasına, ekrana grafik ve metin öznitelikleri işlemesine ve uygun diyalektteki kullanıcı girişini döndürmesine olanak sağladı.

Sanal Terminal sunucusu

[2018] Son yirmi yılda, zengin özelleştirmeler ve sekmeli arabirimler açısından belirgin bir şekilde ortalanmış ek geliştirici üretkenliği sunmak için gelen kutusu konsol konağı için üçüncü taraf alternatifler oluşturuldu. Bu uygulamaların konsol ana bilgisayar penceresini çalıştırması ve gizlemesi gerekiyordu. Yoklama döngülerindeki arabellek bilgilerini birincil komut satırı istemci uygulaması olarak kazımak için ikincil bir "istemci" uygulaması olarak eklerler. Amaçları, diğer platformlarda olduğu gibi, ancak terminallerin değiştirilemeyen Windows dünyasında bir terminal olmaktı.

Bu zaman diliminde , psödokonol altyapısı tanıtıldı. Pseudoconsole, herhangi bir uygulamanın konsol ana bilgisayarını etkileşimli olmayan bir modda başlatmasına ve kullanıcının son terminal arabirimi olmasına izin verir. Bu çalışmadaki temel sınırlama, Windows'un tüm diğer platformlarda beklenenle eşleşen yeni bir sunucu barındırma arabirimi sağlarken, süresiz gelecek için yayımlanan tüm Windows Konsolu API'lerine hizmet verirken sürekli uyumluluk vaat etmesiydi: sanal terminal dizileri. Bu nedenle, bu çaba istemci aşamasının yansıtma görüntüsünü gerçekleştirdi: sahte kapsayıcı , temsili bir konak için sanal terminal dizileri olarak ekranda görüntülenecekleri yansıtır ve yanıtları istemci uygulaması kullanımı için Windows biçimli giriş sıralarına yorumlar.

Geleceğe yönelik yol haritası

Terminal uygulamaları

[2019-Now] Bu, konsol alt sisteminin yeni Windows Terminali'ne odaklanan açık kaynak dönemidir. Mayıs 2019'daki Microsoft Build konferansı sırasında duyurulan Windows Terminali, tamamen Microsoft/Terminal'deki GitHub'dadır. Psödokonol için geliştirilmiş platformun üzerine Windows Terminal uygulaması oluşturmak, bu çağın odağı olacak ve doğrudan Windows platformundaki geliştiricilere birinci sınıf bir terminal deneyimi getirecek.

Windows Terminali yalnızca platformu (WinUI arabirim teknolojisi, MSIX paketleme modeli ve C++/WinRT bileşen mimarisi dahil) sergilemeyi değil, aynı zamanda platformun kendisini doğrulamayı da amaçlıyor. Windows Terminali, Windows kuruluşunu geliştiricilerin üretkenliğini artırmaya devam etmek için gerektiğinde uygulama platformunu açmaya ve geliştirmeye yönlendiriyor. Windows Terminali'nin benzersiz güç kullanıcı ve geliştirici gereksinimleri kümesi, bu pazarların Windows'tan gerçekten ihtiyaç duyduğu şeyler için modern Windows platformu gereksinimlerini yönlendirir.

Windows işletim sistemi içinde bu, klasik konsol konağı kullanıcı arabiriminiWindows Terminali, ConPTY ve sanal terminal dizileri yerine varsayılan konumundan kullanımdan kaldırmayı içerir.

Son olarak, bu çağ ister Windows Terminal ürünü ister herhangi bir alternatif terminal olsun, varsayılan deneyim üzerinde tam seçenek sunmayı planlıyor.

İstemci destek kitaplığı

[Gelecek] İstemci tarafında sanal terminal dizilerinin desteği ve belgeleriyle, Windows komut satırı yardımcı programı geliştiricilerinin tüm platformlarla birleşik bir ekosistemin avantajını elde etmek için klasik Windows API'leri üzerinden önce sanal terminal dizilerini kullanmalarını kesinlikle öneririz. Ancak, önemli bir eksik parça, diğer platformların okuma çizgisi ve ncurses gibi grafik ekran gibi girişleri işlemek için çok çeşitli istemci tarafı yardımcı kitaplıklarına sahip olmasıdır. Gelecekteki bu yol haritası öğesi, ekosistemin neler sunduğunun keşfini ve klasik Konsol API'sine göre Windows komut satırı uygulamalarında sanal terminal dizilerinin benimsenmesini nasıl hızlandırabileceğinizi temsil eder.

Sıralı Geçiş

[Gelecek] Sanal terminal istemcisi ve sunucu uygulamalarının birleşimi, istemci komut satırı ve terminal barındırma uygulamalarının tam olarak karıştırılmasına ve eşleşmesine olanak tanır. Bu birleşim, klasik Windows Konsolu API'leriyle veya sanal terminal dizileriyle konuşabilir, ancak bunu klasik uyumlu Windows yöntemine çevirip daha evrensel sanal terminal yöntemine geri döndürmenin bir ek maliyeti vardır.

Pazar, Windows üzerinde sanal terminal dizilerini ve UTF-8'i yeterince benimsedikten sonra konsol konağı dönüştürme/yorumlama işi isteğe bağlı olarak devre dışı bırakılabilir. Konsol konağı daha sonra basit bir API çağrı hizmetleyicisi haline gelir ve cihaz çağrılarından sahte konsol aracılığıyla barındırma uygulamasına geçiş yapar. Bu değişiklik performansı artırır ve istemci uygulaması ile terminal arasında konuşulabilecek dizilerin diyalektini en üst düzeye çıkarır. Bu değişiklik sayesinde ek etkileşim senaryoları etkinleştirilir ve (son olarak) Windows dünyasını komut satırı uygulama alanında diğer tüm platformların ailesi ile uyumlu hale getirir.