Dnes si představíme vyšší vrstvu Roslynu zvanou Workspaces, neboli pracovní prostředí, o které jsem se minule zmínil opravdu jen stručně. To nám pomůže dotvořit si celkový pohled na tuto platformu a pak už nám nic nebrání ponořit se do syntaktické a sémantické části API.
Následuje seznam všech předcházejících článků série, které doporučuji přečíst, než se vrhnete na tento.
Workspace
Pro připomenutí, jedná se o následující vrstvu, která je vstupním bodem pro práci s projekty na úrovni solution i jednotlivých souborů.
Toto API můžete samozřejmě “konzumovat” nejen v rámci Visual Studia používáním zaintegrovaných funkcí pro práci s projekty a jejich soubory. Abychom si více přiblížili, k čemu nám může být užitečná, vysvětlíme si vztahy v následujícím obrázku.
V kořeni stromu je host, který má v sobě načtené pracovní prostředí. To máme Visual Studio s otevřeným solution. Úlohou hosta je předávání informací pracovnímu prostředí, které je poté distribuuje do správného místa ve svém podstromě. Tento podstrom je tvořen kolekcí projektů, které se skládají z dokumentů a dokument je nakonec kolekce znaků, které tvoří slova s odlišným významem (z pohledu kompilátoru).
S touto vrstvou můžeme pracovat nezávisle na hostu (IDE), což znamená, že my sami jsme hostem a zdrojem událostí. Obrázek dále znázorňuje, jak probíhá proces změn v solution. API vystavuje model, který reprezentuje solution jako snapshot, tj. neměnnou strukturu. Tento princip už z programování známe. Immutability, neboli neměnnost zajišťuje, že se nám objekt pod rukami nezmění vlivem třetí strany. Ani my ho nemůžeme změnit, můžeme ale vytvořit nový na základě stávajícího. Změny je pak potřeba nahlásit prostředí.
Přes objektové modely projektu můžete přistupovat například k vlastnostem projektu, jeho referencím anebo jej rovnou zkompilovat. Modely dokumentů potom umožňují získat zdrojový kód v podobě textu i syntaktického stromu.
Nápaditější z Vás už si pravděpodobně představili reálné využití. Pro ostatní se podělím o mé nápady:
- hromadný refactoring několika solution
- vytvoření modelu všech Vašich projektů pro celkový pohled a orientaci v produktu
- dodatečné vygenerování programátorské dokumentace k celému produktu
- odhalení nekonzistencí mezi projekty
- aspektově orientované programování
Tohle otevírá možnosti, které mají hranice pouze tam, kde končí lidská představivost a vynalézavost. Podle mého je to další milník v historii software (a zejména platformy .NET), který přinese řadu nových produktů zaměřených právě na celkový pohled na produkt. Jaké máte nápady ohledně použití Vy? Příště o spodní vrstvě – compiler.
Zdroj: http://roslyn.codeplex.com/wikipage?title=Overview&referringTitle=Home