Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten dokument jest ogólnym harmonogramem działania produktów Konsoli systemu Windows i terminalu systemu Windows. Obejmuje:
Sposób dopasowania konsoli systemu Windows i terminalu systemu Windows do ekosystemu aplikacji wiersza polecenia w systemie Windows i innych systemach operacyjnych.
Historia i przyszły plan rozwoju produktów, funkcji i strategii, które są częścią tworzenia platformy, a także tworzenia dla tej platformy.
Celem bieżącej ery konsoli/terminalu w firmie Microsoft jest wprowadzenie najwyższej klasy środowiska terminalowego bezpośrednio do deweloperów na platformie Windows i wycofania klasycznych interfejsów API konsoli systemu Windows, zastępując je wirtualnymi sekwencjami terminali korzystającymi z pseudokonsole. W terminalu systemu Windows przedstawiono to przejście do środowiska pierwszej klasy, zapraszając współpracę typu open source ze społeczności deweloperów, obsługując pełne spektrum mieszania i dopasowywania aplikacji wiersza polecenia i terminalu klienta oraz ujednolicenia ekosystemu systemu Windows ze wszystkimi innymi platformami.
Definicje
Zaleca się zapoznanie się z definicjami typowej terminologii używanej w tej przestrzeni przed kontynuowaniem. Typowa terminologia obejmuje: aplikacje wiersza polecenia (lub konsoli),standardowe dojścia (STDIN, STDOUT, STDERR) , urządzenia TTY i PTY, klienci i serwery, podsystem konsoli, host konsoli, pseudokonsole i terminal.
Architektura
Ogólna architektura systemu znajduje się w czterech częściach: klient, urządzenie, serwer i terminal.
Klient
Klient jest aplikacją wiersza polecenia, która używa interfejsu opartego na tekście, aby umożliwić użytkownikowi wprowadzanie poleceń (zamiast interfejsu użytkownika opartego na myszach), zwracając tekstową reprezentację wyniku. W systemie Windows interfejs API konsoli udostępnia warstwę komunikacji między klientem a urządzeniem. (Może to być również standardowy uchwyt konsoli z interfejsami API sterowania urządzeniami).
Urządzenie
Urządzenie jest pośrednią warstwą komunikacji obsługującej komunikaty między dwoma procesami, klientem i serwerem. W systemie Windows jest to sterownik konsoli. Na innych platformach jest to urządzenie TTY lub PTY. Inne urządzenia, takie jak pliki, potoki i gniazda, mogą być używane jako ten kanał komunikacyjny, jeśli cała transakcja jest w postaci zwykłego tekstu lub zawiera wirtualne sekwencje terminali, ale nie w przypadku interfejsów API konsoli systemu Windows.
Server
Serwer interpretuje żądane wywołania interfejsu API lub komunikaty od klienta. W systemie Windows w klasycznym trybie operacyjnym serwer tworzy również interfejs użytkownika do prezentowania danych wyjściowych na ekranie. Serwer dodatkowo zbiera dane wejściowe w celu wysłania z powrotem komunikatów odpowiedzi do klienta za pośrednictwem sterownika, takiego jak terminal dołączony w tym samym module. Tryb pseudokonsole umożliwia jedynie translatorowi przedstawienie tych informacji w wirtualnych sekwencjach terminali do dołączonego terminalu.
Terminal
Terminal jest ostatnią warstwą zapewniającą użytkownikom graficzne usługi wyświetlania i interakcyjności. Jest on odpowiedzialny za przechwytywanie danych wejściowych i kodowanie ich jako sekwencji terminali wirtualnych, które ostatecznie docierają do klienta STDIN. Będzie również odbierać i dekodować sekwencje terminali wirtualnych , które odbiera z powrotem z klienta STDOUT do prezentacji na ekranie.
Dalsze połączenia
Jako dodatek można wykonywać kolejne połączenia przez łączenie aplikacji obsługujących wiele ról w jednym z punktów końcowych. Na przykład sesja SSH ma dwie role: jest to terminal dla aplikacji wiersza polecenia uruchomionej na jednym urządzeniu, ale przekazuje wszystkie odebrane informacje do roli klienta na innym urządzeniu. Ten łańcuch może wystąpić w nieskończoność między urządzeniami i kontekstami, co zapewnia szeroką elastyczność scenariusza.
Na platformach innych niż Windows role serwera i terminalu są pojedynczą jednostką, ponieważ nie ma potrzeby warstwy zgodności tłumaczenia między zestawem interfejsu API i sekwencjami terminali wirtualnych.
Produkty firmy Microsoft
Wszystkie produkty wiersza polecenia systemu Microsoft Windows są teraz dostępne w witrynie GitHub w repozytorium open source microsoft/terminal.
Host konsoli systemu Windows
Jest to tradycyjny interfejs użytkownika systemu Windows dla aplikacji wiersza polecenia. Obsługuje ona całą obsługę interfejsu API konsoli wywoływaną z dowolnej dołączonej aplikacji wiersza polecenia. Konsola systemu Windows obsługuje również graficzną reprezentację interfejsu użytkownika (GUI) w imieniu wszystkich tych aplikacji. Znajduje się on w katalogu systemowym jako conhost.exe, lub openconsole.exe w postaci open source. Jest dostarczany z systemem operacyjnym Windows. Można go również znaleźć w innych produktach firmy Microsoft utworzonych z repozytorium open source, aby uzyskać bardziej up-to— datę implementacji infrastruktury pseudokonsole . Zgodnie z powyższymi definicjami działa w połączonej roli serwera i terminalu tradycyjnie lub tylko na serwerze za pośrednictwem preferowanej infrastruktury pseudokonsole .
Windows Terminal
Jest to nowy interfejs systemu Windows dla aplikacji wiersza polecenia. Terminal systemu Windows służy jako przykład użycia pseudokonsole do oddzielenia problemów między obsługą interfejsu API i interfacingiem aplikacji opartym na tekście, podobnie jak wszystkie platformy inne niż Windows.
Terminal systemu Windows to flagowy interfejs użytkownika trybu tekstowego dla systemu Windows. Demonstruje możliwości ekosystemu i napędza programowanie systemu Windows w kierunku ujednolicenia z innymi platformami. Terminal systemu Windows to również przykład tworzenia niezawodnej i złożonej nowoczesnej aplikacji obejmującej historię i gamę interfejsów API systemu Windows i struktur. Zgodnie z powyższymi definicjami ten produkt działa w roli terminalu.
Główne historyczne kamienie milowe
Główne historyczne kamienie milowe dla podsystemu konsoli są podzielone na implementację przed 2014 r., a następnie przechodzą do przeglądu pracy wykonanej od 2014 r., kiedy odnowiony nacisk na wiersz polecenia został utworzony w erze systemu Windows 10.
Początkowa implementacja
[1989-1990s] Początkowy system hosta konsoli został zaimplementowany jako emulacja środowiska DOS w systemie operacyjnym Windows. Jego kod jest splątane i współdziała z wierszem polecenia , cmd.execzyli reprezentacją tego środowiska DOS. Kod systemu hosta konsoli współdzieli obowiązki i uprawnienia z interpreterem/powłoką wiersza polecenia. Zapewnia również podstawowy poziom usług dla innych narzędzi wiersza polecenia do wykonywania usług w sposób podobny do cmD.
DBCS for CJK
[1997-1999] Obecnie obsługa DBCS ("Zestaw znaków dwubajtowych") jest wprowadzana do obsługi CJK (chiński, japoński i koreański). Ten wysiłek powoduje rozwścieczenia wielu metod zapisu i czytania wewnątrz konsoli, aby zapewnić zarówno "zachodnie" wersje do obsługi znaków jednobajtowych, jak również alternatywną reprezentację dla "wschodnich" wersji, w których dwa bajty są wymagane do reprezentowania ogromnej tablicy znaków. Ta rozwikłanie obejmowało rozszerzającą reprezentację komórki w środowisku konsoli jako 1 lub 2 komórki szerokie, gdzie 1 komórka jest wąska (wyższa niż jest szeroka), a 2 komórki są szerokie, pełnej szerokości lub w przeciwnym razie kwadrat, w którym można zapisać typowe chińskie, japońskie i koreańskie ideografy.
Zabezpieczenia/izolacja
[2005-2009] W przypadku podsystemu konsoli działającego wewnątrz krytycznego procesu systemowego, łączenie assortowanych aplikacji klienckich, na różnych poziomach dostępu, do pojedynczego procesu csrss.exesuperkrytycznego i uprzywilejowanego zostało zauważone jako szczególnie niebezpieczne. W tej erze podsystem konsoli został podzielony na aplikacje klienta, sterownika i serwera. Każda aplikacja może działać we własnym kontekście, zmniejszając obowiązki i uprawnienia w każdym z nich. Ta izolacja zwiększyła ogólną niezawodność systemu, ponieważ awaria podsystemu konsoli nie miała już wpływu na inne krytyczne funkcje procesu.
Ulepszenia środowiska użytkownika
[2014-2016] Po długim czasie ogólnej rozproszonej konserwacji podsystemu konsoli przez zespoły rozdzielone w całej organizacji, nowy zespół skoncentrowany na deweloperach został utworzony w celu posiadania ulepszeń w konsoli. Ulepszenia w tym czasie obejmują: wybór wiersza, płynne zmienianie rozmiaru okna, zmiana rozmiaru tekstu, kopiowanie i wklejanie, obsługa wysokiej rozdzielczości DPI i skupienie się na unicode, w tym zbieżność podziału między algorytmami "western" i "eastern" magazynu i manipulowania strumieniem.
Klient terminalu wirtualnego
[2015-2017] Wraz z nadejściem podsystemu Windows dla systemu Linux firma Microsoft stara się ulepszyć środowisko platformy Docker w systemie Windows oraz wdrożenie protokołu OpenSSH jako najwyższej technologii zdalnego wykonywania wiersza polecenia, początkowe implementacje sekwencji terminali wirtualnych zostały wprowadzone na hoście konsoli. Dzięki temu istniejąca konsola będzie działać jako terminal, dołączona bezpośrednio do tych aplikacji natywnych dla systemu Linux w odpowiednich środowiskach, renderowania atrybutów graficznych i tekstowych do wyświetlania i zwracania danych wejściowych użytkownika w odpowiednim dialektze.
Serwer terminalu wirtualnego
[2018] W ciągu ostatnich dwudziestu lat utworzono alternatywy innych firm dla hosta konsoli skrzynki odbiorczej w celu zaoferowania dodatkowej produktywności deweloperów, wyśrodkowanych w rozbudowanych dostosowaniach i interfejsach z kartami. Te aplikacje nadal potrzebne do uruchomienia i ukrycia okna hosta konsoli. Dołączają jako pomocniczą aplikację "klienta", aby usunąć informacje buforu w pętlach sondowania jako podstawowa aplikacja kliencka wiersza polecenia. Ich celem było być terminal, podobnie jak na innych platformach, ale w świecie Systemu Windows, gdzie terminale nie były zastępowalne.
W tym okresie wprowadzono infrastrukturę pseudokonsole . Pseudokonsole zezwala dowolnej aplikacji na uruchamianie hosta konsoli w trybie nieinterakcyjnym i staje się ostatnim interfejsem terminalu dla użytkownika. Głównym ograniczeniem w tym wysiłku była ciągła obietnica zgodności systemu Windows w obsłudze wszystkich opublikowanych interfejsów API konsoli systemu Windows na czas nieokreślony, zapewniając jednocześnie zastępczy interfejs hostingu serwera, który był zgodny z oczekiwaniami na wszystkich innych platformach: sekwencje terminali wirtualnych. W związku z tym ten wysiłek wykonał dublowanie obrazu fazy klienta: pseudokonsole projekty wyświetlane na ekranie jako wirtualne sekwencje terminalowe dla delegowanego hosta i interpretuje odpowiedzi w sekwencjach wejściowych w formacie systemu Windows na potrzeby użycia aplikacji klienckiej.
Harmonogram działania na przyszłość
Aplikacje terminalowe
[2019-Now] Jest to era open source podsystemu konsoli, koncentrując się na nowym terminalu systemu Windows. Ogłoszona podczas konferencji Microsoft Build w maju 2019 r. terminal systemu Windows jest całkowicie w witrynie GitHub w witrynie microsoft/terminalu. Kompilowanie aplikacji terminalu systemu Windows na wyrafinowanej platformie pseudokonsole będzie przedmiotem tej epoki, przynosząc najwyższej klasy środowisko terminalowe bezpośrednio deweloperom na platformie Windows.
Terminal systemu Windows zamierza nie tylko zaprezentować platformę — w tym technologię interfejsu WinUI , model pakowania MSIX i architekturę składników C++/WinRT — ale także jako weryfikację samej platformy. Terminal systemu Windows umożliwia organizacji systemu Windows otwieranie i rozwijanie platformy aplikacji w miarę potrzeby w celu dalszego zwiększania produktywności deweloperów. Unikatowy zestaw wymagań użytkownika i dewelopera w terminalu systemu Windows jest przeznaczony dla nowoczesnych wymagań platformy Windows dotyczących tego, czego naprawdę potrzebują te rynki z systemu Windows.
Wewnątrz systemu operacyjnego Windows obejmuje to wycofanie klasycznego interfejsu użytkownika hosta konsoli z domyślnej pozycji na rzecz terminalu systemu Windows, ConPTY i sekwencji terminali wirtualnych.
Wreszcie, ta era zamierza zaoferować pełny wybór w środowisku domyślnym, niezależnie od tego, czy jest to produkt terminalu systemu Windows, czy jakiekolwiek alternatywne terminale.
Biblioteka obsługi klienta
[Przyszłość] Dzięki obsłudze i dokumentacji sekwencji terminali wirtualnych po stronie klienta zdecydowanie zachęcamy deweloperów narzędzi wiersza polecenia systemu Windows do korzystania z sekwencji terminali wirtualnych przede wszystkim w klasycznych interfejsach API systemu Windows, aby uzyskać korzyści z ujednoliconego ekosystemu ze wszystkimi platformami. Jednak jednym znaczącym brakującym elementem jest to, że inne platformy mają szeroką gamę bibliotek pomocnika po stronie klienta do obsługi danych wejściowych, takich jak readline i wyświetlanie graficzne, takie jak ncurses. Ten konkretny przyszły element mapy drogowej reprezentuje eksplorację tego, co oferuje ekosystem i jak możemy przyspieszyć wdrażanie sekwencji terminali wirtualnych w aplikacjach wiersza polecenia systemu Windows za pośrednictwem klasycznego interfejsu API konsoli.
Przekazywanie sekwencji
[Przyszłość] Kombinacja implementacji klienta i serwera terminalu wirtualnego umożliwia pełne mieszanie i dopasowywanie wiersza polecenia klienta i aplikacji hostingu terminalu. Ta kombinacja może mówić do klasycznych interfejsów API konsoli systemu Windows lub sekwencji terminali wirtualnych, jednak istnieje koszt narzut na tłumaczenie tego na klasyczną zgodną metodę systemu Windows, a następnie z powrotem do bardziej uniwersalnej metody terminalu wirtualnego.
Gdy rynek wystarczająco przyjmie wirtualne sekwencje terminali i UTF-8 w systemie Windows, zadanie konwersji/interpretacji hosta konsoli można opcjonalnie wyłączyć. Następnie host konsoli stanie się prostą usługą wywołania interfejsu API i przekaźnikiem z wywołań urządzenia do aplikacji hostingu za pośrednictwem pseudokonsole. Ta zmiana zwiększy wydajność i zmaksymalizuje dialekt sekwencji, które można mówić między aplikacją kliencka a terminalem. Dzięki tej zmianie zostaną włączone dodatkowe scenariusze interakcyjności, a (wreszcie) dostosowywały świat systemu Windows do rodziny wszystkich innych platform w przestrzeni aplikacji wiersza polecenia.