V dřevních dobách počítačů měl uživatel k dispozici pouze klávesnici a monitor terminálu. Příkazy zadával na příkazové řádce a počítač mu na další řádce, případně řádcích odpovídal.
Například v operačním systému Unix zadal operátor třeba příkaz ls (list directory) a stiskl Enter. A systém mu na konzoli (na monitoru) vypsal obsah aktuálního adresáře – jaké v něm byly soubory a případně další podadresáře.
Když chtěl uživatel v Unixu například zkopírovat soubor readme.txt
z adresáře /etc do svého domovského adresáře /home/franta,
musel celý postup opět popsat na příkazové řádce. Tedy:
cp /etc/readme.txt /home/franta
Konstruktéři hardwaru a softwaroví inženýři přemýšleli, jak by mu tuto jeho často se opakující činnost (vypisování cest k souborům a adresářům) nějak usnadnili, a přišli s grafickým uživatelským rozhraním. Ke klávesnici a monitoru přibyla myš a místo příkazové řádky začal operační systém se svým uživatelem komunikovat prostřednictvím oken.
V grafickém uživatelském rozhraní (Graphical User Interface, GUI) se procedura kopírování souboru pro uživatele značně zjednodušila.
Operační systém zobrazil uživateli v jednom okně adresář se souborem, který se měl zkopírovat, ve druhém okně si uživatel klikáním myší na jednotlivé adresáře a podadresáře v cestě k cílovému adresáři vybral druhý adresář a potom "chytil" myší a "potáhnul" soubor z okna se zdrojovým adresářem a "přetáhnul" ho a "pustil" (drag-and-drop) v okně s cílovým adresářem.
Uživatel nemusel nic psát, všechny parametry operace kopírování "ukázal" pomocí myši.
V .NETu máme k dispozici několik technologií, které umožňují programovat aplikace s grafickým uživatelským rozhraním.
Starší technologie, která se vyvinula z Visual Basic-u, se jmenuje Windows Forms (zkráceně WinForms).
Novější technologie, která se snaží budit dojem, že při budování tlustého klienta (aplikace, kterou musíme na počítač uživateli nainstalovat) se pohybujeme spíše v prostředí tenkých klientů (webové aplikace), má zkratku WPF (Windows Presentation Foundation).