คำถามติดแท็ก protocol-buffers

Protocol Buffers เป็นวิธีการเข้ารหัสข้อมูลที่มีโครงสร้างแบบเป็นกลางและเป็นกลางของแพลตฟอร์มในรูปแบบที่มีประสิทธิภาพและขยายได้ Google ใช้ Protocol Buffers สำหรับโปรโตคอล RPC และรูปแบบไฟล์ภายในเกือบทั้งหมด นอกจากนี้ยังเป็นการเข้ารหัสข้อมูลเริ่มต้นที่ใช้โดยกรอบงาน gRPC โอเพนซอร์ส


1
บัฟเฟอร์โปรโตคอล google vs json vs XML [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันต้องการทราบข้อดีและข้อเสียของ Google Protocol Buffers JSON XML ฉันต้องการที่จะใช้หนึ่งกรอบทั่วไปสำหรับสองใบสมัครหนึ่งใน Perl และที่สองใน Java ดังนั้นต้องการสร้างบริการทั่วไปที่สามารถใช้ได้ทั้งเทคโนโลยีเช่น Perl และ Java ทั้งสองเป็นเว็บแอปพลิเคชัน โปรดแบ่งปันความคิดและข้อเสนอแนะที่มีค่าของคุณเกี่ยวกับสิ่งนี้ ฉันเห็นลิงก์จำนวนมากบน Google แต่มีความคิดเห็นที่หลากหลาย

2
เหตุใดจึงจำเป็นและไม่ใส่ก็ได้ถูกลบใน Protocol Buffers 3
ฉันเพิ่งใช้gRPCกับproto3และฉันสังเกตเห็นว่าrequiredและoptionalถูกลบในไวยากรณ์ใหม่ ใครบ้างกรุณาอธิบายว่าทำไมลบ / จำเป็นต้องใช้จะถูกลบใน proto3 ข้อ จำกัด ประเภทนี้ดูเหมือนจะจำเป็นเพื่อให้คำจำกัดความแข็งแกร่ง ไวยากรณ์ proto2: message SearchRequest { required string query = 1; optional int32 page_number = 2; optional int32 result_per_page = 3; } ไวยากรณ์ proto3: syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; }

6
อะไรคือความแตกต่างที่สำคัญระหว่าง Apache Thrift, Google Protocol Buffers, MessagePack, ASN.1 และ Apache Avro
ทั้งหมดนี้มีการจัดลำดับไบนารีเฟรมเวิร์ก RPC และ IDL ฉันสนใจในความแตกต่างที่สำคัญระหว่างสิ่งเหล่านี้และลักษณะเฉพาะ (ประสิทธิภาพการใช้งานง่ายการรองรับภาษาโปรแกรม) หากคุณรู้จักเทคโนโลยีอื่นที่คล้ายคลึงกันโปรดระบุคำตอบ

3
ฉันสามารถกำหนดการเรียก grpc ด้วยคำขอหรือการตอบกลับที่ว่างเปล่าได้หรือไม่
ไวยากรณ์ rpc ใน proto3 อนุญาตคำขอหรือการตอบกลับที่เป็นโมฆะหรือไม่ เช่นฉันต้องการสิ่งต่อไปนี้เทียบเท่า: rpc Logout; rpc Status returns (Status); rpc Log (LogData); หรือฉันควรสร้างประเภท null? message Null {}; rpc Logout (Null) returns (Null); rpc Status (Null) returns (Status); rpc Log (LogData) returns (Null);

9
วิธีกำหนดฟิลด์ทางเลือกใน protobuf 3
ฉันต้องการระบุข้อความด้วยฟิลด์ทางเลือกใน protobuf (ไวยากรณ์ของ proto3) ในแง่ของไวยากรณ์ของโปรโต 2 ข้อความที่ฉันต้องการแสดงออกมีดังนี้: message Foo { required int32 bar = 1; optional int32 baz = 2; } จากความเข้าใจของฉันแนวคิด "ทางเลือก" ถูกลบออกจากไวยากรณ์โปรโต 3 (พร้อมกับแนวคิดที่จำเป็น) แม้ว่าจะไม่ชัดเจนทางเลือกอื่น - การใช้ค่าเริ่มต้นเพื่อระบุว่าเขตข้อมูลไม่ได้ถูกระบุจากผู้ส่ง แต่จะทำให้เกิดความไม่ชัดเจนหากค่าเริ่มต้นเป็นของโดเมนค่าที่ถูกต้อง (พิจารณาตัวอย่างเช่นประเภทบูลีน) ฉันจะเข้ารหัสข้อความด้านบนได้อย่างไร? ขอขอบคุณ.

