gRPC ja suorituskykyiset API:t · Oppitunti

gRPC-Webin integrointi

Opi mahdollistamaan gRPC-viestintä suoraan verkkoselaimista gRPC-Web-proxyn avulla.

Oppitunti 1/411 vaihetta

gRPC-Webin integrointi on ilmainen gRPC ja suorituskykyiset API:t-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu gRPC ja suorituskykyiset API:t-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. gRPC ja suorituskykyiset API:t-kurssilla on yhteensä 4 oppituntia.

Selainten yhdistäminen gRPC:hen

Tervetuloa gRPC-Web-integraatioon!

Olette oppineet, miten tehokas gRPC on suorituskykyisessä viestinnässä. Entä jos haluatte web-sovellustenne keskustelevan suoraan gRPC-palveluiden kanssa? Tähän gRPC-Web tarjoaa ratkaisun.

Tässä oppitunnissa tarkastellaan, miten gRPC-Web mahdollistaa selainpohjaisten asiakkaiden yhteydenpidon gRPC-taustapalveluihin.

Miksi selaimet tarvitsevat gRPC-Webiä

Nykyaikaiset selaimet eivät tarjoa täyttä pääsyä matalan tason HTTP/2-ominaisuuksiin, joihin natiivi gRPC perustuu, etenkään edistyneiden suoratoisto-ominaisuuksien osalta.

  • HTTP/2:n rajallinen hallinta: Selaimet piilottavat suoran HTTP/2-kehysten käsittelyn.
  • CORS-rajoitukset: Cross-Origin Resource Sharing (CORS) -käytännöt voivat vaikeuttaa suoria gRPC-yhteyksiä.
  • Rajoitettu otsakkeiden käyttö: Kaikkia gRPC:n erityisiä otsakkeita ei ehkä voi käyttää tai muokata.

Nämä rajoitukset estävät tavallista gRPC-asiakasta toimimasta suoraan selaimessa.

gRPC-Web-välityspalvelimen esittely

gRPC-Webin perusidea on käyttää välityspalvelinta. Se toimii selainasiakkaan ja gRPC-palvelimen välissä.

  • Selainasiakas lähettää pyynnöt gRPC-Web-yhteensopivassa muodossa (usein HTTP/1.1:nä tai rajoitettuna HTTP/2:na).
  • gRPC-Web-välityspalvelin muuntaa nämä pyynnöt natiiviksi gRPC:ksi (täysi HTTP/2) ja välittää ne gRPC-palvelimelle.
  • Se muuntaa myös gRPC-palvelimen vastaukset takaisin muotoon, jonka selainasiakas ymmärtää.

Ajatelkaa sitä kääntäjänä, jonka avulla selain voi puhua gRPC:tä.

Yleisiä välityspalvelinratkaisuja

Vaikka voisitte kirjoittaa oman välityspalvelimen, saatavilla on useita vankkoja ratkaisuja:

  • Envoy Proxy: Suosittu ja suorituskykyinen avoimen lähdekoodin reuna- ja palveluvälityspalvelin. Se tukee gRPC-Webiä sisäänrakennetusti.
  • grpcwebproxy: Go-kielellä kirjoitettu erillinen välityspalvelin, joka on suunniteltu erityisesti gRPC-Webiä varten.

Nämä työkalut hoitavat monimutkaisen muunnoskerroksen, joten gRPC-palvelimenne voi pysyä tavallisena gRPC-palvelimena.

Viestinnän kulku

Tässä on yksinkertaistettu kuvaus gRPC-Web-kutsun toiminnasta:

  1. Selainasiakas: Lähettää välityspalvelimelle HTTP/1.1-pyynnön (tai rajoitetun HTTP/2-pyynnön).
  2. gRPC-Web-välityspalvelin: Vastaanottaa pyynnön ja muuntaa sen tavalliseksi HTTP/2-gRPC-pyynnöksi.
  3. gRPC-palvelin: Käsittelee natiivin gRPC-pyynnön ja lähettää takaisin natiivin gRPC-vastauksen.
  4. gRPC-Web-välityspalvelin: Vastaanottaa gRPC-vastauksen ja muuntaa sen takaisin HTTP/1.1-vastaukseksi (tai rajoitetuksi HTTP/2-vastaukseksi).
  5. Selainasiakas: Vastaanottaa ja käsittelee muunnetun vastauksen.

Protobuf web-asiakkaille

Kuten tavallisessa gRPC:ssä, palvelu ja viestit määritellään Protocol Buffersin (Protobuf) avulla.

Selainasiakkaan koodin luomiseen käytetään erityistä Protobuf-laajennosta, yleensä protoc-gen-grpc-web. Se luo JavaScript- tai TypeScript-koodia, joka toimii selainympäristöissä.

