खोज…


परिचय

प्रोटोबॉफ़ या प्रोटोकॉल बफर डेटा को एनकोड और डीकोड करता है ताकि भाषाओं के विपरीत लिखे गए विभिन्न एप्लिकेशन या मॉड्यूल संचार चैनल को ओवरलोड किए बिना बड़ी संख्या में संदेशों का त्वरित और मज़बूती से आदान-प्रदान कर सकें। प्रोटोबुफ़ के साथ, प्रदर्शन सीधे आपके द्वारा भेजे जाने वाले संदेश की संख्या के लिए आनुपातिक होता है। यह संदेश को धारावाहिक बाइनरी फॉर्मेट में भेजने के लिए आपके उपकरण को स्रोत पर संदेश को एनकोड करने और गंतव्य पर डिकोड करने के लिए संपीड़ित करता है।

टिप्पणियों

प्रोटोबॉफ़ का उपयोग करने के दो चरण हैं।

  1. सबसे पहले आपको प्रोटोकॉल बफर परिभाषाओं को संकलित करना होगा
  2. अपने कार्यक्रम में समर्थन पुस्तकालय के साथ उपरोक्त परिभाषाओं को आयात करें।

gRPC सपोर्ट

यदि एक प्रोटो फ़ाइल RPC सेवाओं को निर्दिष्ट करती है, तो प्रोटो-जीन-गो को gRPC ( http://www.grpc.io/) के साथ संगत कोड जनरेट करने का निर्देश दिया जा सकता है। ऐसा करने के लिए, प्रोटो-जीन-गो पर plugins पैरामीटर पास करें; सामान्य तरीका यह है कि प्रोटॉक को --go_out तर्क में सम्मिलित करें:

protoc --go_out=plugins=grpc:. *.proto

Go के साथ Protobuf का उपयोग करना

वह संदेश जिसे आप क्रमबद्ध करना और भेजना चाहते हैं, जिसे आप एक फ़ाइल परीक्षण में शामिल कर सकते हैं

package example;

enum FOO { X = 17; };

message Test {
  required string label = 1;
  optional int32 type = 2 [default=77];
  repeated int64 reps = 3;
  optional group OptionalGroup = 4 {
    required string RequiredField = 5;
  }
}

प्रोटोकॉल बफ़र परिभाषा को संकलित करने के लिए, आप जिस गो कोड को आउटपुट करना चाहते हैं, उसको सेट करने के लिए --go_out पैरामीटर के साथ प्रोटोक चलाएँ।

protoc --go_out=. *.proto

उदाहरण पैकेज से टेस्ट ऑब्जेक्ट के साथ बनाने और खेलने के लिए,

package main

import (
    "log"

    "github.com/golang/protobuf/proto"
    "path/to/example"
)

func main() {
    test := &example.Test {
        Label: proto.String("hello"),
        Type:  proto.Int32(17),
        Reps:  []int64{1, 2, 3},
        Optionalgroup: &example.Test_OptionalGroup {
            RequiredField: proto.String("good bye"),
        },
    }
    data, err := proto.Marshal(test)
    if err != nil {
        log.Fatal("marshaling error: ", err)
    }
    newTest := &example.Test{}
    err = proto.Unmarshal(data, newTest)
    if err != nil {
        log.Fatal("unmarshaling error: ", err)
    }
    // Now test and newTest contain the same data.
    if test.GetLabel() != newTest.GetLabel() {
        log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel())
    }
    // etc.
}

प्लगइन के लिए अतिरिक्त मापदंडों को पारित करने के लिए, एक कोलोन द्वारा आउटपुट निर्देशिका से अलग अल्पविराम से अलग पैरामीटर सूची का उपयोग करें:

protoc --go_out=plugins=grpc,import_path=mypackage:. *.proto


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow