New HITMAN 2 Trailer

New HITMAN 2 Trailer Transports Players to a Siberian Prison Facility in the Latest Sniper Assassin Map — Available Tomorrow Warner Bros. Interactive Entertainment and IO Interactive today released a…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Protobuf VS JSON

Protocol buffer juga dikenal sebagai Protobuf adalah protokol yang dikembangkan Google secara internal untuk memungkinkan serialisasi dan deserialisasi data terstruktur antara berbagai layanan. Tujuan desain Google adalah untuk menciptakan metode yang lebih baik daripada XML untuk membuat sistem berkomunikasi satu sama lain melalui kabel atau untuk penyimpanan data. Sejak pengembangannya, Google telah membuat Protobuf di bawah open source license. Saat ini banyak menyediakan dukungan dalam bahasa yang paling umum, termasuk Python, Java, Objective-C, C # dan lainnya melalui versi bahasa proto3 baru Google.

JavaScript Object Notation atau yang lebh di kenal JSON, adalah format yang dapat dibaca yang juga digunakan untuk menyusun data. Ini juga merupakan alternatif untuk XML dan terutama digunakan sebagai cara mentransmisikan data antara server dan aplikasi web atau lainnya. JSON menggunakan cara yang dapat dibaca manusia sebagai cara mentransmisikan objek data yang terdiri dari pasangan atribut-nilai dan tipe data array (atau tipe lain dari serializable value). JSON berasal dari JavaScript, tetapi sejak tahun lalu beberapa bahasa pemrograman menyertakan kode untuk menghasilkan dan mem-parsing data dalam format JSON.

Dalam posting ini, kita akan melihat masing-masing dari protokol tersebut lalu membandingkan keduanya.

Tujuan desain Google untuk Protocol Buffer adalah agar lebih kecil, lebih sederhana, dan lebih cepat daripada XML. Developer menekankan pada kesederhanaan dan kinerja. Google menggunakan Protocol Buffer secara luas untuk menyimpan dan menukar informasi terstruktur dari semua jenis. Itu juga bertindak sebagai dasar untuk sistem Remote Procedure Call (RPC), yang digunakan untuk hampir semua komunikasi antar mesin di perusahaan.

Facebook menggunakan protokol setara yang disebut Apache Thrift dan Microsoft menggunakan protokol Microsoft Bond di samping tumpukan protokol RPC konkret yang digunakan untuk layanan tertentu yang dikenal sebagai gRPC.

Protocol buffer adalah mekanisme extensible language-neutral dan platform-netral. Google menjelaskan penggunaannya seperti itu, “Anda menentukan bagaimana Anda ingin terstruktur data sekali, kemudian Anda dapat menggunakan kode sumber yang dihasilkan khusus untuk dengan mudah menulis dan membaca data terstruktur Anda ke dan dari berbagai aliran data dan menggunakan berbagai bahasa .

Mulai menggunakan Protocol Buffer sangat mudah. Anda cukup mengunduh dan menginstal compiler Protocol Buffer, dan lihat tutorial yang diperlukan.

JSON sebagian besar digunakan dalam aplikasi web untuk mengirim data dari server ke browser. Anda biasanya mentransfer data JSON menggunakan Ajax, yang memungkinkan pertukaran data antara aplikasi web Anda dengan browser dan server tanpa perlu memuat ulang halaman.

Contoh dari Elated:

JSON juga dapat digunakan untuk mengirim data dari browser ke server, serta string JSON dikodekan sebagai parameter GET atau POST. Ini digunakan dengan cara ini lebih jarang karena data yang dikirim dalam permintaan Ajax biasanya cukup sederhana.

JSON didasarkan pada bagaimana Anda mendefinisikan objek (yang mirip dengan bahasa lain yang disebut associative array atau hash) dan array. Dua bagian utama JSON adalah kunci dan nilai. Mereka membuat pasangan kunci / nilai.

Ada lima jenis value:

Protocol Buffer dan JSON messages dapat digunakan secara bergantian; Namun, mereka dirancang dengan tujuan yang berbeda

JSON muncul dari subset dari bahasa pemrograman JavaScript. Pesan-pesannya dipertukarkan dalam format teks (dapat dibaca manusia), sepenuhnya independen dan didukung oleh hampir semua bahasa pemrograman.

Protobuf bukan hanya format pesan. Secara bersamaan seperangkat aturan dan alat yang mendefinisikan dan bertukar pesan. Saat ini dibatasi hanya untuk beberapa bahasa pemrograman. Selain itu, ia memiliki lebih banyak tipe data daripada JSON, seperti enumerasi dan metode, dan memiliki fungsi lain, termasuk RPC.

Pendapat berbeda, tetapi tentu saja ada berbagai sumber online yang membuktikan bahwa Protobuf berkinerja lebih cepat daripada JSON, XML, dan lainnya. Namun, setiap kasus penggunaan berbeda-beda sehingga penting untuk mencoba keduanya untuk kebutuhan spesifik Anda.

Auth0 Test — Auth0 menjalankan tes dari beberapa skenario yang berbeda untuk melihat bagaimana JSON dan Protobuf dilakukan terhadap satu sama lain menggunakan aplikasi Spring Boot. Dua skenario yang dibuat Auth0 adalah Java to Java dan JavaScript to Java — untuk mengukur “bagaimana protokol ini akan berperilaku dalam lingkungan seperti Java dan juga pada lingkungan di mana JSON adalah format pesan asli. Itulah, apa yang saya perlihatkan di sini adalah data dari lingkungan di mana JSON dibangun dan harus berkinerja sangat cepat (mesin JavaScript) dan dari lingkungan di mana JSON bukan warga negara kelas satu “. Jawaban singkatnya adalah bahwa Protobuf terbukti lebih cepat daripada JSON dalam kedua contoh ini.

Tes DZone — Tao Wen pada DZone melakukan tes sendiri. Dia mulai dengan menunjukkan bahwa jika Anda beralih dari JSON ke Protobuf hanya untuk kecepatan, maka kinerja harus setidaknya dua kali lebih cepat, jika tidak “tidak sepadan dengan usaha”. Dia mengutip sebuah studi dari Platform DSL, yang membuktikan bahwa dalam hal Java, JSON benar-benar berkinerja lebih baik. Wen mengatakan alasan untuk menggunakan Protobuf seharusnya bukan karena kecepatan, melainkan “definisi skema cross-language yang mengagumkan untuk pertukaran data”.

Code Climate Test — Michael Bernstein menjalankan perbandingan yang sangat baik pada Code Climate. Bernstein mulai dengan menggambarkan keunggulan JSON sebagai format pertukaran data — “itu dapat dibaca manusia, dipahami dengan baik, dan biasanya berkinerja baik”. Dia melanjutkan dengan mengatakan bahwa dia percaya Protocol Buffer adalah pilihan yang lebih baik daripada JSON untuk penyandian data.

He cites five primary reasons for believing this:

(i) Schemas Are Awesome — dengan menyandikan semantik objek bisnis Anda sekali dalam format proto, ini membantu “memastikan bahwa sinyal tidak hilang di antara aplikasi, dan bahwa batasan yang Anda buat menegakkan aturan bisnis Anda”;

(ii) Backward Compatibility for Free — JSON tidak menggunakan bidang angka sedangkan Protocol Buffer menggunakannya , yang meniadakan kebutuhan untuk pemeriksaan versi dan menghindari kebutuhan untuk “ugly code”, membuat kurang kompatibilitas menjadi suatu tantangan;

(iii) Less Boilerplate Code — Protocol Buffers memungkinkan Anda untuk mengembangkan kelas yang dihasilkan proto Anda bersama dengan skema Anda sedangkan titik akhir JSON dalam layanan berbasis HTTP cenderung mengandalkan kode boilerplate yang ditulis tangan untuk menangani pengodean dan pengodean objek Ruby ke dan dari JSON;

(iv) Validations and Extensibility — Keywords padaProtocol Buffers sangat kuat, memungkinkan Anda untuk menyandikan bentuk struktur data Anda dan bagaimana kelas akan bekerja dalam setiap bahasa;

(v) Easy Language Interoperability — Variasi bahasa yang digunakan untuk mengimplementasikan Protocol Buffer membuat “interoperabilitas antara aplikasi polyglot dalam arsitektur Anda menjadi lebih sederhana”.

Untuk meringkas, berikut adalah ikhtisar dari pro dan kontra dari masing-masing:

Sekali lagi, pada akhirnya penting untuk mencoba keduanya dan melihat mana yang lebih unggul untuk kasus penggunaan khusus Anda.

Add a comment

Related posts:

Use Cases for Computer Vision in the security sector

Although computer vision has been around for many years, not many people seem to be aware of it’s value, feasibility and applications to real business and the world. At CobbleVision we are trying to…

Unconventional computing past and present

You probably know that you are using an automatic programmable Turing-complete Von Neumann architecture electronic synchronous binary computer. These are some of the qualities of conventional…

Building my first CLI on top of linear using GraphQL

So I just started using linear for tracking projects, but one of the features that really pisses me off is having to manually copy the branch name from my ticket/task into terminal for our Github…