<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>intro on Golang</title><link>https://golang.k5kc.com/tags/intro/</link><description>Recent content in intro on Golang</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 16 Aug 2020 00:14:00 +0530</lastBuildDate><atom:link href="https://golang.k5kc.com/tags/intro/index.xml" rel="self" type="application/rss+xml"/><item><title>Protocol buffers</title><link>https://golang.k5kc.com/2020/08/16/5.protocol-buffers/</link><pubDate>Sun, 16 Aug 2020 00:14:00 +0530</pubDate><guid>https://golang.k5kc.com/2020/08/16/5.protocol-buffers/</guid><description>Intro Protobuf (or Protocol Buffers) is a language-agnostic and platform-neutral serialization format invented at Google. Each protocol buffer message is a small logical record of information, containing a series of name-value pairs.
Unlike XML or JSON, here you first define the schema in a .proto file. They are a format like JSON but simpler, smaller, strictly typed, understandable only from the client to the server and faster to Marshall/Unmarshall. For example:</description></item><item><title>Why use gRPC?</title><link>https://golang.k5kc.com/2020/08/16/4.why-use-grpc/</link><pubDate>Sun, 16 Aug 2020 00:13:00 +0530</pubDate><guid>https://golang.k5kc.com/2020/08/16/4.why-use-grpc/</guid><description>With gRPC we can define our service once in a .proto file and implement clients and servers in any of gRPC&amp;rsquo;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.</description></item><item><title>Challenges with gRPC</title><link>https://golang.k5kc.com/2020/08/16/3.grpc-challenges/</link><pubDate>Sun, 16 Aug 2020 00:12:00 +0530</pubDate><guid>https://golang.k5kc.com/2020/08/16/3.grpc-challenges/</guid><description>Challenges with gRPC You should bear in mind that whilst gRPC does allow you to utilize these newer bits of technology, it is more challenging prototyping a gRPC service due to the fact that tools like the Postman HTTP client cannot be used in order to easily interact with your exposed gRPC service.
You do have options that make this possible, but it’s not something that’s readily available natively. There are options to use tools such as envoy to reverse proxy standard JSON requests and transcode them into the right data format but this is an additional dependency that can be tricky to set up for simple projects.</description></item><item><title>gRPC vs Rest</title><link>https://golang.k5kc.com/2020/08/16/2.grpc-vs-rest/</link><pubDate>Sun, 16 Aug 2020 00:11:00 +0530</pubDate><guid>https://golang.k5kc.com/2020/08/16/2.grpc-vs-rest/</guid><description>Whilst REST and gRPC are somewhat similar, there are some fundamental differences in how they work that you should be aware of.
gRPC utilizes HTTP/2 whereas REST utilizes HTTP 1.1 gRPC utilizes the protocol buffer data format as opposed to the standard JSON data format that is typically used within REST APIs. This provides us with strong schema and backward compatibility. With gRPC you can utilize HTTP/2 capabilities such as server-side streaming, client-side streaming or even bidirectional-streaming should you wish.</description></item><item><title>gRPC Introduction</title><link>https://golang.k5kc.com/2020/08/16/1.grpc-intro/</link><pubDate>Sun, 16 Aug 2020 00:10:00 +0530</pubDate><guid>https://golang.k5kc.com/2020/08/16/1.grpc-intro/</guid><description>So, before we dive in, we first need to understand what gRPC is, how it works and so on.
Definition - gRPC is a modern, open source remote procedure call (RPC) framework that can run anywhere
Remote Procedure Calls are something that we use within distributed systems that allow us to communicate between applications. More specifically, it allows us to expose methods within our application that we want other applications to be able to invoke.</description></item></channel></rss>