Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a dokumentum a Windows Konzol és a Windows Terminál termékek magas szintű ütemterve. A következőket tartalmazza:
Hogyan illeszkedik a Windows Konzol és a Windows Terminál a parancssori alkalmazások ökoszisztémájába a Windows és más operációs rendszerek között.
A platform létrehozásának részét képező termékek, funkciók és stratégiák előzményei és jövőbeli ütemterve, valamint a platform létrehozása.
A Microsoft jelenlegi konzol- és terminálkorszakának középpontjában az áll, hogy közvetlenül a Windows platform fejlesztőinek hozza létre az első osztályú terminálélményt, és a klasszikus Windows Konzol API-k kivezetése, azokat pszeudokonzolt használó virtuális terminálütemezésekre cserélve. A Windows Terminal ezt az átmenetet egy első osztályú felületté mutatja be, meghívva a fejlesztői közösség nyílt forráskódú együttműködését , támogatva az ügyfél parancssori és terminálüzemeltetési alkalmazások keverésének és egyeztetésének teljes spektrumát, valamint a Windows ökoszisztémájának egységesítését az összes többi platformmal.
Meghatározások
Javasoljuk, hogy a folytatás előtt ismerkedjen meg az ebben a térben használt általános terminológia definícióival . A gyakori terminológia a következőkre vonatkozik: parancssori (vagy konzolos) alkalmazások, standard leírók (STDIN, STDOUT, ) STDERR, TTY- és PTY-eszközök, ügyfelek és kiszolgálók, konzolalrendszer, konzol gazdagép, pszeudokonzol és terminál.
Építészet
A rendszer általános architektúrája négy részből áll: ügyfél, eszköz, kiszolgáló és terminál.
Ügyfél
Az ügyfél egy parancssori alkalmazás, amely egy szövegalapú felületet használ, amellyel a felhasználó parancsokat adhat meg (egéralapú felhasználói felület helyett), és visszaadja az eredmény szöveges ábrázolását. Windows rendszeren a Console API kommunikációs réteget biztosít az ügyfél és az eszköz között. (Ez lehet egy szabványos konzolfogantyú is eszközvezérlési API-kkal).
Eszköz
Az eszköz egy köztes üzenetkezelő kommunikációs réteg két folyamat, az ügyfél és a kiszolgáló között. Windows rendszeren ez a konzolillesztő. Más platformokon ez a TTY- vagy PTY-eszköz. Más eszközök, például fájlok, csövek és szoftvercsatornák akkor használhatók kommunikációs csatornaként, ha a teljes tranzakció egyszerű szöveges vagy virtuális terminálütemezéseket tartalmaz, a Windows Console API-kkal azonban nem.
Szerver
A kiszolgáló értelmezi az ügyféltől kért API-hívásokat vagy üzeneteket. Windows rendszeren a klasszikus működési módban a kiszolgáló létrehoz egy felhasználói felületet is, amely megjeleníti a kimenetet a képernyőn. A kiszolgáló emellett adatokat gyűjt, hogy válaszüzeneteket küldjön vissza az ügyfélnek az illesztőprogramon keresztül, például egy ugyanazon modulba csomagolt terminálon keresztül. A pszeudokonzol mód használata helyett csak egy fordító jeleníti meg ezeket az információkat virtuális terminálsorozatokban egy csatolt terminálon.
Terminál
A terminál az utolsó réteg, amely grafikus megjelenítési és interaktivitási szolgáltatásokat biztosít a felhasználó számára. Feladata a bemenet rögzítése és kódolása virtuális terminálütemezésekként, amelyek végül elérik az ügyfél STDIN. Emellett megkapja és dekódolja azokat a virtuális terminálütemezéseket is, amelyeket az ügyféltől STDOUT kap vissza a képernyőn való megjelenítéshez.
További kapcsolatok
Bővítményként további kapcsolatokat is végrehajthat, ha több szerepkört kiszolgáló alkalmazásokat láncolt az egyik végpontba. Egy SSH-munkamenetnek például két szerepköre van: az egyik eszközön futó parancssori alkalmazás terminálja, de az összes kapott információt egy másik eszközön lévő ügyfélszerepkörnek továbbítja. Ez a láncolás korlátlan ideig történhet az eszközök és környezetek között, és széles körű rugalmasságot biztosít a forgatókönyvekben.
A nem Windows-platformokon a kiszolgálói és a terminálszerepkörök egyetlen egységet alkotnak, mivel nincs szükség fordítási kompatibilitási rétegre az API-csoportok és a virtuális terminálütemezések között.
Microsoft-termékek
A Microsoft Windows összes parancssori terméke elérhető a GitHubon egy nyílt forráskódú adattárban, a Microsoft/Terminálban.
Windows-konzol gazdagépe
Ez a parancssori alkalmazások hagyományos Windows felhasználói felülete. Kezeli az összes csatlakoztatott parancssori alkalmazásból hívott konzol API-karbantartási elemet. A Windows Console az összes alkalmazás nevében kezeli a grafikus felhasználói felület (GUI) megjelenítését is. A rendszerkönyvtárban conhost.exeopenconsole.exe vagy a nyílt forráskódú formában található. A Windows operációs rendszer része. Más Microsoft-termékekben is megtalálható, amelyeket a nyílt forráskódú adattárból készítettek a pszeudokonzolinfrastruktúra up-to-dátumosabb implementációjához. A fenti definíciók szerint hagyományosan kombinált kiszolgáló- és terminálszerepkörben, vagy csak kiszolgálói szerepkörben működik az előnyben részesített pszeudokole infrastruktúrán keresztül.
Windows Terminál
Ez az új Windows-felület parancssori alkalmazásokhoz. A Windows Terminal első féltől származó példaként szolgál arra, hogy a pszeudokonzol használatával elkülöníti az API-karbantartás és a szövegalapú alkalmazások közötti problémákat, hasonlóan az összes nem Windows-platformhoz.
A Windows Terminál a Windows zászlóshajó szöveges módú felhasználói felülete. Bemutatja az ökoszisztéma képességeit, és a Windows fejlesztését a más platformokkal való egységesítés felé fokozza. A Windows Terminal egy olyan robusztus és összetett modern alkalmazás készítésére is példa, amely a Windows API-k és keretrendszerek előzményeit és skáláját fedi le. A fenti definíciók szerint ez a termék terminálszerepkörben működik.
Főbb történelmi mérföldkövek
A konzolalrendszer főbb történelmi mérföldkövei 2014 előtt implementációra vannak bontva, majd átkerülnek a 2014 óta elvégzett munka áttekintésébe, amikor a parancssorra összpontosító megújult fókusz a Windows 10-ben alakult ki.
Kezdeti megvalósítás
[1989-1990-ben] A kezdeti konzolgazdarendszer a DoS-környezet emulációjaként lett implementálva a Windows operációs rendszeren belül. A kód össze van fonva és együttműködik a parancssorral, cmd.exeamely az adott DOS-környezet reprezentációja. A konzol gazdarendszerkódja a parancssori értelmezővel/rendszerhéjjal osztja meg a feladatokat és a jogosultságokat. Emellett alapszintű szolgáltatásokat is biztosít más parancssori segédprogramok számára a szolgáltatások CMD-hez hasonló módon történő végrehajtásához.
DBCS a CJK-hoz
[1997-1999] Ez idő tájt a DBCS támogatása ("kétbájtos karakterkészlet") a CJK (kínai, japán és koreai) piacok támogatásához vezet be. Ez az erőfeszítés számos írási és olvasási módszernek a konzolon belüli elágazását eredményezi, hogy mindkét "nyugati" verzió egybájtos karakterekkel foglalkozzon, valamint alternatív megjelenítést a "keleti" verziókhoz, ahol két bájt szükséges a karakterek hatalmas tömbjének megjelenítéséhez. Ez az elágaztatás magában foglalta a konzolkörnyezet egy cellájának 1 vagy 2 cella szélesre való kibontását, ahol 1 cella keskeny (magasabb, mint széles), és 2 cella széles, teljes szélességű, vagy máskülönben egy négyzet, amelyben tipikus kínai, japán és koreai ideográfok írhatók.
Biztonság/elkülönítés
[2005-2009] A konzolalrendszer kritikus rendszerfolyamaton csrss.exebelüli futtatásával, a válogatott ügyfélalkalmazások különböző hozzáférési szinteken való összekapcsolásával egy szuperkritikus és kiemelt folyamat különösen veszélyesnek tűnt. Ebben a korszakban a konzolalrendszert ügyfél-, illesztőprogram- és kiszolgálóalkalmazásokra osztották. Minden alkalmazás a saját környezetében futtatható, így mindegyikben csökken a felelősség és a jogosultság. Ez az elkülönítés növelte a rendszer általános robusztusságát, mivel a konzolalrendszer meghibásodása már nem befolyásolta a többi kritikus folyamat működését.
Felhasználói élmény fejlesztései
[2014–2016] Miután a konzolalrendszer hosszú ideig általánosan elszórtan karbantartotta a konzolalrendszert a szervezet különböző csapatai által, egy új, fejlesztőközpontú csapatot alakítottak ki, amely a konzol fejlesztéseit birtokolja és fejleszti. Ebben az időszakban fejlesztések történtek: sorkiválasztás, zökkenőmentes ablak átméretezés, szöveg újrafolytatása, másolás és beillesztés, magas DPI-támogatás, valamint a Unicode-ra való összpontosítás, beleértve a "nyugati" és a "keleti" tárolási és streammanipulációs algoritmusok közötti felosztás konvergenciáját.
Virtuális terminálügyfél
[2015-2017] A Linux windowsos alrendszerének érkezésével a Microsoft erőfeszítéseket tett a Docker windowsos felhasználói élményének javítására, és az OpenSSH mint első számú parancssori távoli végrehajtási technológia bevezetésére, a virtuális terminálütemezések kezdeti implementációit bevezették a konzol gazdagépére. Ez lehetővé tette, hogy a meglévő konzol terminálként működjön, közvetlenül azokhoz a Linux-natív alkalmazásokhoz csatlakozva a megfelelő környezetben, grafikus és szöveges attribútumokat jelenítve meg a megjelenítéshez, és a megfelelő dialektusban adja vissza a felhasználói bemenetet.
Virtuális terminálkiszolgáló
[2018] Az elmúlt húsz évben külső gyártóktól származó alternatív megoldásokat hoztak létre a beérkezett üzeneteket tároló konzol gazdagépéhez, hogy további fejlesztői hatékonyságot nyújtsanak, kiemelten a gazdag testreszabások és a többlapos felületek terén. Ezek az alkalmazások továbbra is a konzol gazdagépablakának futtatásához és elrejtéséhez szükségesek. Másodlagos "ügyfél" alkalmazásként csatolják a pufferadatokat a lekérdezési ciklusokban az elsődleges parancssori ügyfélalkalmazás működése során. A céljuk az volt, hogy terminálok legyenek, mint más platformokon, de a Windows-világban, ahol a terminálok nem cserélhetők le.
Ebben az időszakban bevezették a pseudoconsole infrastruktúrát. A Pseudoconsole lehetővé teszi, hogy bármely alkalmazás nem interaktív módban indítsa el a konzol gazdagépét, és a felhasználó végső terminálfelületévé váljon. Ennek fő korlátozása a Windows folyamatos kompatibilitási ígérete volt, amely az összes közzétett Windows Console API-t a határozatlan időre kiszolgálja, miközben egy olyan helyettesítő kiszolgáló-üzemeltetési felületet biztosított, amely megfelelt az összes többi platformon elvártnak: a virtuális terminálütemezéseknek. Ezért ez az erőfeszítés az ügyfélfázis tükrözött képét hajtotta végre: a pszeudokonzol a delegált gazdagép virtuális terminálütemezéseként jeleníti meg a képernyőn megjelenő adatokat, és a válaszokat Windows formátumú bemeneti sorozatokba értelmezi az ügyfélalkalmazás-használat érdekében.
Ütemterv a jövőre vonatkozóan
Terminálalkalmazások
[2019-Now] Ez a konzolalrendszer nyílt forráskódú korszaka, amely az új Windows Terminálra összpontosít. A Microsoft Build 2019. májusi konferenciáján bejelentett Windows Terminal teljes mértékben a GitHubon található a Microsoft/Terminálon. Ebben a korszakban a pszeudokonzol pontosított platformjára építi a Windows terminálalkalmazást, amely közvetlenül a Windows platform fejlesztőinek nyújt első osztályú terminálélményt.
A Windows Terminal nemcsak a platformot kívánja bemutatni – beleértve a WinUI interfésztechnológiát, az MSIX csomagolási modellt és a C++/WinRT összetevő architektúrát –, hanem magát a platformot is érvényesíti. A Windows Terminal arra kéri a Windows-szervezetet, hogy szükség szerint nyissa meg és fejlesshesse az alkalmazásplatformot a fejlesztők termelékenységének növelése érdekében. A Windows Terminál egyedi energiafelhasználói és fejlesztői követelményei a Windows-platformok modern követelményeit támasztják ahhoz, amire ezek a piacok valóban szüksége vannak a Windowsból.
A Windows operációs rendszeren belül ez magában foglalja a klasszikus konzol gazdagép felhasználói felületének kivonását az alapértelmezett pozícióból a Windows Terminal, a ConPTY és a virtuális terminálsorozatok javára.
Végül, ez a korszak teljes választékot kíván kínálni az alapértelmezett felületen, függetlenül attól, hogy a Windows Terminál termékről vagy bármely alternatív terminálról van szó.
Ügyféltámogatási kódtár
[Jövő] Az ügyféloldali virtuális terminálütemezések támogatásával és dokumentációjával határozottan arra ösztönözzük a Windows parancssori segédprogram-fejlesztőit, hogy először a klasszikus Windows API-kon keresztül használják a virtuális terminálütemezéseket, hogy minden platformmal egységes ökoszisztémát használjanak. Az egyik jelentős hiányzó elem azonban az, hogy más platformok ügyféloldali segédkódtárak széles skáláját használják a bemenetek, például az olvasási vonal és a grafikus megjelenítés, például a ncurses kezelésére. Ez a konkrét jövőbeli ütemtervelem azt mutatja be, hogy mit kínál az ökoszisztéma, és hogyan gyorsíthatjuk fel a virtuális terminálütemezések bevezetését a Windows parancssori alkalmazásaiban a klasszikus Console API-n keresztül.
Sorozat átengedés
[Jövő] A virtuális terminál ügyfél- és kiszolgáló-implementációinak kombinációja lehetővé teszi az ügyfél parancssori és terminálüzemeltetési alkalmazásainak teljes keverését és egyeztetését. Ez a kombináció a klasszikus Windows Konzol API-khoz vagy virtuális terminálütemezésekhez is szólhat, azonban többletköltséggel jár, ha ezt a klasszikus kompatibilis Windows-metódusra fordítjuk, majd visszaváltunk az univerzálisabb virtuális terminálmetódusra.
Miután a piac megfelelően bevezeti a virtuális terminálütemezéseket és az UTF-8-at Windows rendszeren, a konzol gazdagépének konverziós/értelmezési feladata opcionálisan letiltható. A konzol gazdagép ezután egyszerű API-hívásszolgáltatóvá válik, és a pseudoconsole-on keresztül továbbítja az eszközhívásokat az üzemeltetési alkalmazásnak. Ez a módosítás növeli a teljesítményt, és maximalizálja az ügyfélalkalmazás és a terminál között kimondható sorozatok dialektusát. A változás révén további interaktivitási forgatókönyvek is engedélyezve lesznek, és (végül) a Windows-világot összhangba hozzák a parancssori alkalmazástér többi platformjának családjával.