Miroslav Holec

Software & Cloud Architect

miroslavholec.cz / blog / vycucnete-data-z-visual-studio-online

Vycucněte data z Visual Studia Online

Miroslav Holec

Miroslav Holec

Publikován 22. srpna 2015 , aktualizace: 29. března 2016

Tento článek je starší 18 měsíců a je proto možné, že popisuje postupy nebo technologie, které v uplynulé době mohly doznat výraznějších změn. Názory a myšlenky v tomto článku již nemusí vyjadřovat současné stanovisko autora nebo autorů. Článek byl napsán 22. srpna 2015.

Výhodou služby Visual Studio Online je mocná sada aplikačních rozhraní, se kterými lze za běhu zjišťovat stav repozitářů, probíhající práce aj. Prakticky všechna data z Visual Studia pak lze snadno přenést do vlastní aplikace nebo si napsat vlastního klienta, kterým je možné VS spravovat.

Komunikace přes REST

Komunikace s API probíhá skrze rozhraní REST, tedy architekturu poskytující CRUD metody pro práci s daty s využitím HTTP protokolu. Pro většinu metod poskytuje VS Online všechny metody (GET, POST, PUT, PATCH a DELETE). Výchozí Content-Type je samozřejmě JSON.

Autorizace

Pro většinu zdrojů (API metod) se stačí ověřovat pomocí Basic Auth. Pro tuto funkci je nutné povolit alternativní přihlašování ve Visual Studio Online.

VS login

 

Nastavení credentials

Otestování

K otestování lze použít přímo ukázku z VS, kterou jsem mírně upravil.

var username = "username";
var password = "password";

using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Add(
        new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
        Convert.ToBase64String(
            System.Text.ASCIIEncoding.ASCII.GetBytes(
                string.Format("{0}:{1}", username, password))));

    using (HttpResponseMessage response = client.GetAsync(
                "https://{account}.visualstudio.com/DefaultCollection/_apis/build/builds").Result)
    {
        response.EnsureSuccessStatusCode();
        string responseBody = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine(responseBody);
    }
}

Výsledkem dotazu je JSON string, který už je snadné deserializovat do příslušného objektu.

Klientské knihovny pro .NET

Přímo ve formě NuGet balíčků je možné stáhnout knihovny, které práci s API usnadňují. Pokud vývojář plánuje vývoj aplikace založené na častém používání VS Online API, pak jsou knihovny doporučenou cestou jak si usnadnit vývoj.

PM> Install-Package Microsoft.TeamFoundationServer.ExtendedClient
PM> Install-Package Microsoft.TeamFoundationServer.Client
PM> Install-Package Microsoft.VisualStudio.Services.Client
PM> Install-Package Microsoft.VisualStudio.Services.InteractiveClient

Každá knihovna umožňuje správu jiné části VS. Celkové API lze rozdělit do řady skupin, z nichž asi nejzajímavější jsou následující:

  • Build - práce s bulidy, včetně spouštění
  • Git - práce s GITem, repositáři, pull requesty, seznamy commitů, aj.
  • Work item tracking - práce s úkoly, aktualizace, seznamy i vytváření

Využití

Napadá mě celá řada možností, jak VS Online API využit. Dokážu si představit, že řada firem se zaměřením na vývoj software si postaví (nebo už má) vykazovací portál, kterému umožní prolinkování s work itemy. Tím mohou manažeři získat přehled o vykázané práci zaměstance v souvislosti s úkolem a díky práci s Gitem (nebo TFVS) se podívat i na commity, které s takovým úkolem souvisí.

Jiné využití, které sám plánuji aplikovat je čerpání informací o nasazených změnách. Služba, kterou nyní vyvíjím tak může mít přehlednou stránku, kde se uživatel dozví o všech nasazených změnách (commity do master branch). Toho samého lze dosáhnout i s čerpáním dat z dokončených work itemů.

Školení ASP.NET Core a Entity Framework Core

Budoucnost platformy .NET bude patřit technologiím ASP.NET Core a EF Core. Přijďte se naučit tyto moderní technologie používat na mém praktickém školení.

6.11.2017 - 8.11.2017 ASP.NET Core MVC
20.11.2017 - 21.11.2017 Entity Framework Core