SlideShare a Scribd company logo
GRPC	in	Android
Huỳnh	Quang	Thảo	
Silicon	Straits	Saigon	
Google	Developer	Expert	on	Android
SOAP
SOAP
- Simple	Object	Access	Protocol.
SOAP
- Simple	Object	Access	Protocol.	
- Use	XML	Data	format.
SOAP
- Simple	Object	Access	Protocol.	
- Use	XML	Data	format.		
- Human	readable	and	editable.
XML	DTD
- XML	Document	Type	DeKinition
XML	DTD
- XML	Document	Type	DeKinition
XML	DTD
- XML	Document	Type	DeKinition.
XML	DTD
- XML	Document	Type	DeKinition.	
- Useful	for	validation	document.
XML	DTD
- XML	Document	Type	DeKinition.	
- Useful	for	validation	document.	
- Useful	for	service	discovery,	convert	schema	
to	objects	(ie:	Student,	Person	…)
Restful	Service
Restful	Service
- Using	JSON	Format.
Restful	Service
- Using	JSON	Format.	
- Human	readable	and	editable.
Restful	Service
- Using	JSON	Format.	
- Human	readable	and	editable.	
- There	are	many	libraries	supporting	Restful	Service
Restful	Service
- Using	JSON	Format.	
- Human	readable	and	editable.	
- There	are	many	libraries	supporting	Restful	Service	
-	There	are	many	tools	supporting	Restful	Service.
{

"name": "Thao",

"school": "Le Hong Phong",

"year": 1993

}
{

"name": "Thao",

"school": "Le Hong Phong",

"class": "12CT"

}
1 2
{

"name": "Thao",

"school": "Le Hong Phong",

"year": 1993

}
{

"name": "Thao",

"school": "Le Hong Phong",

"class": "12CT"

}
1 2
- 1	is	missed	“class”	attribute.	
- 2	is	missed	“year”	attribute.	
- Both	1	and	2	are	redundant	attributes	“year”	and	“class”	
- …
Restful	Service	vs	SOAP
Restful	Service	vs	SOAP
Advantages	
- More	supporting	tools	and	libraries.
Restful	Service	vs	SOAP
Advantages	
- More	supporting	tools	and	libraries.	
- Easy	to	integrated	to	some	languages	(Javascript,		Ruby)
Restful	Service	vs	SOAP
Advantages	
- More	supporting	tools	and	libraries.	
- Easy	to	integrated	to	some	languages	(Javascript,		Ruby)	
Disadvantages	
- Cannot	validate	data.
Restful	Service	vs	SOAP
Advantages	
- More	supporting	tools	and	libraries.	
- Easy	to	integrated	to	some	languages	(Javascript,		Ruby)	
Disadvantages	
- Cannot	validate	data.	
- Cannot	use	for	service	discovery,	transform	schema	to	
methods.
RPC
RPC
- Remote	Procedure	Call.
RPC
- Remote	Procedure	Call.	
- When	a	computer	program	causes	a	procedure	to	
execute	in	a	different	address	space	(commonly	on	
another	computer	on	a	shared	network),	which	is	
coded	as	if	it	were	a	local	procedure	call.
RPC
RPC//	local	object	
Person	p	=	new	Person();	
//	update	person	
params	=	{id:	p.id,	name:	p.name}	
response	=	apiClient.updatePerson(params)	
result_code	=	response.return_code	
if	(result_code	==	200)	{	success	}	
else	{	retry	}
RPC//	local	object	
Person	p	=	new	Person();	
//	update	person	
params	=	{id:	p.id,	name:	p.name}	
response	=	apiClient.updatePerson(params)	
result_code	=	response.return_code	
if	(result_code	==	200)	{	success	}	
else	{	retry	}	
		//	we	deKine	updatePerson	entry	point	somewhere	else	
	host	=	localhost	
	port	=	8080	
	updatePersonEntryPoint	=	/person/update
