1. खास जानकारी
gRPC, Google ने बनाया है. यह एक ऐसा रिमोट प्रोसीजर कॉल (आरपीसी) फ़्रेमवर्क और टूलसेट है जो किसी भी भाषा और प्लैटफ़ॉर्म पर काम करता है. इसकी मदद से, प्रोटोकॉल बफ़र का इस्तेमाल करके कोई सेवा तय की जा सकती है. प्रोटोकॉल बफ़र, बाइनरी सीरियलाइज़ेशन का एक बहुत ही शक्तिशाली टूलसेट और भाषा है. इसके बाद, यह आपको कई भाषाओं में, सेवा की परिभाषा से मुहावरेदार क्लाइंट और सर्वर स्टब जनरेट करने की सुविधा देता है.
इस कोडलैब में, आपको gRPC फ़्रेमवर्क का इस्तेमाल करके, एपीआई को ऐक्सेस करने वाली C# सेवा बनाने का तरीका बताया गया है. इस सेवा के साथ इंटरैक्ट करने के लिए, C# में लिखा गया कंसोल क्लाइंट इस्तेमाल किया जाता है. यह सेवा के ब्यौरे का इस्तेमाल करता है.
आपको क्या सीखने को मिलेगा
- प्रोटोकॉल बफ़र की भाषा.
- C# का इस्तेमाल करके, gRPC सेवा को लागू करने का तरीका.
- C# का इस्तेमाल करके, gRPC क्लाइंट को लागू करने का तरीका.
- gRPC सेवा को अपडेट करने का तरीका.
आपको किन चीज़ों की ज़रूरत होगी
- कोई ब्राउज़र, जैसे कि Chrome या Firefox.
- Visual Studio 2013 या इसके बाद का वर्शन इंस्टॉल किया गया हो.
- .NET फ़्रेमवर्क और C# भाषा की जानकारी होना.
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Google Cloud Platform इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?
2. gRPC C# के सैंपल डाउनलोड और बिल्ड करना
सैंपलs डाउनलोड करें
gRPC C# का सैंपल रिपॉज़िटरी को ZIP फ़ाइल के तौर पर डाउनलोड करें और उसे एक्सट्रैक्ट करें.
इसके अलावा, इसकी गिट रिपॉज़िटरी को क्लोन किया जा सकता है.
git clone https://github.com/meteatamel/grpc-samples-dotnet.git
दोनों ही तरीकों में, आपके पास grpc-samples-dotnet फ़ोल्डर होना चाहिए. इसमें यह कॉन्टेंट होना चाहिए:

समाधान तैयार करना
सेंपल ऐप्लिकेशन फ़ोल्डर में GrpcSamples.sln होता है, जो Visual Studio का समाधान है. Visual Studio में समाधान खोलने के लिए, दो बार क्लिक करें. आपको कई प्रोजेक्ट वाला समाधान दिखेगा.

