Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo documento è una roadmap generale dei prodotti Console di Windows e Terminale Windows. Si tratta di:
In che modo la console di Windows e il terminale Windows rientrano nell'ecosistema di applicazioni da riga di comando in Windows e in altri sistemi operativi.
Una roadmap storica e futura dei prodotti, delle funzionalità e delle strategie che fanno parte della creazione della piattaforma, nonché della creazione di questa piattaforma.
L'obiettivo dell'era della console o del terminale corrente in Microsoft è quello di offrire agli sviluppatori un'esperienza terminale di prima classe direttamente agli sviluppatori della piattaforma Windows e di eliminare gradualmente le API classiche della console di Windows, sostituendole con sequenze di terminale virtuali che usano pseudoconsole. Terminale Windows presenta questa transizione in un'esperienza di prima classe, invitando la collaborazione open source dalla community degli sviluppatori, supportando un'ampia gamma di combinazioni e corrispondenza delle applicazioni della riga di comando client e dell'hosting di terminale e unificando l'ecosistema Windows con tutte le altre piattaforme.
Definizioni
È consigliabile acquisire familiarità con le definizioni della terminologia comune usata in questo spazio prima di procedere. La terminologia comune include: applicazioni della riga di comando (o console),handle standard (STDIN, STDOUT, STDERR) , dispositivi TTY e PTY, client e server, sottosistema della console, host console, pseudoconsole e terminale.
Architettura
L'architettura generale del sistema è in quattro parti: client, dispositivo, server e terminale.
Cliente
Il client è un'applicazione da riga di comando che usa un'interfaccia basata su testo per consentire all'utente di immettere comandi (anziché un'interfaccia utente basata sul mouse), restituendo una rappresentazione testuale del risultato. In Windows, l'API console fornisce un livello di comunicazione tra il client e il dispositivo. Può trattarsi anche di un handle della console standard con le API di controllo del dispositivo.
Dispositivo
Il dispositivo è un livello intermedio di comunicazione di gestione dei messaggi tra due processi, il client e il server. In Windows questo è il driver della console. In altre piattaforme, si tratta del dispositivo TTY o PTY. Altri dispositivi come file, pipe e socket possono essere usati come questo canale di comunicazione se l'intera transazione è in testo normale o contiene sequenze di terminale virtuale, ma non con le API della console di Windows.
Servidor
Il server interpreta le chiamate o i messaggi dell'API richiesti dal client. In Windows nella modalità operativa classica, il server crea anche un'interfaccia utente per presentare l'output allo schermo. Il server raccoglie inoltre l'input per inviare nuovamente i messaggi di risposta al client, tramite il driver, come un terminale in bundle nello stesso modulo. Usando la modalità pseudoconsole , è invece solo un traduttore per presentare queste informazioni nelle sequenze di terminale virtuale a un terminale collegato.
Terminale
Il terminale è il livello finale che fornisce servizi grafici di visualizzazione e interattività all'utente. È responsabile dell'acquisizione dell'input e della codifica come sequenze di terminale virtuale, che alla fine raggiungono il client.STDIN Riceverà e decodifica anche le sequenze di terminale virtuale ricevute dal client STDOUT per la presentazione sullo schermo.
Ulteriori connessioni
Come addendum, è possibile eseguire altre connessioni concatenando le applicazioni che gestiscono più ruoli in uno degli endpoint. Ad esempio, una sessione SSH ha due ruoli: si tratta di un terminale per l'applicazione della riga di comando in esecuzione in un dispositivo, ma inoltra tutte le informazioni ricevute a un ruolo client in un altro dispositivo. Questo concatenamento può verificarsi a tempo indefinito tra dispositivi e contesti che offrono ampia flessibilità nello scenario.
Nelle piattaforme non Windows, i ruoli del server e del terminale sono una singola unità perché non è necessario un livello di compatibilità di conversione tra un set di API e le sequenze di terminale virtuale.
Prodotti Microsoft
Tutti i prodotti della riga di comando di Microsoft Windows sono ora disponibili in GitHub in un repository open source , microsoft/terminal.
Windows Console Host
Si tratta dell'interfaccia utente di Windows tradizionale per le applicazioni da riga di comando. Gestisce tutta la manutenzione dell'API della console chiamata da qualsiasi applicazione della riga di comando collegata. La console di Windows gestisce anche la rappresentazione grafica dell'interfaccia utente (GUI) per conto di tutte le applicazioni. Si trova nella directory di sistema come conhost.exeo openconsole.exe nel formato open source. Viene fornito con il sistema operativo Windows. È disponibile anche in altri prodotti Microsoft creati dal repository open source per un'implementazione più up-to-date dell'infrastruttura pseudoconsole . In base alle definizioni precedenti, opera in un ruolo combinato server e terminale tradizionalmente o in un ruolo solo server tramite l'infrastruttura pseudoconsole preferita.
Terminale Windows
Questa è la nuova interfaccia di Windows per le applicazioni da riga di comando. Terminale Windows funge da esempio di primo piano dell'uso della pseudoconsole per separare le preoccupazioni tra la manutenzione dell'API e l'interfaccia dell'applicazione basata su testo, molto simile a tutte le piattaforme non Windows.
Terminale Windows è l'interfaccia utente in modalità testo principale per Windows. Illustra le funzionalità dell'ecosistema e sta guidando lo sviluppo di Windows verso l'unificazione con altre piattaforme. Terminale Windows è anche un esempio di come creare un'applicazione moderna solida e complessa che si estende sulla cronologia e sulla gamma di API e framework Windows. In base alle definizioni precedenti, questo prodotto opera in un ruolo terminale.
Principali cardine storiche
Le principali attività cardine cronologiche per il sottosistema della console vengono suddivise nell'implementazione prima del 2014 e quindi si spostano in una panoramica del lavoro eseguito dal 2014, quando il rinnovato focus sulla riga di comando è stato formato nell'era di Windows 10.
Implementazione iniziale
[1989-1990s] Il sistema host della console iniziale è stato implementato come emulazione dell'ambiente DOS all'interno del sistema operativo Windows. Il codice è entangled e cooperativo con il prompt dei comandi, cmd.exe, che è una rappresentazione dell'ambiente DOS. Il codice di sistema host della console condivide responsabilità e privilegi con l'interprete/shell del prompt dei comandi. Fornisce anche un livello di base di servizi per altre utilità della riga di comando per eseguire servizi in modo simile a CMD.
DBCS per CJK
[1997-1999] In questo periodo, il supporto DBCS ("Set di caratteri a byte doppio") è stato introdotto per supportare i mercati CJK (cinese, giapponese e coreano). Questo sforzo comporta una biforcazione di molti dei metodi di scrittura e lettura all'interno della console per fornire entrambe le versioni "occidentali" per gestire i caratteri a byte singolo, nonché una rappresentazione alternativa per le versioni "orientali" in cui sono necessari due byte per rappresentare la vasta matrice di caratteri. Questa biforcazione includeva la rappresentazione espansa di una cella nell'ambiente console per avere una larghezza di 1 o 2 celle, dove 1 cella è stretta (più alta di quella larga) e 2 celle è larga, a larghezza intera o in caso contrario un quadrato in cui è possibile inscrivere i tipici ideogrammi cinesi, giapponesi e coreani.
Sicurezza/isolamento
[2005-2009] Con l'esperienza del sottosistema della console in esecuzione all'interno del processo di sistema critico, csrss.exe, la connessione di applicazioni client diverse, a diversi livelli di accesso, a un singolo processo supercritico e con privilegi è stato notato come particolarmente pericoloso. In questa era, il sottosistema della console è stato suddiviso in applicazioni client, driver e server. Ogni applicazione può essere eseguita nel proprio contesto, riducendo le responsabilità e i privilegi in ognuno di essi. Questo isolamento ha aumentato l'affidabilità generale del sistema, perché qualsiasi errore nel sottosistema della console non ha più interessato altre funzionalità critiche del processo.
Miglioramenti dell'esperienza utente
[2014-2016] Dopo un lungo periodo di manutenzione generale del sottosistema console da parte di team diversi nell'organizzazione, un nuovo team incentrato sullo sviluppatore è stato formato per possedere e promuovere miglioramenti nella console. Sono stati apportati miglioramenti durante questo periodo: selezione di righe, ridimensionamento uniforme delle finestre, testo di rielaborazione, copia e incolla, supporto dpi elevato e attenzione a Unicode, inclusa la convergenza della divisione tra gli algoritmi di archiviazione "western" e "orientale" e manipolazione del flusso.
Client terminale virtuale
[2015-2017] Con l'arrivo del sottosistema Windows per Linux, Microsoft si impegna a migliorare l'esperienza di Docker in Windows e l'adozione di OpenSSH come tecnologia di esecuzione remota della riga di comando premier, le implementazioni iniziali delle sequenze di terminale virtuale sono state introdotte nell'host della console. Ciò ha permesso alla console esistente di fungere da terminale, collegato direttamente a tali applicazioni native linux nei rispettivi ambienti, di rendering degli attributi grafici e di testo per la visualizzazione e la restituzione dell'input dell'utente nel dialetto appropriato.
Server terminal virtuale
[2018] Negli ultimi vent'anni, sono state create alternative di terze parti per l'host della console posta in arrivo per offrire maggiore produttività per gli sviluppatori, centrate in modo importante in personalizzazioni avanzate e interfacce a schede. Queste applicazioni erano ancora necessarie per eseguire e nascondere la finestra host della console. Si collegano come applicazione "client" secondaria per smanchiare le informazioni sul buffer nei cicli di polling come applicazione client della riga di comando primaria gestita. Il loro obiettivo era quello di essere un terminale, come in altre piattaforme, ma nel mondo Windows in cui i terminali non erano sostituibili.
In questo periodo di tempo è stata introdotta l'infrastruttura pseudoconsole . La pseudoconsole consente a qualsiasi applicazione di avviare l'host della console in modalità non interattiva e di diventare l'interfaccia finale del terminale per l'utente. La limitazione principale di questo sforzo è stata la continua promessa di compatibilità di Windows nella manutenzione di tutte le API della console di Windows pubblicate per il futuro indefinito, fornendo al tempo stesso un'interfaccia di hosting del server sostitutivo che corrisponde a ciò che è previsto in tutte le altre piattaforme: sequenze di terminale virtuale. Di conseguenza, questa operazione ha eseguito l'immagine mirror della fase client: la pseudoconsole proietta ciò che verrebbe visualizzato sullo schermo come sequenze di terminale virtuale per un host delegato e interpreta le risposte in sequenze di input in formato Windows per l'utilizzo dell'applicazione client.
Roadmap per il futuro
Applicazioni terminal
[2019-Now] Questa è l'era open source per il sottosistema console, concentrandosi sul nuovo terminale Windows. Annunciato durante la conferenza di Microsoft Build nel maggio 2019, Terminale Windows è interamente su GitHub in microsoft/terminal. La creazione dell'applicazione Terminale Windows sopra la piattaforma raffinata per pseudoconsole sarà l'obiettivo di questa era, portando direttamente agli sviluppatori una nuova esperienza terminale sulla piattaforma Windows.
Terminale Windows intende non solo presentare la piattaforma, inclusa la tecnologia di interfaccia WinUI , il modello di creazione di pacchetti MSIX e l'architettura dei componenti C++/WinRT , ma anche come convalida della piattaforma stessa. Terminale Windows sta guidando l'organizzazione di Windows ad aprire ed evolvere la piattaforma delle app in base alle esigenze per continuare a aumentare la produttività degli sviluppatori. Il terminale Windows è un set univoco di requisiti per utenti e sviluppatori che determinano i requisiti moderni della piattaforma Windows per ciò che questi mercati hanno veramente bisogno da Windows.
All'interno del sistema operativo Windows, ciò include il ritiro dell'interfaccia utente dell'host della console classica dalla posizione predefinita a favore delle sequenze di terminale Windows, ConPTY e del terminale virtuale.
Infine, questa era intende offrire la scelta completa rispetto all'esperienza predefinita, sia che si tratti del prodotto Terminale Windows o di qualsiasi terminale alternativo.
Libreria di supporto client
[Futuro] Con il supporto e la documentazione delle sequenze di terminale virtuale sul lato client, è consigliabile che gli sviluppatori di utilità della riga di comando di Windows usino prima le sequenze di terminale virtuali sulle API di Windows classiche per ottenere il vantaggio di un ecosistema unificato con tutte le piattaforme. Tuttavia, una parte mancante significativa è che altre piattaforme hanno un'ampia gamma di librerie helper lato client per la gestione dell'input come readline e visualizzazione grafica come ncurses. Questo particolare elemento della roadmap futura rappresenta l'esplorazione di ciò che offre l'ecosistema e come è possibile accelerare l'adozione di sequenze di terminale virtuali nelle applicazioni della riga di comando di Windows tramite l'API console classica.
Pass-through sequenza
[Futuro] La combinazione di implementazioni client e server del terminale virtuale consente la combinazione completa e la corrispondenza delle applicazioni di hosting della riga di comando client e del terminale. Questa combinazione può parlare con le API della console di Windows classica o le sequenze di terminale virtuale, tuttavia, c'è un costo di sovraccarico per tradurre questo valore nel metodo windows compatibile classico e quindi tornare al metodo terminale virtuale più universale.
Una volta che il mercato adotta sufficientemente sequenze di terminale virtuali e UTF-8 in Windows, il processo di conversione/interpretazione dell'host della console può essere disabilitato facoltativamente. L'host della console diventerà quindi un semplice servizio di chiamata API e l'inoltro dalle chiamate di dispositivo all'applicazione host tramite la pseudoconsole. Questa modifica aumenterà le prestazioni e ingrandisce il dialetto delle sequenze che possono essere pronunciate tra l'applicazione client e il terminale. Grazie a questa modifica, gli scenari di interattività aggiuntivi sarebbero abilitati e (infine) portare il mondo Windows in allineamento con la famiglia di tutte le altre piattaforme nello spazio dell'applicazione della riga di comando.