मैं .pro फाइलें कैसे उत्पन्न करता हूं या C # कक्षाओं से 'कोड फर्स्ट जीआरपीसी' का उपयोग करता हूं?


9

मैं asp.net कोर वेब एप्लिकेशन में .NET कोर 3 के साथ gRPC का उपयोग करना चाहता हूं। मैं एक मौजूदा C # वर्ग और मॉडल ऑब्जेक्ट से आवश्यक .proto फ़ाइल कैसे उत्पन्न करूं? मैं एक .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कक्षा में अपनी इच्छित सेवा विधियों को पहले ही परिभाषित कर लिया है । लेकिन शायद यह सिर्फ पीछे की ओर है कि चीजों को करने का मानक तरीका क्या है ...

पुराने .NET रीमोटिंग की तरह कुछ आदर्श होगा जहां आप बस एक दूरस्थ अंत बिंदु से एक इंटरफ़ेस के लिए पूछ सकते हैं और यह जादुई रूप gRPCसे आगे और पीछे संवाद करने के लिए उपयोग करता है, लेकिन शायद यह बहुत सरल है।


मुझे यह वीडियो जीआरपीसी के साथ आरंभ करने में बहुत मददगार लगा।
रोब आठ

1
हां, जीआरपीसी के साथ "चीजों को करने का मानक तरीका" है। पहले कल्पना को निर्दिष्ट करें और फिर आवश्यक कोड बनाने के लिए एक कोड जनरेटर का उपयोग करें।
15

वीडियो लिंक के लिए धन्यवाद, मैंने पहले से ही पिछले कुछ दिनों का समय बिताया है कि कैसे .proto फ़ाइलों और gRPC कार्यों से परिचित होने के लिए, बस बड़ी संख्या में इंटरफेस और मॉडल ऑब्जेक्ट हैं जिनके साथ मैं कुछ ऑटो-टूलिंग प्राप्त करने की उम्मीद कर रहा था ... लेकिन हो सकता है कि किसी रैपर को दोबारा लिखने और उत्पन्न करने के आसपास कोई फाइल न हो। किसी टूल के साथ फाइल करना या असफल हो जाना। मैन्युअल रूप से लिखी जाने वाली फाइल को लिखना।
jjxtra

C # से C # इंटरोप के लिए, AddCodeFirstGrpc को protobuf-net.Grpc से जाने का रास्ता है। क्लाइंट तब ग्रोबपीसी सेवा को सिर्फ एक इंटरफेस, आईपी और पोर्ट के साथ प्रोटोबुफ़-नेट.गर्क्स का उपयोग करके एक्सेस कर सकता है। यदि आपको अपनी C # grpc सेवा को कॉल करने वाली किसी अन्य भाषा के इंटरोप की आवश्यकता है, तो आप C # कोड से .proto उत्पन्न कर सकते हैं, stackoverflow.com/questions/1334659/… देखें ।
jjxtra

जवाबों:


5

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

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

मुझे लगता है कि उसने वास्तव में .NET कोर 3.0 के रिलीज बिट्स के लिए सितंबर में एक को अपडेट किया था, इसलिए शायद यह अधिक अपडेटेड संस्करण होगा।

यह देखने के लिए कुछ कोड नमूने भी हैं कि जब आप इसे सेट करते हैं तो यह कैसा दिखता है।


धन्यवाद मेरे पास एक घड़ी होगी, उम्मीद है कि इसमें से अधिकांश को स्वचालित किया जा सकता है
jjxtra

वीडियो 1 घंटे और 2 मिनट का निशान है जहां वह कोड के बारे में बात करना शुरू करता है
jjxtra

क्लाइंट साइड पीस एकदम सही लगता है। जैसे कि .NET रीमोटिंग, फिर भी वह खोजने की कोशिश कर रहा है कि वह सर्वर कहाँ सेट करता है :)
jjxtra

मुझे लगता है कि इसके लिए प्रलेखन की जांच करना सबसे अच्छा है। उस पर एक चरण-दर-चरण स्पष्टीकरण है :)
प्रहार

1
@jjxtra वहाँ एक "शुरू हो रही है" और वार्ता, GitHub पर से उदाहरण के सभी
मार्क Gravell
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.