ฉันจะสร้างไฟล์ .proto หรือใช้ 'Code First gRPC' จากคลาส C # ได้อย่างไร


9

ฉันต้องการใช้ 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เพื่อสื่อสารไปมาอย่างน่าอัศจรรย์แต่บางทีมันอาจดูง่ายเกินไป


ฉันพบว่าวิดีโอนี้มีประโยชน์มากในการเริ่มต้นกับ gRPC
RobIII

1
ใช่ "วิธีมาตรฐานในการทำสิ่งต่าง ๆ " กับ gRPC คือการระบุ spec .proto ก่อนจากนั้นใช้ตัวสร้างโค้ดเพื่อสร้างรหัสที่จำเป็น
phuzi

ขอบคุณสำหรับลิงค์วิดีโอฉันใช้เวลาสองสามวันที่ผ่านมาเพื่อทำความคุ้นเคยกับวิธีการทำงานของไฟล์ .proto และ gRPC เพียงมีอินเตอร์เฟสและวัตถุจำลองจำนวนมากที่ฉันหวังว่าจะได้รับ แต่อาจไม่มีการเขียนตัวตัดคำซ้ำอีกครั้งและสร้างไฟล์ .proto ด้วยเครื่องมือหรือล้มเหลวซึ่งการเขียนไฟล์. proto ด้วยมือ
jjxtra

สำหรับ C # ถึง C # interop, AddCodeFirstGrpc จาก protobuf-net.Grpc เป็นวิธีที่จะไป ไคลเอนต์สามารถเข้าถึงบริการ Grpc ด้วยอินเทอร์เฟซ ip และพอร์ตโดยใช้ protobuf-net.Grpc หากคุณ แต่คุณต้อง interop ของภาษาอื่น ๆ บางโทร C # บริการ grpc ของคุณคุณสามารถสร้าง .proto จากรหัส C # ให้ดูstackoverflow.com/questions/1334659/...
jjxtra

คำตอบ:


5

คุณสามารถใช้ Marc Gravell protobuf-net.Grpcสำหรับสิ่งนี้ การมีประสบการณ์รหัสครั้งแรกเมื่อสร้างบริการ gRPC เป็นกรณีการใช้งานที่แน่นอนว่าทำไมเขาเริ่มทำงานกับมัน มันสร้างด้านบนprotobuf-netซึ่งเพิ่มความสามารถในการเป็นอันดับระหว่าง C # ประเภทและ protobuf แล้ว

ตรวจสอบเอกสารประกอบเพื่อดูวิธีเริ่มต้นใช้งานห้องสมุดหรือแม้กระทั่งดู Marc นำเสนอหัวข้อนี้ในหนึ่งในบันทึกต่อไปนี้ของการสนทนาของเขา“ การพูดคุยระหว่างบริการกับ gRPC และเคล็ดลับอื่น ๆ ”:

ฉันคิดว่าเขาอัปเดตอันที่จริงในเดือนกันยายนสำหรับบิตการเปิดตัวของ. NET Core 3.0 ดังนั้นนั่นอาจเป็นเวอร์ชันที่อัปเดตมากกว่า

นอกจากนี้ยังมีตัวอย่างโค้ดสองสามตัวอย่างเพื่อดูว่าลักษณะนี้เป็นอย่างไรเมื่อคุณตั้งค่า


ขอบคุณฉันจะมีนาฬิกาหวังว่าส่วนใหญ่จะเป็นอัตโนมัติ
jjxtra

วิดีโอเครื่องหมาย 1 ชั่วโมงและ 2 นาทีเป็นที่ที่เขาเริ่มพูดถึงโค้ดก่อน
jjxtra

ชิ้นส่วนของลูกค้าดูสมบูรณ์แบบเช่นเดียวกับ. NET remoting, ยังคงพยายามค้นหาตำแหน่งที่เขาติดตั้งเซิร์ฟเวอร์ :)
34411

ฉันคิดว่าเป็นการดีที่สุดที่จะดูเอกสารประกอบสำหรับสิ่งนั้น มีคำอธิบายทีละขั้นตอนที่ :)
โผล่

1
@jjxtra มี "การเริ่มต้น" และตัวอย่างทั้งหมดจากการเจรจาใน GitHub
Marc Gravell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.