এই নিবন্ধে, আমি মঙ্গোডিবি-র জন্য C# টেস্টকন্টেইনারগুলির মাধ্যমে আপনাকে গাইড করব! আমি স্থানীয় ডাটাবেস কাজের জন্য Testcontainers ব্যবহার করতে পছন্দ করি যখন আমি একটি ডাটাবেস স্পিনিং এবং ছিঁড়ে ফেলার ওভারহেড পরিচালনার বিষয়ে বা ক্লাউডে কিছু পরিচালনা করার বিষয়ে চিন্তা করতে চাই না। MongoDB এখানেও ব্যতিক্রম নয় কারণ C# Testcontainers NuGet প্যাকেজটি MongoDB-এর জন্য আমাদের কাছে কাজ করার স্বপ্ন।
এই নিবন্ধে, আমি আপনাকে Testcontainers এর মূল বিষয়গুলির সাথে পরিচয় করিয়ে দেব। সেখান থেকে, C# MongoDB.Driver NuGet প্যাকেজের মাধ্যমে আপনার নতুন তৈরি করা ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করা কতটা সহজ তা আমি প্রদর্শন করব — প্রায় যেমন আপনি জানতেও পারবেন না সেখানে একটি কন্টেইনার তৈরি হয়েছে! এর মধ্যে ডুব দেওয়া যাক.
Testcontainers হল একটি দুর্দান্ত NuGet প্যাকেজ যা .NET অ্যাপ্লিকেশন তৈরি করার সময় আপনার পরীক্ষা এবং স্থানীয় উন্নয়ন কর্মপ্রবাহকে ব্যাপকভাবে উন্নত করতে পারে। এটি ডকার কন্টেইনারগুলি পরিচালনা করার একটি সহজ এবং কার্যকর উপায় সরবরাহ করে, আপনাকে হালকা ওজনের এবং বিচ্ছিন্ন উদাহরণগুলিকে ঘুরতে দেয় এবং সেগুলিকে এমনভাবে ছিঁড়ে ফেলতে দেয় যেন কিছুই ঘটেনি!
এর অর্থ টেস্টকন্টেইনারগুলির সাথে, আপনাকে আর পরীক্ষার ডেটাবেস সেট আপ এবং ছিঁড়ে ফেলা বা জটিল কনফিগারেশন ফাইলগুলির সাথে কাজ করার বিষয়ে চিন্তা করতে হবে না। এটি কন্টেইনার পরিচালনার সমস্ত বিবরণ পরিচালনা করে, এই প্রক্রিয়াটিকে তুচ্ছ মনে করে — আমি নিশ্চিত যে এটি ম্যানুয়ালি পরিচালনা করতে চাই না।
টেস্টকন্টেইনারের কিছু মূল সুবিধার মধ্যে রয়েছে:
এই নিবন্ধটির জন্য, আমরা বিশেষভাবে MongoDB-এর জন্য C# Testcontainers কীভাবে ব্যবহার করতে পারি সেদিকে মনোযোগ দেব। এখানে কভার করা বেশিরভাগ পরামর্শ অন্যান্য পরিষেবার জন্য প্রযোজ্য হবে, বিশেষ করে ডাটাবেস, কিন্তু আমরা আমাদের দর্শনীয় স্থানগুলি MongoDB-তে রাখব।
C# এ Testcontainers দিয়ে শুরু করতে, আপনাকে আপনার প্রকল্পে প্রয়োজনীয় নির্ভরতাগুলি ইনস্টল এবং কনফিগার করতে হবে। C# এ MongoDB-এর জন্য Testcontainers সেট আপ করতে নিচের ধাপগুলি অনুসরণ করুন।
সাধারণত, প্রথম পদক্ষেপটি আপনার C# প্রকল্পে Testcontainers NuGet প্যাকেজ ইনস্টল করা হবে। আপনি NuGet প্যাকেজ ম্যানেজার কনসোল খুলবেন এবং নিম্নলিখিত কমান্ডটি চালাবেন:
Install-Package Testcontainers
যাইহোক, আমাদের এই প্যাকেজের মঙ্গোডিবি ফ্লেভার দরকার (আমি লেখার সময় সংস্করণ 3.8.0 ব্যবহার করছি) যার মধ্যে বেস টেস্টকন্টেইনার প্যাকেজ রয়েছে। আপনি প্যাকেজ ম্যানেজার ইউজার ইন্টারফেসের মাধ্যমে বা এই কমান্ডের মাধ্যমে এটি ইনস্টল করতে পারেন:
Install-Package Testcontainers.MonogoDB
একবার আপনি Testcontainers ইনস্টল করলে, আপনাকে MongoDB এর জন্য এটি কনফিগার করতে হবে। এর মধ্যে প্রয়োজনীয় সেটিংস সহ একটি MongoDB কন্টেইনার সেট আপ করা জড়িত৷ আপনি কিভাবে C# এ MongoDB-এর জন্য Testcontainers কনফিগার করতে পারেন তার একটি উদাহরণ এখানে দেওয়া হল:
using Testcontainers.MongoDb; MongoDbContainer container = new MongoDbBuilder() .WithImage("mongo:latest") .Build();
উপরের উদাহরণে, আমরা MongoDbBuilder
এর একটি নতুন উদাহরণ তৈরি করি এবং MongoDB ইমেজ এবং পোর্ট বাইন্ডিং নির্দিষ্ট করি। WithImage
পদ্ধতিটি MongoDB কন্টেইনারের জন্য ইমেজ সেট করে, তাই "mongo:latest" ব্যবহার করলে সর্বদা লেটেস্ট ইমেজ টানবে।
ঐচ্ছিকভাবে, আমরা কোন পোর্টগুলি স্পষ্টভাবে ব্যবহার করতে চাই তা কনফিগার করতে আমরা পোর্ট বাইন্ডিং ব্যবহার করতে পারি:
using Testcontainers.MongoDb; MongoDbContainer container = new MongoDbBuilder() .WithImage("mongo:latest") .WithPortBinding(1337, 27017) .Build();
উপরের কোডটি WithPortBinding
পদ্ধতি ব্যবহার করে কন্টেইনারের পোর্ট 27017 কে হোস্ট মেশিনের পোর্ট 1337-এর সাথে আবদ্ধ করে। আমরা আসন্ন বিভাগগুলিতে দেখব যে পোর্টগুলি বাঁধার জন্য আপনার নির্দিষ্ট প্রয়োজন না থাকলে, আপনি সম্ভবত এটিকে ছেড়ে দিতে পারেন। আমরা একটি গতিশীল সংযোগ স্ট্রিং পেতে পারি, যা খুব সুবিধাজনক!
MongoDB-এর জন্য Testcontainers কনফিগার করার পরে, আপনি প্রয়োজন অনুযায়ী ধারকটি শুরু এবং বন্ধ করতে পারেন। কন্টেইনার শুরু এবং বন্ধ করার জন্য এখানে কোড উদাহরণ রয়েছে:
MongoDB কন্টেইনার শুরু করতে:
await container.StartAsync();
MongoDB কন্টেইনার বন্ধ করতে:
await _container.StopAsync();
মনে রাখবেন MongoDbContainer প্রকারটি নিষ্পত্তি করা যেতে পারে, তাই আপনি প্রস্তুত হলে পরিষ্কার করতে DisposeAsync
কল করুন।
এখন যেহেতু আমরা দেখেছি কিভাবে কন্টেইনারগুলিকে স্পিন করা যায় এবং ছিঁড়ে ফেলা যায়, তাদের সাথে আমাদের কী করার কথা? আমাদের কাছে প্রচুর বিকল্প রয়েছে এবং সত্যই, সীমা হল আপনার নিজের কল্পনা (এবং সময়, অর্থ এবং অন্যান্য সংস্থান...)!
ইন্টিগ্রেশন বা কার্যকরী পরীক্ষা লেখার জন্য বেশিরভাগ লোকই C# টেস্টকন্টেইনার ব্যবহার করে। আপনি টেস্টকন্টেইনারগুলিকে xUnit বা NUnit-এর সাথে মেলাতে পারেন, উদাহরণস্বরূপ, এবং একটি বাস্তব ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করে এমন পরীক্ষা লিখতে পারেন।
আমার জন্য, আমাকে মঙ্গোডিবি-র জন্য বেঞ্চমার্কডটনেট পর্যন্ত তারের সি# টেস্টকন্টেইনার যেতে হবে যাতে আমি মঙ্গোডিবি-তে রেকর্ড ঢোকানোর বেঞ্চমার্ক করতে পারি! একটি অনুরূপ ব্যবহারের ক্ষেত্রে যেখানে আমার ক্ষণস্থায়ী স্থানীয় ডাটাবেসগুলির প্রয়োজন ছিল, কিন্তু অগত্যা একটি পরীক্ষার কাঠামোর জন্য নয়।
যাই হোক না কেন, আমাদের C# থেকে এই MongoDB ডাটাবেস কন্টেইনারগুলির সাথে সংযোগ করতে সক্ষম হতে হবে এবং এই পরবর্তী উপবিভাগগুলি তা কভার করবে।
ধরা যাক আপনি আগের বিভাগগুলো পড়েছেন এবং টেস্টকন্টেইনারের জন্য আপনার সঠিক মঙ্গোডিবি প্যাকেজ ইনস্টল করা আছে। আপনি যদি এই বিভাগে এগিয়ে যান, ফিরে যান, এটি পড়ুন এবং সঠিক প্যাকেজ পান। অন্যথায়, আপনি কেন সঠিক নির্ভরতা খুঁজে পাচ্ছেন না তা নিয়ে আপনার মাথা ঘামাবে!
আপনাকে MongoDB.Driver NuGet প্যাকেজ ইনস্টল করতে হবে। আমরা যে ডাটাবেস কন্টেইনারে সংযোগ স্থাপন করতে ব্যবহার করতে যাচ্ছি সেটাই। সাধারণভাবে MongoDB.Driver কিভাবে কাজ করে সে সম্পর্কে আপনি আরও ব্যাখ্যা চাইলে আমার কাছে অন্যান্য নিবন্ধ আছে আপনি পড়তে পারেন:
সঠিক প্যাকেজগুলি যাওয়ার জন্য প্রস্তুত হলে, আমরা কিছু মঙ্গোডিবি ড্রাইভার কোডের সাথে আগে দেখা কোডটি একত্রিত করে জিনিসগুলিকে একত্রিত করতে পারি:
using MongoDB.Bson; using MongoDB.Driver; using Testcontainers.MongoDb; MongoDbContainer container = new MongoDbBuilder() .WithImage("mongo:latest") .Build(); await container.StartAsync(); string connectionString = container.GetConnectionString(); MongoClient mongoClient = new MongoClient(connectionString); IMongoDatabase database = mongoClient.GetDatabase("test"); IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("test");
উপরের উদাহরণে, আমরা Testcontainers থেকে সদ্য স্প্যান-আপ MongoDB কন্টেইনারে GetConnectionString()
কল করতে পারি। এই সম্পর্কে দুর্দান্ত অংশটি হল যে আপনি এই কোডে এবং এর আগে নিবন্ধে যে বিল্ডার প্যাটার্নটি দেখেছি তা ব্যবহার করে আপনি MongoDB-এর জন্য আপনার Testcontainer যেভাবে কনফিগার করেন না কেন, GetConnectionString()
আপনাকে সংযোগ করতে যা প্রয়োজন তা পাবেন।
যেহেতু MongoClient
একটি সংযোগ স্ট্রিংকে একটি একক যুক্তি হিসাবে গ্রহণ করে, তাই মঙ্গোডিবি ডাটাবেসে অ্যাক্সেস পাওয়ার জন্য এটির সাথে এখনই কাজ শুরু করা তুচ্ছ!
এখন যেহেতু আমাদের মঙ্গোডিবি টেস্টকন্টেইনার সেট আপ করা আছে এবং আমাদের কাছে এটির সাথে সংযুক্ত একটি MongoClient
রয়েছে, আমরা এটিতে CRUD ক্রিয়াকলাপ সম্পাদন করা শুরু করতে পারি। কনটেইনার ইন্সট্যান্স দ্বারা প্রদত্ত সংযোগের বিবরণ এই দুটি জিনিসকে একত্রিত করাকে একটি হাওয়া বানিয়েছে এবং সত্যিকার অর্থে, আমরা শুধুমাত্র MongoDB.Driver পদ্ধতিতে CRUD কলের উপর ফোকাস করতে পারি।
এখানে একটি সাধারণ CRUD অপারেশন করার একটি উদাহরণ রয়েছে:
// using code from earlier examples... // Create await collection.InsertOneAsync(new BsonDocument() { ["Name"] = "Nick Cosentino", }); // Read var filterBuilder = Builders<BsonDocument>.Filter; var filter = filterBuilder.Eq("Name", "Nick Cosentino"); var results = collection.Find(filter); // Update var updateBuilder = Builders<BsonDocument>.Update; var update = updateBuilder.Set("Name", "Dev Leader"); collection.UpdateOne(filter, update); // Delete filter = filterBuilder.Eq("Name", "Dev Leader"); collection.DeleteOne(filter);
পূর্ববর্তী কোড স্নিপেটগুলি ব্যবহার করে, আমরা ইতিমধ্যেই আমাদের MongoDB কন্টেইনার উদাহরণ এবং একটি MongoClient
নিয়ে কাজ করছিলাম। ফলস্বরূপ, আপনি উপরের কোড স্নিপেটে দেখতে পাচ্ছেন যে আমরা সরাসরি আমাদের IMongoCollection<BsonDocument>
এর সাথে কাজ করতে পারি যা আমরা পূর্বের সেটআপ থেকে পেয়েছি।
এটি ব্যাখ্যা করতে সাহায্য করে যে একবার আপনার MongoDB ডকার কন্টেইনার চালু হয়ে গেলে এবং Testcontainers-এর মাধ্যমে চালু হয়ে গেলে, আপনি এটির সাথে সংযোগ করার পরে আপনাকে কোনো বিশেষ উপায়ে আচরণ করতে হবে না!
উপসংহারে, MongoDB-এর জন্য C# Testcontainers হল একটি ক্ষণস্থায়ী MongoDB ডেটা সঞ্চয় করার এবং আপনার পরীক্ষা এবং বিকাশের জন্য চালানোর একটি অবিশ্বাস্যভাবে সহজ উপায়। যদিও এই নিবন্ধটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে ফোকাস করেনি, আশা করি, MongoDB-এর সাথে ইন্টারঅ্যাক্ট করার জন্য একটি MongoDB ড্রাইভারকে Testcontainers-এর উপরে লেয়ার করা কতটা স্বচ্ছ মনে হয় তা আপনি আরও ভালভাবে বুঝতে পেরেছেন।
প্রদত্ত যে C# Testcontainers সেটআপ, টিয়ারডাউন এবং এমনকি সংযোগ স্ট্রিং পরিচালনা থেকে মাথা ব্যাথা করে, আপনি যদি স্থানীয় ব্যবহারের জন্য MongoDB-এর সাথে উঠতে এবং চালাতে চান তবে এটি আমার কাছ থেকে একটি সহজ সুপারিশ।
আপনি যদি এটিকে দরকারী বলে মনে করেন এবং আপনি আরও শেখার সুযোগ খুঁজছেন, তাহলে আমার বিনামূল্যের সাপ্তাহিক সফ্টওয়্যার ইঞ্জিনিয়ারিং নিউজলেটারে সদস্যতা নেওয়ার কথা বিবেচনা করুন এবং YouTube-এ আমার বিনামূল্যের ভিডিওগুলি দেখুন!
এছাড়াও এখানে প্রকাশিত