हम अगले सेक्शन में प्रोजेक्ट के बारे में ज़्यादा जानकारी देंगे. हालांकि, पहले प्रोजेक्ट बनाते हैं. समाधान बनाने के लिए, Build > Build Solution या Ctrl + Shift + B पर जाएं. इससे NuGet से सभी डिपेंडेंसी डाउनलोड हो जाएंगी. इसके बाद, ऐप्लिकेशन कंपाइल हो जाएगा.
आखिर में, आपको Visual Studio कंसोल आउटपुट में Build succeeded मैसेज दिखेगा.
3. Greeter सैंपल को एक्सप्लोर करना
Greeter, gRPC का एक सामान्य सैंपल है. इसमें क्लाइंट, नाम के साथ अनुरोध भेजता है और सर्वर, नाम के साथ मैसेज भेजकर जवाब देता है. एक Greeter प्रोजेक्ट है. इसमें सामान्य सेवा की परिभाषा (प्रोटो फ़ाइल) शामिल है. क्लाइंट और सर्वर इसी पर आधारित हैं.
Greeter Project
यह क्लाइंट और सर्वर के बीच शेयर किया गया सामान्य प्रोजेक्ट है. इसमें greeter.proto होता है, जो gRPC सेवा की परिभाषा है. इसका इस्तेमाल क्लाइंट और सर्वर करते हैं. सेवा की परिभाषा में, GreetingService नाम की gRPC सेवा के बारे में बताया गया है. इसमें greeting नाम का एक तरीका है, जो HelloRequest को इनपुट के तौर पर लेता है और HelloResponse को आउटपुट के तौर पर देता है.
service GreetingService {
rpc greeting(HelloRequest) returns (HelloResponse);
}
यह एक यूनेरी (यानी कि कोई स्ट्रीमिंग नहीं) तरीका है. इसमें क्लाइंट एक अनुरोध भेजता है और सर्वर से एक जवाब मिलता है. greeter.proto. के बाकी कॉन्टेंट को एक्सप्लोर किया जा सकता है. इस प्रोजेक्ट में generate_protos.bat नाम की एक स्क्रिप्ट भी है. इसका इस्तेमाल, proto फ़ाइल से क्लाइंट और सर्वर स्टब जनरेट करने के लिए किया जा सकता है. प्रोजेक्ट में पहले से ही जनरेट किए गए क्लाइंट और सर्वर स्टब मौजूद हैं. इसलिए, आपको इन्हें खुद जनरेट करने की ज़रूरत नहीं है. हालांकि, अगर आपने सेवा की परिभाषा वाली फ़ाइल में कोई बदलाव किया है, तो आपको स्टब फिर से जनरेट करने के लिए, इस स्क्रिप्ट को चलाना होगा.
Greeter Server
यह gRPC सर्वर के लिए प्रोजेक्ट है. Program.cs मुख्य एंट्रीपॉइंट है, जहां पोर्ट और सर्वर को लागू करने की सुविधा सेट अप की जाती है. GreeterServiceImpl.cs सबसे अहम क्लास है. इसमें greeting तरीका है, जहां असल फ़ंक्शन लागू किया जाता है.
public override Task<HelloResponse> greeting(HelloRequest request,
ServerCallContext context)
{
return Task.FromResult(new HelloResponse {
Greeting = "Hello " + request.Name });
}
Greeter Client
यह gRPC सेवा का क्लाइंट साइड है. इसमें Program.cs को एंट्रीपॉइंट के तौर पर भी इस्तेमाल किया जाता है. यह सर्वर से बातचीत करने के लिए एक चैनल बनाता है. इसके बाद, जनरेट किए गए स्टब से चैनल के साथ एक क्लाइंट बनाता है. इसके बाद, यह एक अनुरोध बनाता है और क्लाइंट स्टब का इस्तेमाल करके, उसे सर्वर पर भेजता है.
4. शुभकामना देने वाले चैटबॉट का सैंपल चलाएं
सबसे पहले, Greeter Server शुरू करें. कमांड प्रॉम्प्ट खोलें और Greeter Server के bin > Debug फ़ोल्डर पर जाएं. इसके बाद, एक्ज़ीक्यूटेबल फ़ाइल चलाएं. आपको सर्वर की जानकारी दिखेगी.
> C:\grpc-samples-dotnet\GreeterServer\bin\Debug>GreeterServer.exe
GreeterServer listening on port 50051
Press any key to stop the server...
इसके बाद, Greeter Client चलाएं. अलग कमांड प्रॉम्प्ट में, Greeter Server के bin > Debug फ़ोल्डर पर जाएं और एक्ज़ीक्यूटेबल फ़ाइल चलाएं. आपको अनुरोध भेजने वाला क्लाइंट और सर्वर से जवाब पाने वाला क्लाइंट दिखना चाहिए.
> C:\grpc-samples-dotnet\GreeterClient\bin\Debug>GreeterClient.exe
GreeterClient sending request
GreeterClient received response: Hello Mete - on C#
Press any key to exit...
5. Greeter सैंपल को अपडेट करना
आइए, देखते हैं कि हमारी सेवा को अपडेट करने पर कैसा दिखता है. हमारी gRPC सेवा में goodbye नाम का एक नया तरीका जोड़ें. यह क्लाइंट को hello के बजाय goodbye दिखाता है.
पहला चरण, सेवा की परिभाषा वाली फ़ाइल greeter.proto. को अपडेट करना है
service GreetingService {
rpc greeting(HelloRequest) returns (HelloResponse);
rpc goodbye(HelloRequest) returns (HelloResponse);
}
इसके बाद, आपको क्लाइंट और सर्वर स्टब फिर से जनरेट करने होंगे. कमांड प्रॉम्प्ट में, generate_protos.bat चलाएं. स्टब जनरेट होने के बाद, अपडेट किया गया कोड पाने के लिए, आपको Visual Studio प्रोजेक्ट रीफ़्रेश करने पड़ सकते हैं.
आखिर में, नए तरीके का फ़ायदा पाने के लिए, क्लाइंट और सर्वर कोड को अपडेट करें. सेवा में, GreeterServiceImpl.cs अपडेट करें और goodbye का नया तरीका जोड़ें.
public override Task<HelloResponse> goodbye(HelloRequest request,
ServerCallContext context)
{
return Task.FromResult(new HelloResponse {
Greeting = "Goodbye " + request.Name });
}
क्लाइंट में, Program.cs. में मौजूद goodbye तरीके को कॉल करें
response = client.goodbye(request);
Console.WriteLine("GreeterClient received response: "
+ response.Greeting);
प्रोजेक्ट को फिर से बनाएं और सर्वर और क्लाइंट को फिर से चलाएं. अब आपको दिखेगा कि क्लाइंट को अलविदा कहने वाला मैसेज मिल गया है.
> C:\grpc-samples-dotnet\GreeterClient\bin\Debug>GreeterClient.exe
GreeterClient sending request
GreeterClient received response: Hello Mete - on C#
GreeterClient received response: Goodbye Mete - on C#
Press any key to exit...
6. Chat का सैंपल एक्सप्लोर करना
इस समाधान में ChatServer और ChatWindowsClient प्रोजेक्ट भी शामिल हैं. जैसा कि नाम से पता चलता है, यह एक सामान्य चैट ऐप्लिकेशन के लिए क्लाइंट और सर्वर का पेयर है. Chat प्रोजेक्ट में, chat.proto नाम की सेवा की परिभाषा वाली फ़ाइल मौजूद है. यह chat को chat तरीके से तय करता है.ChatService
service ChatService {
rpc chat(stream ChatMessage) returns (stream ChatMessageFromServer);
}
यहां यह ध्यान रखना ज़रूरी है कि आने वाले और भेजे जाने वाले, दोनों तरह के चैट मैसेज को stream कीवर्ड से मार्क किया जाता है. इससे कनेक्शन, दोनों दिशाओं में डेटा ट्रांसफ़र करने वाली स्ट्रीम में बदल जाता है. इसमें क्लाइंट और सर्वर, एक-दूसरे को किसी भी समय मैसेज भेज सकते हैं. यह चैट ऐप्लिकेशन के लिए सबसे सही समाधान है.
आपके पास इस सैंपल को और एक्सप्लोर करने का विकल्प होता है. साथ ही, इसे बनाकर और चलाकर यह देखा जा सकता है कि यह कसरत के तौर पर कैसे काम करता है.
7. बधाई हो!
हमने क्या-क्या बताया
- प्रोटोकॉल बफ़र लैंग्वेज.
- C# का इस्तेमाल करके, gRPC सेवा को लागू करने का तरीका.
- C# का इस्तेमाल करके, gRPC क्लाइंट को लागू करने का तरीका.
- gRPC सेवा को अपडेट करने का तरीका.
अगले चरण
- Google Cloud Platform पर Windows के बारे में ज़्यादा जानें.
- Google Cloud Platform पर.NET के बारे में ज़्यादा जानें.
- Cloud Tools for Visual Studio के बारे में ज़्यादा जानें.