protobuf C++ पूर्ण गाइड: उदाहरण, सेटअप और उपयोग

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Protocol Buffers (protobuf) क्या है और इसकी आवश्यकता क्यों है?

Protocol Buffers (protobuf) एक शक्तिशाली, कुशल और विस्तार योग्य डेटा सीरियलाइज़ेशन मैकेनिज़्म है, जिसे Google द्वारा विकसित किया गया है। यह आपको एक विशेष फ़ाइल (.proto) में डेटा संरचना को एक बार परिभाषित करने की अनुमति देता है, और फिर विभिन्न प्रोग्रामिंग भाषाओं (C++, Java, Python, Go, आदि) में इस डेटा को पढ़ने और लिखने के लिए सोर्स कोड जनरेट करता है।

protobuf की आवश्यकता क्यों है?

  • दक्षता: Protobuf डेटा को बाइनरी फॉर्मेट में सीरियलाइज़ करता है, जो XML या JSON जैसे टेक्स्ट फॉर्मेट की तुलना में काफी छोटा और प्रोसेस करने में तेज़ होता है। यह हाई-लोड सिस्टम और माइक्रोसर्विस आर्किटेक्चर के लिए विशेष रूप से महत्वपूर्ण है।
  • गति: डेटा का सीरियलाइज़ेशन और डीसीरियलाइज़ेशन पारंपरिक टेक्स्ट फॉर्मेट की तुलना में कई गुना तेज़ होता है।
  • टाइप सेफ्टी: जनरेट किया गया कोड सख्त टाइपिंग सुनिश्चित करता है, जिससे रनटाइम पर त्रुटियों की संभावना कम हो जाती है।
  • क्रॉस-प्लेटफ़ॉर्म और मल्टी-लैंग्वेज: आप एक बार डेटा स्कीमा परिभाषित कर सकते हैं और इसे C++, Python, Java और अन्य भाषाओं के प्रोजेक्ट्स में उपयोग कर सकते हैं।
  • बैकवर्ड कम्पैटिबिलिटी: Protobuf डेटा स्कीमा के विकास का समर्थन करता है: आप पुराने एप्लिकेशन वर्ज़न को तोड़े बिना नए फ़ील्ड जोड़ सकते हैं।

C++ के लिए protobuf इंस्टॉलेशन

C++ में protobuf के साथ काम करने के लिए दो चीज़ें इंस्टॉल करनी होंगी: कंपाइलर protoc (.proto फ़ाइलों को C++ कोड में बदलता है) और C++ के लिए protobuf लाइब्रेरी।

1. protoc कंपाइलर इंस्टॉल करना

सबसे आसान तरीका है GitHub पर आधिकारिक protobuf रिलीज़ पेज से तैयार बाइनरी डाउनलोड करना।

# Linux (Ubuntu/Debian) के लिए उदाहरण
sudo apt-get install protobuf-compiler

# macOS (Homebrew के माध्यम से) के लिए उदाहरण
brew install protobuf

# Windows के लिए protoc-x.x.x-win64.zip डाउनलोड करें और protoc.exe का पथ PATH एनवायरनमेंट वेरिएबल में जोड़ें

2. C++ के लिए protobuf लाइब्रेरी इंस्टॉल करना

लाइब्रेरी को सोर्स से बिल्ड करना या पैकेज मैनेजर का उपयोग करना अनुशंसित है।

# Ubuntu/Debian
sudo apt-get install libprotobuf-dev

# macOS (Homebrew)
brew install protobuf

# सोर्स से बिल्ड करना (सार्वभौमिक तरीका)
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF ..
make -j$(nproc)
sudo make install

3. CMake प्रोजेक्ट सेटअप (अनुशंसित तरीका)

अपने CMakeLists.txt में निम्नलिखित जोड़ें:

find_package(Protobuf REQUIRED)
include_directories(${Protobuf_INCLUDE_DIRS})

# .proto फ़ाइलों की ऑटोमैटिक कंपाइलेशन
file(GLOB PROTO_FILES "*.proto")
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES})

add_executable(my_program main.cpp ${PROTO_SRCS})
target_link_libraries(my_program ${Protobuf_LIBRARIES})

कोड उदाहरण के साथ त्वरित शुरुआत

मूल बातें प्रदर्शित करने के लिए एक सरल उदाहरण बनाते हैं। एक संपर्क के लिए डेटा संरचना परिभाषित करें।

चरण 1: .proto फ़ाइल बनाएं

फ़ाइल contact.proto:

syntax = "proto3";

package tutorial;

message Person {
  string name = 1;
  int32 age = 2;
  string email = 3;
}

चरण 2: C++ कोड जनरेट करें

protoc --cpp_out=. contact.proto

कमांड चलाने के बाद contact.pb.h और contact.pb.cc फ़ाइलें बन जाएंगी।

चरण 3: C++ कोड लिखें

फ़ाइल main.cpp:

#include <iostream>
#include <fstream>
#include "contact.pb.h"

using namespace std;

int main() {
    // सुनिश्चित करें कि लाइब्रेरी इनिशियलाइज़ हो गई है
    GOOGLE_PROTOBUF_VERIFY_VERSION;

    // 1. Person ऑब्जेक्ट बनाएं और उसे भरें
    tutorial::Person per                    

अनुशंसाएँ