Vývoj pro víc služeb prostory Azure DevMulti-service development with Azure Dev Spaces

V tomto kurzu se naučíte vyvíjet víc služeb aplikací s použitím Azure Dev mezery, společně s dalšími výhodami, které poskytuje vývoje prostorů.In this tutorial, you'll learn how to develop multi-service applications using Azure Dev Spaces, along with some of the added benefits that Dev Spaces provides.

Volání služby spuštěné v samostatném kontejneruCall a service running in a separate container

V této části vytvoříte druhou službu mywebapi, kterou bude webfrontend volat.In this section, you create a second service, mywebapi, and have webfrontend call it. Každá služba poběží v samostatném kontejneru.Each service will run in separate containers. Ladění bude probíhat v obou kontejnerech.You'll then debug across both containers.

Více kontejnerů

Stažení ukázkového kódu pro mywebapiDownload sample code for mywebapi

Kvůli úspoře času si můžete ukázkový kód stáhnout z úložiště GitHub.For the sake of time, let's download sample code from a GitHub repository. Přejděte na https://github.com/Azure/dev-spaces a stáhněte si úložiště GitHub výběrem možnosti Clone or Download (Klonovat nebo stáhnout).Go to https://github.com/Azure/dev-spaces and select Clone or Download to download the GitHub repository. Kód k této části je tady: samples/java/getting-started/mywebapi.The code for this section is in samples/java/getting-started/mywebapi.

Spuštění mywebapiRun mywebapi

  1. V samostatném okně editoru VS Code otevřete složku mywebapi.Open the folder mywebapi in a separate VS Code window.

  2. Otevřete paletu příkazů (pomocí nabídky Zobrazit | Paleta příkazů) a pomocí automatického dokončování zadejte a vyberte tento příkaz: Azure Dev Spaces: Prepare configuration files for Azure Dev Spaces.Open the Command Palette (using the View | Command Palette menu), and use auto-complete to type and select this command: Azure Dev Spaces: Prepare configuration files for Azure Dev Spaces.

  3. Stiskněte F5 a počkejte na sestavení a nasazení služby.Hit F5, and wait for the service to build and deploy. Poznáte to bude připravené, když zpráva podobná níže se zobrazí v konzole ladění:You'll know it's ready when a message similar to the below appears in the debug console:

    2019-03-11 17:02:35.935  INFO 216 --- [           main] com.ms.sample.mywebapi.Application       : Started Application in 8.164 seconds (JVM running for 9.272)
    
  4. Adresa URL koncového bodu bude přibližně takto: http://localhost:<portnumber>.The endpoint URL will look something like http://localhost:<portnumber>. Tip: Stavový řádek VS Code oranžově, který se zobrazí po kliknutí adresy URL.Tip: The VS Code status bar will turn orange and display a clickable URL. I když to vypadá, že kontejner je spuštěný lokálně, ve skutečnosti je spuštěný ve vývojovém prostoru v Azure.It might seem like the container is running locally, but actually it is running in our dev space in Azure. Důvodem adresy místního hostitele je, že služba mywebapi nemá definované veřejné koncové body, a proto je přístupná jenom z instance Kubernetes.The reason for the localhost address is because mywebapi has not defined any public endpoints and can only be accessed from within the Kubernetes instance. Kvůli jednodušší práci a interakci se soukromou službou z místního počítače vytvoří Azure Dev Spaces do kontejneru se spuštěným Azure dočasný tunel SSH.For your convenience, and to facilitate interacting with the private service from your local machine, Azure Dev Spaces creates a temporary SSH tunnel to the container running in Azure.

  5. Až bude služba mywebapi připravená, otevřete v prohlížeči adresu místního hostitele.When mywebapi is ready, open your browser to the localhost address.

  6. Pokud byly všechny kroky úspěšné, měla by se zobrazit odpověď služby mywebapi.If all the steps were successful, you should be able to see a response from the mywebapi service.

Vytvoření požadavku z webfrontend do mywebapiMake a request from webfrontend to mywebapi

Teď napíšeme kód v projektu webfrontend, který vygeneruje požadavek do mywebapi.Let's now write code in webfrontend that makes a request to mywebapi.

  1. Přepněte se do okna editoru VS Code s projektem webfrontend.Switch to the VS Code window for webfrontend.

  2. V rámci příkazu package přidejte následující příkazy import:Add the following import statements under the package statement:

    import java.io.*;
    import java.net.*;
    
  3. Nahraďte kód metody pozdravu:Replace the code for the greeting method:

    @RequestMapping(value = "/greeting", produces = "text/plain")
    public String greeting(@RequestHeader(value = "azds-route-as", required = false) String azdsRouteAs) throws Exception {
        URLConnection conn = new URL("http://mywebapi/").openConnection();
        conn.setRequestProperty("azds-route-as", azdsRouteAs); // propagate dev space routing header
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())))
        {
            return "Hello from webfrontend and " + reader.lines().reduce("\n", String::concat);
        }
    }
    

Předchozí příklad kódu předává hlavičku azds-route-as z příchozího požadavku do odchozího požadavku.The preceding code example forwards the azds-route-as header from the incoming request to the outgoing request. Později si ukážeme, jak to týmům pomáhá při společném vývoji.You'll see later how this helps teams with collaborative development.

Ladění více služebDebug across multiple services

  1. V této fázi byste měli mít spuštěnou službu mywebapi s připojeným ladicím programem.At this point, mywebapi should still be running with the debugger attached. Pokud tomu tak není, stiskněte v projektu mywebapi klávesu F5.If it is not, hit F5 in the mywebapi project.
  2. Nastavte zarážku v index() metodu mywebapi projektu na řádek 19 Application.javaSet a breakpoint in the index() method of the mywebapi project, on line 19 of Application.java
  3. V projektu webfrontend na řádku začínajícím try nastavte zarážku těsně před odesláním požadavku GET do mywebapi.In the webfrontend project, set a breakpoint just before it sends a GET request to mywebapi, on the line starting with try.
  4. V projektu webfrontend stiskněte F5 (nebo restartujte ladicí program, pokud je aktuálně spuštěný).Hit F5 in the webfrontend project (or restart the debugger if currently running).
  5. Otevřete webovou aplikaci a projděte kód obou služeb.Invoke the web app, and step through code in both services.
  6. Ve webové aplikaci na stránce o se zobrazí zpráva zřetězit dvě služby: "Hello webfrontend a Hello z mywebapi."In the web app, the About page will display a message concatenated by the two services: "Hello from webfrontend and Hello from mywebapi."

Hotovo!Well done!

Teď máte aplikaci s více kontejnery, kde můžete každý kontejner vyvíjet a nasazovat odděleně.You now have a multi-container application where each container can be developed and deployed separately.

Další postupNext steps