1. ওভারভিউ
gRPC হল একটি ভাষা-নিরপেক্ষ, প্ল্যাটফর্ম-নিরপেক্ষ রিমোট প্রসিডিওর কল (RPC) ফ্রেমওয়ার্ক এবং Google-এ তৈরি টুলসেট। এটি আপনাকে প্রোটোকল বাফার ব্যবহার করে একটি পরিষেবা সংজ্ঞায়িত করতে দেয়, একটি বিশেষভাবে শক্তিশালী বাইনারি সিরিয়ালাইজেশন টুলসেট এবং ভাষা। তারপরে এটি আপনাকে বিভিন্ন ভাষায় আপনার পরিষেবা সংজ্ঞা থেকে ইডিওম্যাটিক ক্লায়েন্ট এবং সার্ভার স্টাব তৈরি করতে দেয়।
এই কোডল্যাবে, আপনি শিখবেন কিভাবে একটি C# পরিষেবা তৈরি করতে হয় যা gRPC ফ্রেমওয়ার্ক ব্যবহার করে একটি API প্রকাশ করে। আপনি C# এ লেখা একটি কনসোল ক্লায়েন্ট ব্যবহার করে এই পরিষেবাটির সাথে ইন্টারঅ্যাক্ট করেন যা পরিষেবার মতো একই পরিষেবার বিবরণ ব্যবহার করে।
আপনি কি শিখবেন
- প্রোটোকল বাফার ভাষা।
- কিভাবে C# ব্যবহার করে একটি gRPC পরিষেবা বাস্তবায়ন করবেন।
- কিভাবে C# ব্যবহার করে একটি gRPC ক্লায়েন্ট বাস্তবায়ন করবেন।
- কিভাবে একটি gRPC পরিষেবা আপডেট করবেন।
আপনি কি প্রয়োজন হবে
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স ।
- ভিজ্যুয়াল স্টুডিও 2013 বা তার পরে ইনস্টল করা হয়েছে।
- .NET ফ্রেমওয়ার্ক এবং C# ভাষার সাথে পরিচিতি।
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
Google ক্লাউড প্ল্যাটফর্মের সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবে?
2. ডাউনলোড করুন এবং gRPC C# নমুনা তৈরি করুন
নমুনা ডাউনলোড করুন এস
একটি জিপ ফাইল হিসাবে gRPC C# নমুনা সংগ্রহস্থল ডাউনলোড করুন এবং এটি বের করুন।
বিকল্পভাবে, আপনি এর গিট সংগ্রহস্থল ক্লোন করতে পারেন।
git clone https://github.com/meteatamel/grpc-samples-dotnet.git
যেভাবেই হোক, আপনার নিম্নলিখিত বিষয়বস্তু সহ একটি grpc-samples-dotnet
ফোল্ডার থাকা উচিত:
এস ওলিউশন তৈরি করুন
নমুনা অ্যাপ্লিকেশন ফোল্ডারে রয়েছে GrpcSamples.sln
, একটি ভিজ্যুয়াল স্টুডিও সমাধান। ভিজ্যুয়াল স্টুডিওতে সমাধান খুলতে ডাবল ক্লিক করুন। আপনি প্রকল্পের একটি সংখ্যা সঙ্গে একটি সমাধান দেখতে হবে.
আমরা পরবর্তী বিভাগে আরও বিস্তারিতভাবে প্রকল্পগুলির মধ্য দিয়ে যাব, তবে প্রথমে, আসুন কেবল প্রকল্পটি তৈরি করি। সমাধান তৈরি করতে Build > Build Solution
বা Ctrl + Shift + B
এ যান। এটি NuGet থেকে সমস্ত নির্ভরতা ডাউনলোড করবে এবং তারপরে অ্যাপ্লিকেশনটি কম্পাইল করবে।
শেষ পর্যন্ত, আপনি ভিজ্যুয়াল স্টুডিও কনসোল আউটপুটে একটি Build succeeded
বার্তা দেখতে পাবেন।
3. গ্রিটার নমুনা অন্বেষণ করুন
Greeter হল একটি সাধারণ gRPC নমুনা যেখানে একজন ক্লায়েন্ট একটি নাম সহ একটি অনুরোধ পাঠায় এবং সার্ভার নাম অনুসরণ করে একটি বার্তা দিয়ে প্রতিক্রিয়া জানায়। একটি গ্রিটার প্রজেক্ট রয়েছে যার মধ্যে রয়েছে সাধারণ পরিষেবা সংজ্ঞা (প্রোটো ফাইল) যার উপর ভিত্তি করে ক্লায়েন্ট এবং সার্ভার।
গ্রিটার প্রকল্প
এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ভাগ করা সাধারণ প্রকল্প। এটির একটি greeter.proto
রয়েছে যা gRPC পরিষেবার সংজ্ঞা যা ক্লায়েন্ট এবং সার্ভার ব্যবহার করে। পরিষেবার সংজ্ঞা GreetingService
নামে একটি gRPC পরিষেবাকে সংজ্ঞায়িত করে এবং এটিতে একটি greeting
পদ্ধতি রয়েছে যা HelloRequest
ইনপুট হিসাবে এবং HelloResponse
আউটপুট হিসাবে গ্রহণ করে।
service GreetingService {
rpc greeting(HelloRequest) returns (HelloResponse);
}
এটি একটি ইউনারী (অর্থাৎ কোন স্ট্রিমিং নয়) পদ্ধতি যেখানে ক্লায়েন্ট একটি একক অনুরোধ পাঠায় এবং সার্ভার থেকে একক প্রতিক্রিয়া পায়। আপনি greeter.proto.
এই প্রকল্পে generate_protos.bat
নামে একটি স্ক্রিপ্ট রয়েছে যা প্রোটো ফাইল থেকে ক্লায়েন্ট এবং সার্ভার স্টাব তৈরি করতে ব্যবহার করা যেতে পারে। প্রজেক্টে ইতিমধ্যেই জেনারেট করা ক্লায়েন্ট এবং সার্ভার স্টাব রয়েছে, তাই আপনাকে সেগুলি নিজে থেকে তৈরি করতে হবে না। যাইহোক, যদি আপনি পরিষেবা সংজ্ঞা ফাইল সম্পর্কে কিছু পরিবর্তন করেন, তাহলে আপনাকে স্টাবগুলি পুনরায় তৈরি করতে এই স্ক্রিপ্টটি চালাতে হবে।
গ্রিটার সার্ভার
এটি gRPC সার্ভারের জন্য প্রকল্প। Program.cs
হল প্রধান এন্ট্রিপয়েন্ট যেখানে পোর্ট এবং সার্ভার বাস্তবায়ন সেট আপ করা হয়। গুরুত্বপূর্ণ ক্লাস হল GreeterServiceImpl.cs
। এটিতে একটি greeting
পদ্ধতি রয়েছে যেখানে প্রকৃত কার্যকারিতা প্রয়োগ করা হয়।
public override Task<HelloResponse> greeting(HelloRequest request,
ServerCallContext context)
{
return Task.FromResult(new HelloResponse {
Greeting = "Hello " + request.Name });
}
গ্রিটার ক্লায়েন্ট
এটি gRPC পরিষেবার ক্লায়েন্ট দিক। এতে এন্ট্রিপয়েন্ট হিসেবে Program.cs
রয়েছে। এটি সার্ভারের সাথে কথা বলার জন্য একটি চ্যানেল তৈরি করে এবং তারপর জেনারেট করা স্টাব থেকে চ্যানেলের সাথে একটি ক্লায়েন্ট তৈরি করে। এটি তারপর একটি অনুরোধ তৈরি করে এবং ক্লায়েন্ট স্টাব ব্যবহার করে সার্ভারে পাঠায়।
4. গ্রিটার নমুনা চালান
প্রথমে, গ্রিটার সার্ভার শুরু করুন। একটি কমান্ড প্রম্পট খুলুন এবং গ্রিটার সার্ভারের bin > Debug
ফোল্ডারে নেভিগেট করুন এবং এক্সিকিউটেবল চালান। আপনি সার্ভার শুনতে দেখতে হবে.
> C:\grpc-samples-dotnet\GreeterServer\bin\Debug>GreeterServer.exe
GreeterServer listening on port 50051
Press any key to stop the 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. গ্রিটার নমুনা আপডেট করুন
আসুন দেখি আমাদের পরিষেবা আপডেট করা কেমন লাগে। আমাদের gRPC পরিষেবাতে একটি নতুন পদ্ধতি যোগ করুন যাকে বলা হয় গুডবাই যা ক্লায়েন্টকে হ্যালোর পরিবর্তে বিদায় দেয়।
প্রথম ধাপ হল সার্ভিস ডেফিনিশন ফাইল greeter.proto.
service GreetingService {
rpc greeting(HelloRequest) returns (HelloResponse);
rpc goodbye(HelloRequest) returns (HelloResponse);
}
এর পরে, আপনাকে ক্লায়েন্ট এবং সার্ভার স্টাবগুলি পুনরায় তৈরি করতে হবে। একটি কমান্ড প্রম্পটে, generate_protos.bat
চালান। একবার স্টাবগুলি তৈরি হয়ে গেলে, আপডেট করা কোড পেতে আপনাকে আপনার ভিজ্যুয়াল স্টুডিও প্রকল্পগুলিকে রিফ্রেশ করতে হতে পারে।
অবশেষে, নতুন পদ্ধতির সুবিধা নিতে ক্লায়েন্ট এবং সার্ভার কোড আপডেট করুন। পরিষেবাতে, 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. চ্যাট নমুনা অন্বেষণ করুন
সমাধানটিতে একটি ChatServer
এবং একটি ChatWindowsClient
প্রকল্পও রয়েছে। নাম অনুসারে, এটি একটি সাধারণ চ্যাট অ্যাপ্লিকেশনের জন্য একটি ক্লায়েন্ট এবং সার্ভার জুটি। Chat
প্রকল্পে chat.proto
নামে একটি পরিষেবা সংজ্ঞা ফাইল রয়েছে। এটি একটি chat
পদ্ধতির সাথে একটি ChatService
সংজ্ঞায়িত করে।
service ChatService {
rpc chat(stream ChatMessage) returns (stream ChatMessageFromServer);
}
এখানে গুরুত্বপূর্ণ বিষয় হল যে ইনকামিং এবং আউটগোয়িং চ্যাট বার্তা উভয়ই stream
কীওয়ার্ড দিয়ে চিহ্নিত করা হয়। এটি মূলত সংযোগটিকে একটি দ্বিমুখী প্রবাহে পরিণত করে যেখানে ক্লায়েন্ট এবং সার্ভার যে কোনো সময় একে অপরকে বার্তা পাঠাতে পারে; একটি চ্যাট অ্যাপ্লিকেশনের জন্য নিখুঁত সমাধান.
এটি একটি ব্যায়াম হিসাবে কীভাবে কাজ করে তা দেখতে আপনি নমুনাটি আরও অন্বেষণ করতে পারেন, এটি তৈরি করতে এবং চালাতে পারেন।
7. অভিনন্দন!
আমরা কভার করেছি কি
- প্রোটোকল বাফার ভাষা।
- কিভাবে C# ব্যবহার করে একটি gRPC পরিষেবা বাস্তবায়ন করবেন।
- কিভাবে C# ব্যবহার করে একটি gRPC ক্লায়েন্ট বাস্তবায়ন করবেন।
- কিভাবে একটি gRPC পরিষেবা আপডেট করবেন।
পরবর্তী পদক্ষেপ
- Google ক্লাউড প্ল্যাটফর্মে Windows সম্পর্কে আরও জানুন।
- Google ক্লাউড প্ল্যাটফর্মে .NET সম্পর্কে আরও জানুন।
- ভিজ্যুয়াল স্টুডিওর জন্য ক্লাউড টুলস সম্পর্কে আরও জানুন।