1
●
●
●
○
■
○
●
○
○
■
○
●
○
●
○
○
○
■
○
■
Knowledge
Experiences
Design Decisions
Products
24/7 Services
Business Values
Programming OSS Outcome
●
○
Program Function
Call
Response
Local Function Call:
Program Function
Serialize
Deserialize
Request Data
Deserialize
Response Data
Serialize
Remote Function Call:
Network
Client
Call
Response
Server
Call
Response
●
○
○
●
○
■
○
●
○
○
Program Function
Serialize
Deserialize
Request Data
Deserialize
Response Data
Serialize
Client
Call
Response
Server
Call
Response
https://cloud.google.com/blog/products/api-management/
understanding-grpc-openapi-and-rest-and-when-to-use-th
em
●
○
●
○
●
○
●
●
RPC Interface
Router
Scala.js Client
RPC Web Server
Generate
HTTP/gRPC Client
Open API Spec
RPC Impl
Start
RPC CallsJSON
Cross-Language
RPC Client
Scala.js
Web Application
Micro Servicesbt-airframeairframe-http
airframe-http-finagle
airframe-rx-html
airframe-codec
API Documentation
airframe-gRPC
●
○
●
○
●
●
○
■
○
■
●
○
■
●
○
○
■
○
Scala.js
Web Browsers
Interactive Applications
Using RPC
●
○
●
○
●
○
●
●
Program Function
Serialize
Deserialize
Request Data
Deserialize
Response Data
Serialize
Client
Call
Response
Server
Call
Response
●
○
Object Object
Pack Unpack
PackUnpack
Server SideClient Side
Scala.js
JSON
●
○
●
○
●
Input Output
Pack Unpack
PackUnpack
MessageCodec MessageCodec
●
○
○
○
○
○
●
○
○
●
●
○
○
●
Pack
Unpack
Serialize
Deserialize
JSON
●
○
●
○
■
○
●
○
●
●
●
○
Scala.js
airframe-rx-html
●
○
●
○
○
●
○
●
●
●
○
●
○
●
○
○
○
■
sbt-airframe
Code
Generation
RPC Client
Scala.jsScala.js Client
HTTP/gRPC Client
Open API Spec
Cross-Language
RPC Client
Program Function
Serialize
Deserialize
Request Data
Deserialize
Response Data
Serialize
Client
Call
Response
Server
Call
Response
Scala.js
https://github.com/wvlet/airframe/tree/master/examples/rpc-examples
●
●
○
■
RPC Interface
Router
Scala.js Client
RPC Web Server
Generate
HTTP/gRPC Client
Open API Spec
RPC Impl
Start
RPC CallsJSON
Cross-Language
RPC Client
Scala.js
Web Application
Micro Servicesbt-airframeairframe-http
airframe-http-finagle
airframe-http-rx
airframe-codec
API Documentation
airframe-gRPC
●
●
● https://wvlet.org/airframe/
●
○
●
○
●
○
○
○
●
●
○
○
●
Object
Unpack
Pack
JDBC
ResultSet
Pack/Unpack
YAML
JSON
MessagePack
●
●
Int
Float
Boolean
String
Array
Map
Binary
SQL BigInt
parseInt
toInt
0 or 1
IntCodec
Pack Unpack
Error or null
“100”
(string)
100
(int)
100
(int)
Logs
CSV
command-line
arguments

Airframe RPC