আমি মনে করি বিকল্প 2 কোনও খারাপ নয়, তবে এটির প্রয়োজনও নেই। মাইক্রো পরিষেবাগুলি আপনাকে একাধিক অ্যাপ্লিকেশনগুলির প্রয়োজনের সাথে মোকাবিলা করার জন্য।
এখানে একটি বড় ফ্যাক্টর হ'ল, যদি দুটি স্কিমার মধ্যে কোনও পার্থক্য থাকে এবং যদি ভবিষ্যতে কখনও হয়।
সাধারণত, আমি ভাবি সংগ্রহস্থলের জন্য ইন্টারফেস ব্যবহার করা অপ্রয়োজনীয়; যাইহোক, এই উদাহরণে চেষ্টা মূল্য হতে পারে। ভান্ডার কারখানাগুলি আপনার জন্য গুরুত্বপূর্ণ হবে।
বিকল্প 1 এর সাথে আমার সমস্যাটি এটি খুব নির্দিষ্ট। আপনি যে সেটআপটি বর্ণনা করেছেন সেটি থেকে আপনার নিজের ডিবিতে সহজেই নির্দেশ করে দুটি পৃথক ইভেন্টে যেতে সক্ষম হওয়া উচিত। অ্যাপ্লিকেশনটি কোথা থেকে এটি থেকে ডেটা নিচ্ছে তা যত্নশীল হওয়া উচিত নয়।
যদিও আপনার দুটি ভিন্ন ডাটাবেসের জন্য স্কিমা পৃথক নয়, আপনার পার্থক্যটি না জেনে আপনার কাছে একটি সংগ্রহস্থল সহজেই উভয়ের সাথেই ডিল করতে পারে:
public class MyEntityRepository : ISavesMyEntity, IGetsMyEntity
{
public MyEntityRepository(string connectionString)
{
_connectionString = connectionString;
}
}
public class MyEntitySaverFactory
{
public ISavesMyEntity GetSaver(User user)
{
if (user.IsUK)
return new MyEntityRepository(Config.Get("UKConnString"));
if (user.IsUS)
return new MyEntityRepository(Config.Get("USConnString"));
throw new NotImplementedException();
}
}
//USE
ISavesMyEntity saver = factory.GetSaver(currentUser);
saver.Save(myEntityInstance);
ডিবি স্কিমা যদি কখনও মার্কিন যুক্তরাষ্ট্র এবং যুক্তরাজ্যের মধ্যে স্বতন্ত্র হয়ে যায়, তবে আপনি তারপরে কার্যকারিতাটি দুটি সম্পূর্ণ ভিন্ন স্টোরগুলিতে বিভক্ত করবেন। এটি সহজ হবে, যেহেতু আপনাকে যা করতে হবে তা হ'ল আপনার কারখানার পরিবর্তন।