1
อะไรคือความแตกต่างระหว่าง Protocol Buffers และ Flatbuffers?
ทั้งสองเป็นไลบรารีการทำให้เป็นอนุกรมและพัฒนาโดยนักพัฒนาของ Google มีความแตกต่างกันมากหรือไม่? การแปลงรหัสโดยใช้Protocol Buffersเป็นงานจำนวนมากเพื่อใช้FlatBuffersหรือไม่?

14
การติดตั้ง Google Protocol Buffers บน Mac
ฉันต้องการติดตั้ง Google Protocol Buffers (protobuf-2.4.1) เวอร์ชันเก่าบน Mac โดยใช้บรรทัดคำสั่ง Terminal ฉันลองใช้brew install protobufแต่เวอร์ชันล่าสุด 2.5.0 ได้รับการติดตั้งแล้ว เป็นไปได้ไหมที่จะติดตั้งเวอร์ชันเก่าจากเทอร์มินัล ขอบคุณ

2
TensorFlow บันทึกลงใน / โหลดกราฟจากไฟล์
จากสิ่งที่ฉันรวบรวมมาจนถึงตอนนี้มีหลายวิธีในการทิ้งกราฟ TensorFlow ลงในไฟล์แล้วโหลดลงในโปรแกรมอื่น แต่ฉันยังไม่พบตัวอย่าง / ข้อมูลที่ชัดเจนเกี่ยวกับวิธีการทำงาน สิ่งที่ฉันรู้อยู่แล้วคือ: บันทึกตัวแปรของโมเดลลงในไฟล์จุดตรวจ (.ckpt) โดยใช้ a tf.train.Saver()และเรียกคืนในภายหลัง (ที่มา ) บันทึกโมเดลลงในไฟล์. pb และโหลดกลับมาใช้tf.train.write_graph()และtf.import_graph_def()(ที่มา ) โหลดแบบจำลองจากไฟล์. pb ฝึกใหม่และถ่ายโอนข้อมูลลงในไฟล์. pb ใหม่โดยใช้ Bazel ( ซอร์ส ) ตรึงกราฟเพื่อบันทึกกราฟและน้ำหนักร่วมกัน (ที่มา ) ใช้as_graph_def()เพื่อบันทึกแบบจำลองและสำหรับน้ำหนัก / ตัวแปรให้จับคู่เป็นค่าคงที่ (ที่มา ) อย่างไรก็ตามฉันไม่สามารถไขข้อข้องใจเกี่ยวกับวิธีการต่างๆเหล่านี้ได้: เกี่ยวกับไฟล์จุดตรวจพวกเขาบันทึกเฉพาะน้ำหนักที่ฝึกแล้วของแบบจำลองหรือไม่? สามารถโหลดไฟล์จุดตรวจลงในโปรแกรมใหม่และใช้ในการรันโมเดลได้หรือไม่หรือใช้เป็นวิธีในการบันทึกน้ำหนักในโมเดลในช่วงเวลา / ขั้นตอนที่กำหนด เกี่ยวกับtf.train.write_graph()น้ำหนัก / ตัวแปรได้รับการบันทึกด้วยหรือไม่? เกี่ยวกับ Bazel สามารถบันทึกลงใน / โหลดจากไฟล์. pb เพื่อฝึกอบรมใหม่ได้หรือไม่? …

3
protobuf กับ gRPC
ฉันพยายามทำความเข้าใจ protobuf และ gRPC และฉันจะใช้ทั้งสองอย่างได้อย่างไร คุณช่วยฉันเข้าใจสิ่งต่อไปนี้ได้ไหม: พิจารณาโมเดล OSIว่าอะไรอยู่ที่ไหนเช่น Protobuf อยู่ที่เลเยอร์ 4? เมื่อนึกถึงการถ่ายโอนข้อความว่า "โฟลว์" เป็นอย่างไร gRPC กำลังทำอะไรในสิ่งที่ protobuf คิดถึง? หากผู้ส่งใช้ protobuf เซิร์ฟเวอร์จะใช้ gRPC ได้หรือไม่หรือ gRPC จะเพิ่มสิ่งที่เฉพาะไคลเอ็นต์ gRPC เท่านั้นที่สามารถส่งมอบได้ หาก gRPC สามารถทำให้การสื่อสารแบบซิงโครนัสและอะซิงโครนัสเป็นไปได้ Protobuf มีไว้สำหรับการมาร์แชลดังนั้นจึงไม่มีส่วนเกี่ยวข้องกับสถานะ - จริงหรือเท็จ? ฉันสามารถใช้ gRPC ในแอปพลิเคชันส่วนหน้าที่สื่อสารแทน REST หรือ GraphQL ได้หรือไม่ ฉันรู้แล้ว - หรือสมมติว่าฉันทำ - ว่า: Protobuf โปรโตคอลไบนารีสำหรับการแลกเปลี่ยนข้อมูล ออกแบบโดย Google …

4
จะกำหนดให้กับฟิลด์ที่ซ้ำได้อย่างไร?
ฉันใช้โปรโตคอลบัฟเฟอร์ใน python และฉันมีPersonข้อความ repeated uint64 id แต่เมื่อฉันพยายามกำหนดค่าให้มันเช่น: person.id = [1, 32, 43432] ฉันได้รับข้อผิดพลาด: Assigment not allowed for repeated field "id" in protocol message object จะกำหนดค่าให้กับฟิลด์ที่ซ้ำได้อย่างไร?

4
โปรโตคอลบัฟเฟอร์เทียบกับ JSON หรือ BSON [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการ1 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ใครมีข้อมูลเกี่ยวกับลักษณะการทำงานของ Protocol Buffers เทียบกับ BSON (binary JSON) หรือเทียบกับ JSON โดยทั่วไปหรือไม่? ขนาดสายไฟ ความเร็วอนุกรม ความเร็ว Deserialization สิ่งเหล่านี้ดูเหมือนจะเป็นโปรโตคอลไบนารีที่ดีสำหรับใช้ผ่าน HTTP ฉันแค่สงสัยว่าอะไรจะดีกว่าในระยะยาวสำหรับสภาพแวดล้อม C # นี่คือข้อมูลบางอย่างที่ผมได้อ่านบนBSONและพิธีสารบัฟเฟอร์

1
ฉันจะสร้างไฟล์ .proto หรือใช้ 'Code First gRPC' จากคลาส C # ได้อย่างไร
ฉันต้องการใช้ gRPC กับ. NET core 3 ในแอปพลิเคชันเว็บหลัก asp.net ฉันจะสร้างไฟล์ .proto ที่จำเป็นจากวัตถุคลาส C # และโมเดลที่มีอยู่ได้อย่างไร ฉันไม่ต้องการเขียนไฟล์ .proto อีกครั้งซึ่งทำมิเรอร์โค้ดที่มีอยู่ฉันต้องการให้ไฟล์. proto นั้นสร้างขึ้นโดยอัตโนมัติจากคลาสและวัตถุโมเดล ฉันเรียกวิธีนี้เพื่อลงทะเบียนระดับบริการของฉัน builder.MapGrpcService<MyGrpcService>(); public class MyGrpcService { public Task<string> ServiceMethod(ModelObject model, ServerCallContext context) { return Task.FromResult("It Worked"); } } ModelObjectมี[DataContract]และ[DataMember]มีคุณสมบัติการสั่งซื้อ เป็นไปได้ไหม ทุกตัวอย่างที่ฉันเห็นออนไลน์เริ่มต้นด้วย.protoไฟล์ ฉันได้กำหนดวิธีการบริการที่ต้องการในMyGrpcServiceชั้นเรียนแล้ว แต่นี่อาจจะย้อนกลับไปที่สิ่งที่เป็นวิธีมาตรฐานในการทำสิ่งต่าง ๆ ... สิ่งที่ต้องการการ remoting .NET แบบเก่านั้นเหมาะอย่างยิ่งที่คุณสามารถขออินเทอร์เฟซจากจุดปลายทางระยะไกลและใช้gRPCเพื่อสื่อสารไปมาอย่างน่าอัศจรรย์แต่บางทีมันอาจดูง่ายเกินไป
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.