RPCClient	
//	local	object	
Person	p	=	new	Person();	
p.name	=	‘New	Name’;	
PersonService.updatePersonName(p);	
//	error.	because	server	hasn’t	deKined	this	method	
PersonService.updatePersonYear(p);
RPCClient	
//	local	object	
Person	p	=	new	Person();	
p.name	=	‘New	Name’;	
PersonService.updatePersonName(p);	
//	error.	because	server	hasn’t	deKined	this	method	
PersonService.updatePersonYear(p);	
Server	
				class	PersonService	{	
											void	updatePersonName(p)	{	….	}	
											void	deletePerson(p)	{	….	}	
					}
Protobuf
JSON
JSON	
<categories type="array">
<category>
<id>100</id>
<category-name>Category 1</category-name>
<category-description>Description 1</category-description>
</category>
<category>
<id>100</id>
<category-name>Category 1</category-name>
<category-description>Description 1</category-description>
</category>
</categories>
XML
100,Category 1,Description 1
200,Category 2,Description 2
[id],[category	name],	[category	description]		
[id],[category	name],	[category	description]
CSV	
100,Category 1,Description 1
200,Category 2,Description 2
[id],[category	name],	[category	description]		
[id],[category	name],	[category	description]
CSV	
100,Category 1,Description 1
200,Category 2,Description 2
[id],[category	name],	[category	description]		
[id],[category	name],	[category	description]		
- JSON,	XML	are	human-readable/editable	format.
CSV	
100,Category 1,Description 1
200,Category 2,Description 2
[id],[category	name],	[category	description]		
[id],[category	name],	[category	description]		
- JSON,	XML	are	human-readable/editable	format.	
- Output	footprint	is	large.	
- Not	efKicient	for	transferring	data.
Protobuf
- Google's	language-neutral,	platform-neutral,	extensible	
mechanism	for	serializing	structured	dataOutput	
footprint	is	large.
Protobuf
- Google's	language-neutral,	platform-neutral,	extensible	
mechanism	for	serializing	structured	dataOutput	
footprint	is	large.	
- Binary	format.
Protobuf
- Google's	language-neutral,	platform-neutral,	extensible	
mechanism	for	serializing	structured	dataOutput	
footprint	is	large.	
- Binary	format.	
- EfKicient	for	transferring	data.
syntax = "proto3";



package sphinyx;



service Remote {

rpc Accept(stream IncomingEnvelope) returns (stream
OutgoingEnvelope) {}

}



message OutgoingEnvelope {

string id = 1;



oneof message {

HelloResponse hello = 2;

TouchRequest touch = 12;

SwipeRequest swipe = 13;

SendTextRequest send_text = 14;

}

}



message IncomingEnvelope {

string id = 1;



oneof message {

HelloRequest hello = 2;



SetMousePointerResponse set_mouse_pointer = 10;

SetMouseResponse set_mouse = 11;

TouchResponse touch = 12;

SwipeResponse swipe = 13;

SendTextResponse send_text = 14;

}

}
GRPC
GRPC
GRPC	=	Protobuf	+	RPC	made	by	Google
GRPC
GRPC	=	Protobuf	+	RPC	made	by	Google	
- is	a	RPC	Protocol
GRPC
GRPC	=	Protobuf	+	RPC	made	by	Google	
- is	a	RPC	Protocol	
- Transfer	data	using	Protobuf	format
GRPC
GRPC	=	Protobuf	+	RPC	made	by	Google	
- is	a	RPC	Protocol	
- Transfer	data	using	Protobuf	format	
- Made	by	Google:	Support	many	languages
Step-by-Step
Step	1:	deKine	protobuf	Kile
syntax = "proto3";



package sphinyx;



// This is the service for our API

service ChatService {

rpc Connect(ChatRequest) returns (ChatResponse) {}

rpc SendMessage(ChatRequest) returns (ChatResponse)
{}

}



message ChatRequest {

string id = 1;

string client = 2;

string message = 3;

}



message ChatResponse {

string id = 1;

string message = 2;

}

Step	2:	Generate	code	for		protobuf	Kile
Ruby:
grpc_tools_ruby_protoc -I protos/ --ruby_out=lib --grpc_out=lib
protos/message.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_message "sphinyx.ChatRequest" do
optional :id, :string, 1
optional :client, :string, 2
optional :message, :string, 3
end
add_message "sphinyx.ChatResponse" do
optional :id, :string, 1
optional :message, :string, 2
end
end
module Sphinyx
ChatRequest =
Google::Protobuf::DescriptorPool.generated_pool.lookup("sphinyx.ChatRequest").msgclass
ChatResponse =
Google::Protobuf::DescriptorPool.generated_pool.lookup("sphinyx.ChatResponse").msgclass
end
require 'grpc'
require 'message_pb'
module Sphinyx
module ChatService
# This is the service for our API
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'sphinyx.ChatService'
rpc :Connect, ChatRequest, ChatResponse
rpc :SendMessage, ChatRequest, ChatResponse
end
Stub = Service.rpc_stub_class
end
end
Step	3:	Create	GRPC	from	generated	code
class GrpcChatServer < Sphinyx::ChatService::Service
@clients = []
def connect(hello_req, _unused_call)
puts "Hello Client:#{hello_req.client} with id=#{hello_req.id}"
new_id = "#{hello_req.client}-#{hello_req.id}"
Sphinyx::ChatResponse.new(id: new_id, message: "Hello #{new_id}")
end
end
def main
s = GRPC::RpcServer.new
s.add_http2_port('0.0.0.0:50051', :this_port_is_insecure)
s.handle(GrpcChatServer)
s.run_till_terminated
end
main
Step	4:	Android.	Insert	Grpc	libraries
Step 1: Add protobuf dependency at outer build.gradle file
Step	4:	Android.	Insert	Grpc	libraries
Step 2: Apply plugin protobuf
Step	4:	Android.	Insert	Grpc	libraries
Step 2: Apply plugin protobuf
Step 3: Add protobuf dependencies at inner build.gradle file
Step	4:	Android.	Insert	Grpc	libraries
Step 4: Define task for generating protobuf file
Step	5:	Add	protobuf	Kile	into	main/proto	
directory
Step	6:	Using
Step 1: Define Grpc server
mChannel = ManagedChannelBuilder.forAddress(HOST, PORT)

.usePlaintext(true)

.build();



ChatServiceGrpc.ChatServiceBlockingStub stub = ChatServiceGrpc.newBlockingStub(mChannel);
Step	6:	Using
Step 1: Define Grpc server
mChannel = ManagedChannelBuilder.forAddress(HOST, PORT)

.usePlaintext(true)

.build();



ChatServiceGrpc.ChatServiceBlockingStub stub = ChatServiceGrpc.newBlockingStub(mChannel);
Step 2: Define message
Message.ChatRequest message = Message.ChatRequest

.newBuilder()

.setId(ID)

.setClient("Android")

.build();
Step	6:	Using
Step 3: Get result
Message.ChatResponse response = stub.connect(message);

String newId = response.getId();

Log.e("hqthao", response.getMessage());
DEMO
- There	are	4	types	of	rpc	method
- There	are	4	types	of	rpc	method	
1.	Simple	GRPC	
grpc	GetFeature(Point)	returns	(Feature)	{}
- There	are	4	types	of	rpc	method	
1.	Simple	GRPC	
grpc	GetFeature(Point)	returns	(Feature)	{}
2.	Server	side	streaming	
grpc	ListFeatures(Rectangle)	returns	(stream	Feature)	{}
- There	are	4	types	of	rpc	method	
1.	Simple	GRPC	
grpc	GetFeature(Point)	returns	(Feature)	{}
2.	Server	side	streaming	
grpc	ListFeatures(Rectangle)	returns	(stream	Feature)	{}	
3.	Client	side	streaming	
grpc	ListFeatures(stream	Rectangle)	returns	(Feature)	{}
- There	are	4	types	of	rpc	method	
1.	Simple	GRPC	
grpc	GetFeature(Point)	returns	(Feature)	{}
2.	Server	side	streaming	
grpc	ListFeatures(Rectangle)	returns	(stream	Feature)	{}	
3.	Client	side	streaming	
grpc	ListFeatures(stream	Rectangle)	returns	(Feature)	{}	
4.	A	bidirectional	streaming	RPC	
grpc	ListFeatures(stream	Rectangle)	returns	(stream	
Feature)	{}
Reference
https://grpc.io/docs/quickstart/android.html
Q&A

More Related Content

What's hot

Introduction to Restkit
Introduction to RestkitIntroduction to Restkit
Introduction to Restkit
petertmarks
 
MongoDB Advanced Schema Design - Inboxes
MongoDB Advanced Schema Design - InboxesMongoDB Advanced Schema Design - Inboxes
MongoDB Advanced Schema Design - Inboxes
Jared Rosoff
 
Parancoe and Lambico
Parancoe and LambicoParancoe and Lambico
Parancoe and Lambico
benfante
 
Sharding with MongoDB -- MongoDC 2012
Sharding with MongoDB -- MongoDC 2012Sharding with MongoDB -- MongoDC 2012
Sharding with MongoDB -- MongoDC 2012Tyler Brock
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.
Tobias Trelle
 
Webinar: Building Your First App with MongoDB and Java
Webinar: Building Your First App with MongoDB and JavaWebinar: Building Your First App with MongoDB and Java
Webinar: Building Your First App with MongoDB and Java
MongoDB
 
Tame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapperTame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapper
Giordano Scalzo
 
Weaponizing the Windows API with Metasploit's Railgun
Weaponizing the Windows API with Metasploit's RailgunWeaponizing the Windows API with Metasploit's Railgun
Weaponizing the Windows API with Metasploit's Railgun
TheLightcosine
 
Data Types/Structures in DivConq
Data Types/Structures in DivConqData Types/Structures in DivConq
Data Types/Structures in DivConq
eTimeline, LLC
 
Spray Json and MongoDB Queries: Insights and Simple Tricks.
Spray Json and MongoDB Queries: Insights and Simple Tricks.Spray Json and MongoDB Queries: Insights and Simple Tricks.
Spray Json and MongoDB Queries: Insights and Simple Tricks.
Andrii Lashchenko
 
Hadoop - MongoDB Webinar June 2014
Hadoop - MongoDB Webinar June 2014Hadoop - MongoDB Webinar June 2014
Hadoop - MongoDB Webinar June 2014MongoDB
 
Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268Ramamohan Chokkam
 
One BSON to Rule Them
One BSON to Rule ThemOne BSON to Rule Them
One BSON to Rule Them
David Golden
 
Building Services With gRPC, Docker and Go
Building Services With gRPC, Docker and GoBuilding Services With gRPC, Docker and Go
Building Services With gRPC, Docker and Go
Martin Kess
 
Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters
MongoDB
 
Back to Basics Webinar 5: Introduction to the Aggregation Framework
Back to Basics Webinar 5: Introduction to the Aggregation FrameworkBack to Basics Webinar 5: Introduction to the Aggregation Framework
Back to Basics Webinar 5: Introduction to the Aggregation Framework
MongoDB
 
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
César Hernández
 
MongoDB London 2013: Data Modeling Examples from the Real World presented by ...
MongoDB London 2013: Data Modeling Examples from the Real World presented by ...MongoDB London 2013: Data Modeling Examples from the Real World presented by ...
MongoDB London 2013: Data Modeling Examples from the Real World presented by ...
MongoDB
 
Build your first MongoDB App in Ruby @ StrangeLoop 2013
Build your first MongoDB App in Ruby @ StrangeLoop 2013Build your first MongoDB App in Ruby @ StrangeLoop 2013
Build your first MongoDB App in Ruby @ StrangeLoop 2013
Steven Francia
 
JavaLand gRPC vs REST API
JavaLand gRPC vs REST APIJavaLand gRPC vs REST API
JavaLand gRPC vs REST API
Vladimir Dejanovic
 

What's hot (20)

Introduction to Restkit
Introduction to RestkitIntroduction to Restkit
Introduction to Restkit
 
MongoDB Advanced Schema Design - Inboxes
MongoDB Advanced Schema Design - InboxesMongoDB Advanced Schema Design - Inboxes
MongoDB Advanced Schema Design - Inboxes
 
Parancoe and Lambico
Parancoe and LambicoParancoe and Lambico
Parancoe and Lambico
 
Sharding with MongoDB -- MongoDC 2012
Sharding with MongoDB -- MongoDC 2012Sharding with MongoDB -- MongoDC 2012
Sharding with MongoDB -- MongoDC 2012
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.
 
Webinar: Building Your First App with MongoDB and Java
Webinar: Building Your First App with MongoDB and JavaWebinar: Building Your First App with MongoDB and Java
Webinar: Building Your First App with MongoDB and Java
 
Tame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapperTame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapper
 
Weaponizing the Windows API with Metasploit's Railgun
Weaponizing the Windows API with Metasploit's RailgunWeaponizing the Windows API with Metasploit's Railgun
Weaponizing the Windows API with Metasploit's Railgun
 
Data Types/Structures in DivConq
Data Types/Structures in DivConqData Types/Structures in DivConq
Data Types/Structures in DivConq
 
Spray Json and MongoDB Queries: Insights and Simple Tricks.
Spray Json and MongoDB Queries: Insights and Simple Tricks.Spray Json and MongoDB Queries: Insights and Simple Tricks.
Spray Json and MongoDB Queries: Insights and Simple Tricks.
 
Hadoop - MongoDB Webinar June 2014
Hadoop - MongoDB Webinar June 2014Hadoop - MongoDB Webinar June 2014
Hadoop - MongoDB Webinar June 2014
 
Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268Automatically generating-json-from-java-objects-java-objects268
Automatically generating-json-from-java-objects-java-objects268
 
One BSON to Rule Them
One BSON to Rule ThemOne BSON to Rule Them
One BSON to Rule Them
 
Building Services With gRPC, Docker and Go
Building Services With gRPC, Docker and GoBuilding Services With gRPC, Docker and Go
Building Services With gRPC, Docker and Go
 
Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters
 
Back to Basics Webinar 5: Introduction to the Aggregation Framework
Back to Basics Webinar 5: Introduction to the Aggregation FrameworkBack to Basics Webinar 5: Introduction to the Aggregation Framework
Back to Basics Webinar 5: Introduction to the Aggregation Framework
 
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
 
MongoDB London 2013: Data Modeling Examples from the Real World presented by ...
MongoDB London 2013: Data Modeling Examples from the Real World presented by ...MongoDB London 2013: Data Modeling Examples from the Real World presented by ...
MongoDB London 2013: Data Modeling Examples from the Real World presented by ...
 
Build your first MongoDB App in Ruby @ StrangeLoop 2013
Build your first MongoDB App in Ruby @ StrangeLoop 2013Build your first MongoDB App in Ruby @ StrangeLoop 2013
Build your first MongoDB App in Ruby @ StrangeLoop 2013
 
JavaLand gRPC vs REST API
JavaLand gRPC vs REST APIJavaLand gRPC vs REST API
JavaLand gRPC vs REST API
 

Similar to Android GRPC

Creating Great REST and gRPC API Experiences (in Swift)
Creating Great REST and gRPC API Experiences (in Swift)Creating Great REST and gRPC API Experiences (in Swift)
Creating Great REST and gRPC API Experiences (in Swift)
Tim Burks
 
Fast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPCFast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPC
Tim Burks
 
Android and REST
Android and RESTAndroid and REST
Android and REST
Roman Woźniak
 
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays
 
Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...
Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...
Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...
National Information Standards Organization (NISO)
 
Generating Unified APIs with Protocol Buffers and gRPC
Generating Unified APIs with Protocol Buffers and gRPCGenerating Unified APIs with Protocol Buffers and gRPC
Generating Unified APIs with Protocol Buffers and gRPC
C4Media
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
Max euro python 2015
Max euro python 2015Max euro python 2015
Max euro python 2015
Carles Bruguera
 
Teach your (micro)services talk Protocol Buffers with gRPC.
Teach your (micro)services talk Protocol Buffers with gRPC.Teach your (micro)services talk Protocol Buffers with gRPC.
Teach your (micro)services talk Protocol Buffers with gRPC.
Mihai Iachimovschi
 
Switch to Backend 2023
Switch to Backend 2023Switch to Backend 2023
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
ciklum_ods
 
Consuming RESTful Web services in PHP
Consuming RESTful Web services in PHPConsuming RESTful Web services in PHP
Consuming RESTful Web services in PHP
Zoran Jeremic
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHPZoran Jeremic
 
Python tools for testing web services over HTTP
Python tools for testing web services over HTTPPython tools for testing web services over HTTP
Python tools for testing web services over HTTP
Mykhailo Kolesnyk
 
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB
 
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB
 
Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak
DroidConTLV
 
CocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIsCocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIs
Tim Burks
 
gRPC on .NET Core - NDC Oslo 2020
gRPC on .NET Core - NDC Oslo 2020gRPC on .NET Core - NDC Oslo 2020
gRPC on .NET Core - NDC Oslo 2020
James Newton-King
 
JSON Fuzzing: New approach to old problems
JSON Fuzzing: New  approach to old problemsJSON Fuzzing: New  approach to old problems
JSON Fuzzing: New approach to old problemstitanlambda
 

Similar to Android GRPC (20)

Creating Great REST and gRPC API Experiences (in Swift)
Creating Great REST and gRPC API Experiences (in Swift)Creating Great REST and gRPC API Experiences (in Swift)
Creating Great REST and gRPC API Experiences (in Swift)
 
Fast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPCFast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPC
 
Android and REST
Android and RESTAndroid and REST
Android and REST
 
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
 
Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...
Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...
Jones "Working with Scholarly APIs: A NISO Training Series, Session One: Foun...
 
Generating Unified APIs with Protocol Buffers and gRPC
Generating Unified APIs with Protocol Buffers and gRPCGenerating Unified APIs with Protocol Buffers and gRPC
Generating Unified APIs with Protocol Buffers and gRPC
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
Max euro python 2015
Max euro python 2015Max euro python 2015
Max euro python 2015
 
Teach your (micro)services talk Protocol Buffers with gRPC.
Teach your (micro)services talk Protocol Buffers with gRPC.Teach your (micro)services talk Protocol Buffers with gRPC.
Teach your (micro)services talk Protocol Buffers with gRPC.
 
Switch to Backend 2023
Switch to Backend 2023Switch to Backend 2023
Switch to Backend 2023
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
 
Consuming RESTful Web services in PHP
Consuming RESTful Web services in PHPConsuming RESTful Web services in PHP
Consuming RESTful Web services in PHP
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
 
Python tools for testing web services over HTTP
Python tools for testing web services over HTTPPython tools for testing web services over HTTP
Python tools for testing web services over HTTP
 
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
 
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
MongoDB World 2018: Time for a Change Stream - Using MongoDB Change Streams t...
 
Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak
 
CocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIsCocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIs
 