Luotu koodi osaa muotoilla pyynnöt gRPC-Web-välityspalvelinta varten ja jäsentää sen vastaukset.

Esimerkki: web-asiakkaan kutsu

Kun asiakastynkäkoodi on luotu, gRPC-Web-kutsun tekeminen JavaScriptistä/TypeScriptistä näyttää tutulta. Tässä on käsitteellinen katkelma GreeterService-palvelusta:

(Huomautus: Tämä koodi havainnollistaa toimintaa, eikä sitä voi suorittaa ilman täydellistä gRPC-Web-asennusta, johon kuuluvat protokollien käännös, käynnissä oleva välityspalvelin ja palvelin.)

import {HelloRequest} from './helloworld_pb';
import {GreeterClient} from './HelloworldServiceClientPb';

const client = new GreeterClient(
  'http://localhost:8080', // Proxy address
  null, null
);

const request = new HelloRequest();
request.setName('CoddyKit User');

client.sayHello(request, {}, (err, response) => {
  if (err) {
    console.error(err.code, err.message);
    return;
  }
  console.log(response.getMessage());
});

Palvelinpuoli pysyy tavallisena

Yksi gRPC-Webin suurista eduista on, ettei gRPC-palvelimenne tarvitse tietää siitä mitään!

Palvelin vastaanottaa välityspalvelimelta tavallisia gRPC-pyyntöjä (HTTP/2) ja lähettää takaisin tavallisia gRPC-vastauksia. Olemassa olevia gRPC-palvelutoteutuksia ei siis tarvitse muuttaa selainasiakkaiden tukemiseksi.

Vastuualueiden erottaminen yksinkertaistaa kehitystä ja ylläpitoa.

Suoratoiston rajoitukset gRPC-Webissä

Vaikka gRPC-Web on tehokas, sillä on joitakin rajoituksia natiiviin gRPC:hen verrattuna:

  • Unary-RPC:t: Tuettu täysin (pyyntö ja vastaus).
  • Palvelimen suoratoisto: Yleensä tuettu (palvelin lähettää useita vastauksia yhteen pyyntöön).
  • Asiakkaan suoratoisto: Ei yleensä tuettu selainten suoratoistopyyntöihin liittyvien rajoitusten vuoksi.
  • Kaksisuuntainen suoratoisto: Ei yleensä tuettu samasta syystä.

Sovellukset, jotka tukeutuvat vahvasti asiakkaan suoratoistoon tai kaksisuuntaiseen suoratoistoon, tarvitsevat yleensä natiivit gRPC-asiakkaat (esimerkiksi Node.js-sovelluksissa tai mobiilisovelluksissa).

Pikatarkistus: gRPC-Webin tarkoitus

Mitkä seuraavista väitteistä kuvaavat tarkasti gRPC-Webin ensisijaista tarkoitusta tai ominaisuuksia?

Kertaus: Selainten ja gRPC:n yhdistäminen

Olette nyt oppineet gRPC-Webin perusteet!

  • Se mahdollistaa selainasiakkaiden yhteydenpidon gRPC-palveluiden kanssa.
  • Se käyttää välityspalvelinta (kuten Envoyta tai grpcwebproxy-palvelinta) pyyntöjen ja vastausten muuntamiseen.
  • gRPC-palvelin pysyy tavallisena eikä tiedä gRPC-Web-kerroksesta.
  • Se tukee unary-kutsuja ja palvelimen suoratoistoa, mutta asiakkaan suoratoistoa ja kaksisuuntaista suoratoistoa ei yleensä tueta.

Tämä tehokas työkalu yhdistää nämä kaksi maailmaa ja tuo gRPC:n edut web-sovelluksiinne!

Aloita maksutta

Opi gRPC ja suorituskykyiset API:t tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”gRPC-Webin integrointi” ilmainen?

Kyllä – oppitunnin ”gRPC-Webin integrointi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko gRPC ja suorituskykyiset API:t-kurssin, päivitä CoddyKit PROhon. gRPC ja suorituskykyiset API:t-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”gRPC-Webin integrointi”?

Opi mahdollistamaan gRPC-viestintä suoraan verkkoselaimista gRPC-Web-proxyn avulla. Harjoittelet gRPC ja suorituskykyiset API:t-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni gRPC ja suorituskykyiset API:t-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin gRPC ja suorituskykyiset API:t-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”gRPC-Webin integrointi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä gRPC ja suorituskykyiset API:t-oppitunnilla?

Kyllä. Jokainen gRPC ja suorituskykyiset API:t-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. gRPC-Webin integrointi
  2. gRPCurl ja BloomRPC
  3. Palvelujen etsintämallit
  4. Palvelimen introspektio ja dynaamiset asiakkaat
← Takaisin: gRPC ja suorituskykyiset API:t