gRPC-Webin integrointi
Opi mahdollistamaan gRPC-viestintä suoraan verkkoselaimista gRPC-Web-proxyn avulla.
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:
- Selainasiakas: Lähettää välityspalvelimelle HTTP/1.1-pyynnön (tai rajoitetun HTTP/2-pyynnön).
- gRPC-Web-välityspalvelin: Vastaanottaa pyynnön ja muuntaa sen tavalliseksi HTTP/2-gRPC-pyynnöksi.
- gRPC-palvelin: Käsittelee natiivin gRPC-pyynnön ja lähettää takaisin natiivin gRPC-vastauksen.
- gRPC-Web-välityspalvelin: Vastaanottaa gRPC-vastauksen ja muuntaa sen takaisin HTTP/1.1-vastaukseksi (tai rajoitetuksi HTTP/2-vastaukseksi).
- 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!
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
- gRPC-Webin integrointi
- gRPCurl ja BloomRPC
- Palvelujen etsintämallit
- Palvelimen introspektio ja dynaamiset asiakkaat