gRPC on .NET Core - NDC Oslo 2020
gRPC on .NET Core - NDC Oslo 2020gRPC on .NET Core - NDC Oslo 2020
gRPC on .NET Core - NDC Oslo 2020
 
JSON Fuzzing: New approach to old problems
JSON Fuzzing: New  approach to old problemsJSON Fuzzing: New  approach to old problems
JSON Fuzzing: New approach to old problems
 

More from Thao Huynh Quang

2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf
Thao Huynh Quang
 
Consensus and Raft Algorithm in Distributed System
Consensus and  Raft Algorithm in Distributed SystemConsensus and  Raft Algorithm in Distributed System
Consensus and Raft Algorithm in Distributed System
Thao Huynh Quang
 
Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)
Thao Huynh Quang
 
Kotlin Introduction with Android applications
Kotlin Introduction with Android applicationsKotlin Introduction with Android applications
Kotlin Introduction with Android applications
Thao Huynh Quang
 
Git Introduction with illustrations
Git Introduction with illustrationsGit Introduction with illustrations
Git Introduction with illustrations
Thao Huynh Quang
 
Android Jetpack: Room persistence library
Android Jetpack: Room persistence libraryAndroid Jetpack: Room persistence library
Android Jetpack: Room persistence library
Thao Huynh Quang
 
Android Performance Tips
Android Performance TipsAndroid Performance Tips
Android Performance Tips
Thao Huynh Quang
 
Kubernetes and service mesh application
Kubernetes  and service mesh applicationKubernetes  and service mesh application
Kubernetes and service mesh application
Thao Huynh Quang
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
Thao Huynh Quang
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introduction
Thao Huynh Quang
 
Concurrency pattern in Kotlin
Concurrency pattern in KotlinConcurrency pattern in Kotlin
Concurrency pattern in Kotlin
Thao Huynh Quang
 
Observability and its application
Observability and its applicationObservability and its application
Observability and its application
Thao Huynh Quang
 
GraphQL in Android
GraphQL in AndroidGraphQL in Android
GraphQL in Android
Thao Huynh Quang
 
Android Reverse Engineering
Android Reverse EngineeringAndroid Reverse Engineering
Android Reverse Engineering
Thao Huynh Quang
 

More from Thao Huynh Quang (16)

2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf
 
Consensus and Raft Algorithm in Distributed System
Consensus and  Raft Algorithm in Distributed SystemConsensus and  Raft Algorithm in Distributed System
Consensus and Raft Algorithm in Distributed System
 
Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)
 
Kotlin Introduction with Android applications
Kotlin Introduction with Android applicationsKotlin Introduction with Android applications
Kotlin Introduction with Android applications
 
Git Introduction with illustrations
Git Introduction with illustrationsGit Introduction with illustrations
Git Introduction with illustrations
 
Android Jetpack: Room persistence library
Android Jetpack: Room persistence libraryAndroid Jetpack: Room persistence library
Android Jetpack: Room persistence library
 
Android Performance Tips
Android Performance TipsAndroid Performance Tips
Android Performance Tips
 
Kubernetes and service mesh application
Kubernetes  and service mesh applicationKubernetes  and service mesh application
Kubernetes and service mesh application
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introduction
 
Concurrency pattern in Kotlin
Concurrency pattern in KotlinConcurrency pattern in Kotlin
Concurrency pattern in Kotlin
 
Observability and its application
Observability and its applicationObservability and its application
Observability and its application
 
GraphQL in Android
GraphQL in AndroidGraphQL in Android
GraphQL in Android
 
Android Reverse Engineering
Android Reverse EngineeringAndroid Reverse Engineering
Android Reverse Engineering
 
nosql
nosqlnosql
nosql
 
android deep linking
android deep linkingandroid deep linking
android deep linking
 

Recently uploaded

ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
zwunae
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
thanhdowork
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
gerogepatton
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
manasideore6
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
MdTanvirMahtab2
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
AhmedHussein950959
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 

Recently uploaded (20)

ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 

Android GRPC