Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Poznámka
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Upozornění
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Autor: James Newton-King
Tento článek vysvětluje, jak služby gRPC porovnávají s rozhraními HTTP API s JSON (včetně webových rozhraní API ASP.NET Core). Technologie použitá k poskytování rozhraní API pro vaši aplikaci je důležitou volbou a gRPC nabízí jedinečné výhody v porovnání s rozhraními HTTP API. Tento článek popisuje silné a slabé stránky gRPC a doporučuje scénáře použití gRPC oproti jiným technologiím.
Následující tabulka nabízí základní porovnání funkcí mezi rozhraními gRPC a rozhraními HTTP API s JSON.
Funkce | gRPC | Rozhraní HTTP API s JSON |
---|---|---|
Smlouva | Povinné (.proto ) |
Volitelné (OpenAPI) |
Protokol | HTTP/2 | HTTP |
Datová část | Protobuf (malý, binární) | JSON (velký, čitelný člověk) |
Prescriptiveness | Striktní specifikace | Volný. Jakýkoli protokol HTTP je platný. |
Streamování | Klient, server, obousměrný | Klient, server |
Podpora prohlížečů | Ne (vyžaduje grpc-web) | Ano |
Zabezpečení | Přenos (TLS) | Přenos (TLS) |
Generování kódu klienta | Ano | OpenAPI + nástroje třetích stran |
Zprávy gRPC jsou serializovány pomocí Protobuf, efektivní binární formát zprávy. Protobuf serializuje velmi rychle na serveru a klientovi. Serializace Protobuf vede k malým datovým částem zpráv, které jsou důležité ve scénářích s omezenou šířkou pásma, jako jsou mobilní aplikace.
GRPC je navržená pro HTTP/2, hlavní revize PROTOKOLU HTTP, která poskytuje významné výhody výkonu oproti HTTP 1.x:
HTTP/2 není výhradní pro gRPC. Mnoho typů požadavků, včetně rozhraní HTTP API s JSON, může využívat protokol HTTP/2 a využívat výhod jeho vylepšení výkonu.
Všechny architektury gRPC poskytují prvotřídní podporu pro generování kódu. Základním souborem .proto
pro vývoj gRPC je soubor, který definuje kontrakt služeb a zpráv gRPC. Z tohoto souboru generují rozhraní gRPC základní třídu služby, zprávy a kompletního klienta.
Sdílením .proto
souboru mezi serverem a klientem je možné generovat zprávy a kód klienta od konce do konce. Generování kódu klienta eliminuje duplicitu zpráv na klientovi a serveru a vytvoří pro vás silného klienta. Nemusíte psát klienta, ale šetří významnou dobu vývoje v aplikacích s mnoha službami.
Formální specifikace pro rozhraní HTTP API s JSON neexistuje. Vývojáři diskutují o nejlepším formátu adres URL, příkazů HTTP a kódů odpovědí.
Specifikace gRPC je preskriptivní pro formát, který musí služba gRPC dodržovat. gRPC eliminuje debatu a šetří čas vývojářů, protože gRPC je konzistentní napříč platformami a implementacemi.
HTTP/2 poskytuje základ pro dlouhotrvající komunikační streamy v reálném čase. gRPC poskytuje prvotřídní podporu streamování prostřednictvím protokolu HTTP/2.
Služba gRPC podporuje všechny kombinace streamování:
gRPC umožňuje klientům určit, jak dlouho budou ochotni čekat na dokončení rpc. Konečný termín se odešle na server a server může rozhodnout, jakou akci provést, pokud překročí konečný termín. Server může například zrušit probíhající požadavky gRPC/HTTP/database při vypršení časového limitu.
Rozšíření konečného termínu a zrušení prostřednictvím podřízených volání gRPC pomáhá vynucovat limity využití prostředků.
GRPC je vhodný pro následující scénáře:
Dnes není možné přímo volat službu gRPC z prohlížeče. GRPC silně využívá funkce HTTP/2 a žádný prohlížeč neposkytuje úroveň kontroly vyžadované webovými požadavky na podporu klienta gRPC. Prohlížeče například neumožňují volajícímu vyžadovat použití protokolu HTTP/2 nebo poskytnutí přístupu k podkladovým rámcům HTTP/2.
GRPC na ASP.NET Core nabízí dvě řešení kompatibilní s prohlížečem:
gRPC-Web umožňuje aplikacím prohlížeče volat služby gRPC pomocí klienta gRPC-Web a Protobuf. gRPC-Web vyžaduje, aby aplikace prohlížeče vygenerovala klienta gRPC. gRPC-Web umožňuje aplikacím v prohlížeči využívat výhod vysokého výkonu a nízkého využití sítě gRPC.
.NET má integrovanou podporu gRPC-Web. Další informace najdete v tématu gRPC-Web v aplikacích ASP.NET Core gRPC.
Transkódování json gRPC umožňuje aplikacím prohlížeče volat služby gRPC, jako by šlo o rozhraní RESTful API s JSON. Aplikace prohlížeče nemusí generovat klienta gRPC ani nic vědět o gRPC. Rozhraní RESTful API je možné automaticky vytvořit ze služeb gRPC přidáním poznámek k .proto
souboru s metadaty HTTP. Překódování umožňuje aplikaci podporovat jak rozhraní gRPC, tak webová rozhraní API JSON, aniž by duplikovala úsilí o vytvoření samostatných služeb pro oba.
.NET má integrovanou podporu pro vytváření webových rozhraní API JSON ze služeb gRPC. Další informace najdete v tématu gRPC JSON transkódování v aplikacích ASP.NET Core gRPC.
Poznámka
Transkódování JSON gRPC vyžaduje rozhraní .NET 7 nebo novější.
Požadavky rozhraní HTTP API se odesílají jako text a můžou je číst a vytvářet lidé.
Zprávy gRPC jsou ve výchozím nastavení kódovány pomocí Protobuf. I když je protobuf efektivní k odesílání a příjmu, jeho binární formát není čitelný člověkem. Protobuf vyžaduje, aby popis rozhraní zprávy zadaný v .proto
souboru správně deserializovat. K analýze datových částí Protobuf na drátě a k ručnímu vytváření žádostí je potřeba další nástroje.
Existují funkce, jako je odraz serveru a nástroj příkazového řádku gRPC, které pomáhají s binárními zprávami Protobuf. Zprávy Protobuf také podporují převod na json a z json. Integrovaný převod JSON poskytuje efektivní způsob, jak při ladění převést zprávy Protobuf do a z lidské čitelné formy.
V následujících scénářích se doporučují jiné architektury než gRPC:
Zpětná vazba k produktu ASP.NET Core
ASP.NET Core je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceŠkolení
Modul
Nahrazení dotazování na straně klienta ASP.NET Core SignalR - Training
V tomto modulu použijete ASP.NET Core SignalR k nahrazení funkcí dotazování na straně klienta v existující webové aplikaci.