Bez popisu

Mehrdad Afshari a2310c0000 Merge pull request #14495 from mehrdada/master před 7 roky
.github 8c259b1a62 Remove C++ end2end test owners před 7 roky
.vscode d1f3082ff6 Adding shim for debugging node tests using vscode. před 8 roky
bazel 9a5a3883f5 Merge pull request #13963 from rongjiecomputer/windows před 7 roky
cmake 6750d42ef1 fine tune cmake find_package usage před 7 roky
doc 9d0bc30edb Merge pull request #14289 from boxofrad/patch-1 před 7 roky
etc fc14197dec Updating roots from Mozilla. před 7 roky
examples 6ef0159e8e Make C++ cocoapods example work před 7 roky
include 1bc550132a Fix ruby artifact build před 7 roky
src 9073ea03ef Regenerate projects před 7 roky
summerofcode 009dfea6a0 2018 ideas (gRPC Python Team's, at least) před 8 roky
templates 6ef0159e8e Make C++ cocoapods example work před 7 roky
test 5d0480a88c Merge pull request #14469 from adelez/foundry_integration před 7 roky
third_party aa56034b58 Add python bazel deps needed to run resolver component tests před 7 roky
tools 9073ea03ef Regenerate projects před 7 roky
vsprojects 4dc3c0bdd3 Merge branch 'master' of github.com:grpc/grpc into filters_prio před 8 roky
.clang-format baa14a975e Update clang-format to 5.0 před 8 roky
.clang_complete 4ac2b8e585 Enable clang-tidy as a sanity check, fix up all known failures před 8 roky
.editorconfig ae66d78b8e Adding an editorconfig configuration file. před 11 roky
.gitignore bc4b7891c8 Merge remote-tracking branch 'upstream/master' into create-grpc-c++-podspec před 8 roky
.gitmodules 8472e4032a Ignore zlib submodule if its dirty (due to CMake) před 7 roky
.istanbul.yml 2af89e49cb Moved gRPC node package root to repo root, made it depend on grpc.gyp před 10 roky
.pylintrc 2010985ab2 gRPC Python test infrastructure před 8 roky
.rspec d7e1a10628 Bundled C core with Ruby library před 10 roky
.travis.yml 10726f0421 Have Travis build the Sample app with frameworks too před 9 roky
.yardopts 33c728e1ed Adding a .yardopts file at the root so rubydocs isn't getting lost. před 10 roky
AUTHORS 312ea4a187 change LICENSE, add AUTHORS před 8 roky
BUILD 7d82f79db5 Bump version to v1.11 #gorgeous před 7 roky
CMakeLists.txt 9073ea03ef Regenerate projects před 7 roky
CODE-OF-CONDUCT.md c055a79262 Fix code of conduct před 8 roky
CONTRIBUTING.md 262d59e07c Update CONTRIBUTING.md před 8 roky
Gemfile d7e1a10628 Bundled C core with Ruby library před 10 roky
INSTALL.md fb5adaee61 remove reference to downloading protoc před 7 roky
LICENSE fbb61ed25d fix license file před 8 roky
MANIFEST.md ac586ba21e Remove tox před 9 roky
Makefile 9073ea03ef Regenerate projects před 7 roky
NOTICE.txt 312ea4a187 change LICENSE, add AUTHORS před 8 roky
OWNERS c052f363bf Substitute a11r for ctiller in all OWNERS files před 8 roky
PYTHON-MANIFEST.in 1f24b2ad8a Changes před 8 roky
README.md 611ee4ac68 Update README.md Copyright Notice před 8 roky
Rakefile d5696eb7d6 Revert "Partial revert PR#14042" před 7 roky
WORKSPACE aa56034b58 Add python bazel deps needed to run resolver component tests před 7 roky
build.yaml 7d82f79db5 Bump version to v1.11 #gorgeous před 7 roky
build_config.rb 392e2131e1 Removing grpc_alarm from core requires a major version bump for core před 8 roky
composer.json bb3d95b643 Use https://grpc.io consistently as the canonical URL před 8 roky
config.m4 75f0a9fbd2 place security_connector in its own subdirectory před 7 roky
config.w32 75f0a9fbd2 place security_connector in its own subdirectory před 7 roky
gRPC-C++.podspec 9073ea03ef Regenerate projects před 7 roky
gRPC-Core.podspec 9073ea03ef Regenerate projects před 7 roky
gRPC-ProtoRPC.podspec 9073ea03ef Regenerate projects před 7 roky
gRPC-RxLibrary.podspec 9073ea03ef Regenerate projects před 7 roky
gRPC.podspec 9073ea03ef Regenerate projects před 7 roky
grpc.bzl 4d5c3102a1 fix remaining license notices před 8 roky
grpc.def c745690caf Internalize gpr_thd except for id and currentid před 7 roky
grpc.gemspec 9b32d9c4f3 Merge pull request #14437 from yihuazhang/security_connector_replacement před 7 roky
grpc.gyp 75f0a9fbd2 place security_connector in its own subdirectory před 7 roky
package.xml 9073ea03ef Regenerate projects před 7 roky
requirements.txt bfcc99429b Bump minimum Cython version to 0.27 před 8 roky
setup.cfg 06dea573da Enable running Python formatting před 9 roky
setup.py e7a60bd812 Add NOMINMAX flag for Python Windows před 8 roky

README.md

Build Status

gRPC - An RPC library and framework

Copyright 2015 The gRPC Authors

Documentation

You can find more detailed documentation and examples in the doc and examples directories respectively.

Installation & Testing

See INSTALL for installation instructions for various platforms.

See tools/run_tests for more guidance on how to run various test suites (e.g. unit tests, interop tests, benchmarks)

See Performance dashboard for the performance numbers for the latest released version.

Repository Structure & Status

This repository contains source code for gRPC libraries for multiple languages written on top of shared C core library src/core.

Libraries in different languages may be in different states of development. We are seeking contributions for all of these libraries.

Language Source
Shared C [core library] src/core
C++ src/cpp
Ruby src/ruby
Python src/python
PHP src/php
C# src/csharp
Objective-C src/objective-c

Java source code is in the grpc-java repository. Go source code is in the grpc-go repository. NodeJS source code is in the grpc-node repository.

See MANIFEST.md for a listing of top-level items in the repository.

Overview

Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. These libraries enable communication between clients and servers using any combination of the supported languages.

Interface

Developers using gRPC typically start with the description of an RPC service (a collection of methods), and generate client and server side interfaces which they use on the client-side and implement on the server side.

By default, gRPC uses Protocol Buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages. It is possible to use other alternatives if desired.

Surface API

Starting from an interface definition in a .proto file, gRPC provides Protocol Compiler plugins that generate Client- and Server-side APIs. gRPC users typically call into these APIs on the Client side and implement the corresponding API on the server side.

Synchronous vs. asynchronous

Synchronous RPC calls, that block until a response arrives from the server, are the closest approximation to the abstraction of a procedure call that RPC aspires to.

On the other hand, networks are inherently asynchronous and in many scenarios, it is desirable to have the ability to start RPCs without blocking the current thread.

The gRPC programming surface in most languages comes in both synchronous and asynchronous flavors.

Streaming

gRPC supports streaming semantics, where either the client or the server (or both) send a stream of messages on a single RPC call. The most general case is Bidirectional Streaming where a single gRPC call establishes a stream where both the client and the server can send a stream of messages to each other. The streamed messages are delivered in the order they were sent.

Protocol

The gRPC protocol specifies the abstract requirements for communication between clients and servers. A concrete embedding over HTTP/2 completes the picture by fleshing out the details of each of the required operations.

Abstract gRPC protocol

A gRPC RPC comprises of a bidirectional stream of messages, initiated by the client. In the client-to-server direction, this stream begins with a mandatory Call Header, followed by optional Initial-Metadata, followed by zero or more Payload Messages. The server-to-client direction contains an optional Initial-Metadata, followed by zero or more Payload Messages terminated with a mandatory Status and optional Status-Metadata (a.k.a.,Trailing-Metadata).

Implementation over HTTP/2

The abstract protocol defined above is implemented over HTTP/2. gRPC bidirectional streams are mapped to HTTP/2 streams. The contents of Call Header and Initial Metadata are sent as HTTP/2 headers and subject to HPACK compression. Payload Messages are serialized into a byte stream of length prefixed gRPC frames which are then fragmented into HTTP/2 frames at the sender and reassembled at the receiver. Status and Trailing-Metadata are sent as HTTP/2 trailing headers (a.k.a., trailers).

Flow Control

gRPC inherits the flow control mechanisms in HTTP/2 and uses them to enable fine-grained control of the amount of memory used for buffering in-flight messages.