mirror of https://github.com/grpc/grpc.io.git
				
				
				
			Rework Google-specific language (#167)
* Change wording on gRPC origin Signed-off-by: lucperkins <lucperkins@gmail.com> * Templatize Why gRPC section Signed-off-by: lucperkins <lucperkins@gmail.com> * s/implement/generate
This commit is contained in:
		
							parent
							
								
									08eec27984
								
							
						
					
					
						commit
						aae9235be6
					
				| 
						 | 
				
			
			@ -35,16 +35,13 @@ Check out what people are saying below.
 | 
			
		|||
 | 
			
		||||
## The story behind gRPC
 | 
			
		||||
 | 
			
		||||
Google has been using a single general-purpose RPC infrastructure called Stubby
 | 
			
		||||
to connect the large number of microservices running within and across our data
 | 
			
		||||
centers for over a decade. Our internal systems have long embraced the
 | 
			
		||||
microservice architecture gaining popularity today. Stubby has powered all of
 | 
			
		||||
Google’s microservices interconnect for over a decade and is the RPC backbone
 | 
			
		||||
behind every Google service that you use today. In March 2015, we decided to
 | 
			
		||||
build the next version of Stubby in the open so we can share our learnings with
 | 
			
		||||
the industry and collaborate with them to build the next version of Stubby both
 | 
			
		||||
for microservices inside and outside Google but also for last mile of computing
 | 
			
		||||
(mobile, web and IOT).
 | 
			
		||||
gRPC was initially created by Google, which has used a single general-purpose
 | 
			
		||||
RPC infrastructure called **Stubby** to connect the large number of microservices
 | 
			
		||||
running within and across its data centers for over a decade. In March 2015,
 | 
			
		||||
Google decided to build the next version of Stubby and make it open source. The
 | 
			
		||||
result was gRPC, which is now used in a great many organizations outside of
 | 
			
		||||
Google to power use cases from microservices to the "last mile" of computing
 | 
			
		||||
(mobile, web, and Internet of Things).
 | 
			
		||||
 | 
			
		||||
For more background on why we created gRPC, see the [gRPC Motivation and Design
 | 
			
		||||
Principles](/blog/principles) on the [gRPC blog](/blog).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,9 +17,7 @@ This guide also does not cover anything on the server side. You can check the [J
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get information about features on their route, create a summary of their route, and exchange route information such as traffic updates with the server and other clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients and servers in any of gRPC's supported languages, which in turn can be run in environments ranging from servers inside Google to your own tablet - all the complexity of communication between different languages and environments is handled for you by gRPC. We also get all the advantages of working with protocol buffers, including efficient serialization, a simple IDL, and easy interface updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,18 +24,7 @@ guide](https://developers.google.com/protocol-buffers/docs/reference/cpp-generat
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,18 +21,7 @@ language: you can find out more in the
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,18 +22,7 @@ guide](https://developers.google.com/protocol-buffers/docs/proto3).
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,18 +23,7 @@ guide](https://developers.google.com/protocol-buffers/docs/reference/go-generate
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,18 +25,7 @@ guide](https://developers.google.com/protocol-buffers/docs/reference/java-genera
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,18 +22,7 @@ buffers language. You can find out more in the
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,23 +22,9 @@ guide](https://developers.google.com/protocol-buffers/docs/proto3) and the
 | 
			
		|||
[Objective-C generated code
 | 
			
		||||
guide](https://developers.google.com/protocol-buffers/docs/reference/objective-c-generated).
 | 
			
		||||
 | 
			
		||||
### Why use gRPC? {#why-grpc}
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
With gRPC you can define your service once in a .proto file and implement
 | 
			
		||||
clients and servers in any of gRPC's supported languages, which in turn can be
 | 
			
		||||
run in environments ranging from servers inside Google to your own tablet - all
 | 
			
		||||
the complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. You also get all the advantages of working with
 | 
			
		||||
protocol buffers, including efficient serialization, a simple IDL, and easy
 | 
			
		||||
interface updating.
 | 
			
		||||
 | 
			
		||||
gRPC and proto3 are specially suited for mobile clients: gRPC is implemented on
 | 
			
		||||
top of HTTP/2, which results in network bandwidth savings over using HTTP/1.1.
 | 
			
		||||
Serialization and parsing of the proto binary format is more efficient than the
 | 
			
		||||
equivalent JSON, resulting in CPU and battery savings. And proto3 uses a runtime
 | 
			
		||||
that has been optimized over the years at Google to keep code size to a minimum.
 | 
			
		||||
The latter is important in Objective-C, because the ability of the compiler to
 | 
			
		||||
strip unused code is limited by the dynamic nature of the language.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup {#setup}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,15 +22,9 @@ Also note that currently you can only create clients in PHP for gRPC services -
 | 
			
		|||
you can find out how to create gRPC servers in our other tutorials, e.g.
 | 
			
		||||
[Node.js](/docs/tutorials/basic/node/).
 | 
			
		||||
 | 
			
		||||
### Why use gRPC? {#why-grpcc}
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
With gRPC you can define your service once in a .proto file and implement
 | 
			
		||||
clients and servers in any of gRPC's supported languages, which in turn can be
 | 
			
		||||
run in environments ranging from servers inside Google to your own tablet - all
 | 
			
		||||
the complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. You also get all the advantages of working with
 | 
			
		||||
protocol buffers, including efficient serialization, a simple IDL, and easy
 | 
			
		||||
interface updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup {#setup}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,18 +23,7 @@ guide](https://developers.google.com/protocol-buffers/docs/reference/python-gene
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
This example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC you can define your service once in a .proto file and implement
 | 
			
		||||
clients and servers in any of gRPC's supported languages, which in turn can be
 | 
			
		||||
run in environments ranging from servers inside Google to your own tablet -
 | 
			
		||||
all the complexity of communication between different languages and environments
 | 
			
		||||
is handled for you by gRPC. You also get all the advantages of working with
 | 
			
		||||
protocol buffers, including efficient serialization, a simple IDL, and easy
 | 
			
		||||
interface updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,18 +22,7 @@ guide](https://developers.google.com/protocol-buffers/docs/proto3).
 | 
			
		|||
 | 
			
		||||
### Why use gRPC?
 | 
			
		||||
 | 
			
		||||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a .proto file and implement clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside Google to your own tablet - all the
 | 
			
		||||
complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
{{< why-grpc >}}
 | 
			
		||||
 | 
			
		||||
### Example code and setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,12 +21,12 @@ buffers](https://developers.google.com/protocol-buffers/docs/overview).
 | 
			
		|||
 | 
			
		||||
With gRPC you can define your service once in a .proto file and implement
 | 
			
		||||
clients and servers in any of gRPC's supported languages, which in turn can be
 | 
			
		||||
run in environments ranging from servers inside Google to your own tablet - all
 | 
			
		||||
the complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. You also get all the advantages of working with
 | 
			
		||||
protocol buffers, including efficient serialization, a simple IDL, and easy
 | 
			
		||||
interface updating. gRPC-Web lets you access gRPC services built in this manner
 | 
			
		||||
from browsers using an idiomatic API.
 | 
			
		||||
run in environments ranging from servers inside a large data center to your own
 | 
			
		||||
tablet - all the complexity of communication between different languages and
 | 
			
		||||
environments is handled for you by gRPC. You also get all the advantages of
 | 
			
		||||
working with protocol buffers, including efficient serialization, a simple IDL,
 | 
			
		||||
and easy interface updating. gRPC-Web lets you access gRPC services built in this
 | 
			
		||||
manner from browsers using an idiomatic API.
 | 
			
		||||
 | 
			
		||||
### Define the Service {#setup}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
Our example is a simple route mapping application that lets clients get
 | 
			
		||||
information about features on their route, create a summary of their route, and
 | 
			
		||||
exchange route information such as traffic updates with the server and other
 | 
			
		||||
clients.
 | 
			
		||||
 | 
			
		||||
With gRPC we can define our service once in a `.proto` file and generate clients
 | 
			
		||||
and servers in any of gRPC's supported languages, which in turn can be run in
 | 
			
		||||
environments ranging from servers inside a large data center to your own tablet —
 | 
			
		||||
all the complexity of communication between different languages and environments is
 | 
			
		||||
handled for you by gRPC. We also get all the advantages of working with protocol
 | 
			
		||||
buffers, including efficient serialization, a simple IDL, and easy interface
 | 
			
		||||
updating.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
{{ readFile "includes/why-grpc.md" | markdownify }}
 | 
			
		||||
		Loading…
	
		Reference in New Issue