Roslyn – pracovní prostředí

Ondřej Janáček       29.06.2014       C#, VB.NET, .NET       13816 zobrazení

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ů.

workspaces layer

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.

workspace-obj-relations

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

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback