সংগ্রহস্থল প্যাটার্ন বনাম ডাল অবজেক্ট তৈরি


9

আমি যতদূর শিখেছি, এতে থাকা IRepositoryউচিত CRUD। তারপর আমরা এই উত্তরাধিকারী IRepositoryমত আমাদের অন্যান্য ইন্টারফেসে IProductএবং বাস্তবায়ন IProductকংক্রিট বর্গ ProductRepositoryমত পদ্ধতি GetAllProducts(), Top5Products()

আমরা এন-টিয়ার আর্কিটেকচারের মাধ্যমেও একই কাজ করতে পারি। যেমন তৈরি করা DAL Class Libraryএবং এর Productমধ্যে GetAllProducts(), যেমন পদ্ধতিগুলির সাথে শ্রেণীর সংজ্ঞা দেওয়া হয় Top5Products()

উভয় ইন DAL.Productএবং Repo.ProductRepositoryশ্রেণীর আমরা আরম্ভ DB Contextএর Entity Frameworkএবং আমাদের প্রাসঙ্গিক ডেটার খোঁজ।

কলিং উভয় Repo.ProductRepositoryবা DAL.Productপদ্ধতি থেকে একইBLL

এই মিলগুলির পরিপ্রেক্ষিতে আমার প্রশ্নটি রেপোসের কী লাভ? আমি Controller, ( BLL Class Library,, DAL Class Library) দিয়ে এন-টিয়ার আর্কিটেকচার ব্যবহার করে খুব স্বাচ্ছন্দ্যে এটি করতে পারি ।


@ নীল আমি মনে করি যে ওপি ডএএল এর সাথে পরিচিত এবং এটি জিজ্ঞাসা করছে যে रिपোজিটরিগুলি একই কাজ করার জন্য কেবল অন্য ইন্টারফেস বা এটি আরও বেশি হয়
ক্রিস্টোফ

@ খ্রিস্টোফ ঠিক বলেছেন, আমি এতে বিভ্রান্ত। আমরা ডালে যদি একই কাজ করতে পারি তবে রেপো প্যাটার্নটি কেন ব্যবহার করবেন?
এম। আরসলান

উত্তর:


7

আমার বোধগম্যতা হ'ল:

  • ডাল (ডেটা অ্যাক্সেস লেয়ার) বলতে আপনার সফ্টওয়্যারটির এমন একটি স্তরকে বোঝায় যা আপনার অধ্যবসায় প্রযুক্তি এবং আপনার অ্যাপ্লিকেশন যুক্তির মধ্যে বসে। এর উদ্দেশ্য হ'ল ডেটা অ্যাক্সেস উদ্বেগগুলি আপনার অন্যান্য প্রয়োগ সংক্রান্ত উদ্বেগের থেকে পৃথক রাখা। এটি একটি সাধারণ ধারণা।

  • সংগ্রহস্থলের প্রয়োগ DDD থেকে একটা ধারণা (ডোমেন চালিত নকশা) হয়।

ডিডিডি-তে, একটি সংগ্রহস্থল প্রদত্ত সমষ্টিটির জন্য সমস্ত ডেটা অ্যাক্সেস উদ্বেগকে আবদ্ধ করার জন্য দায়বদ্ধ । এটি সমষ্টিটি পড়ার সময় লেখার সময় ধারাবাহিকতা নিশ্চিত করার দায়িত্ব নিয়ে আসে। আর একটি সমষ্টিগত সংশ্লিষ্ট সংস্থাগুলো (যেমন, একটি গোষ্ঠী Product, Storeইত্যাদি)।

সুতরাং, একটি সংগ্রহস্থল বিশেষত তার সমষ্টিটির দৃistence়তা এবং ধারাবাহিকতা উদ্বেগ সম্পর্কে অবগত। তোমার সাধারণ ডাল সম্ভবত গঠিত হতে হবে নির্দিষ্ট সংগ্রহস্থল

টি এল; ডিআর;

  • ডেএল অ্যাক্সেসের উদ্বেগগুলি দূরে করার জন্য ডাল একটি সাধারণ শব্দ।
  • ডিপিডি থেকে সংগ্রহস্থল একটি অনুরূপ, তবে আরও সুনির্দিষ্ট ধারণা।
  • আপনার ডাল সম্ভবত বেশ কয়েকটি ভাণ্ডার দ্বারা গঠিত।

4
সংগ্রহশালাটি এমন একটি শব্দও যা ডিডিডি এর বাইরে বেশি সাধারণভাবে ব্যবহৃত হয় যা ডাটাবেসের রেকর্ডগুলিকে মিরর করে এমন বস্তুর একটি ইন-মেমোরি সংগ্রহের উল্লেখ করে। এই প্রসঙ্গে, এটিডএএল এবং ব্যবসায়িক লজিক লেয়ারের মধ্যে বসে। Martinfowler.com/eaaGGG.re/repository.html
রবার্ট হার্ভে

সবাই কেন সবকিছুর জন্য ডিডিডি ক্রেডিট দেওয়ার চেষ্টা করে ?!
দ্যাটিক্যাটহিসার

1
আজ আমি শিখেছি: পি
মেটাফাইট

2

আপনি দুটি ভিন্ন এবং পরিপূরক ধারণার তুলনা করছেন:

  • ডেটা অ্যাক্সেস লেয়ার একটি স্থাপত্য স্তর যে তথ্য বিমূর্ত এক্সেস করতে ইচ্ছুক নয়। এটি কীভাবে অ্যাক্সেস বিমূর্ত হবে তা বলে না।
  • সংগ্রহস্থলের প্রয়োগ একটি নির্দিষ্ট প্যাটার্ন যে দল (শেষে প্যাটার্নের তালিকা দেখতে আওতাধীন এই লিঙ্কে )। এটি ঠিক কীভাবে ডেটাতে নির্দিষ্ট অ্যাক্সেসকে বিমূর্ত করতে পারে: ডেটা স্টোরটিতে ইন্টারফেসের মতো সংগ্রহের প্রস্তাব দিয়ে।

আপনার উদাহরণে ডাল

মজার বিষয় হল, শ্রেণীর পাঠাগারটির উদাহরণে আপনার DAL.Productকাছে একটি সংগ্রহস্থল বলে মনে হয়। সুতরাং এটি স্বাভাবিক যে আপনি সত্যই কোনও পার্থক্য দেখতে পাবেন না: বাস্তবায়নের দিক থেকে এটি একই (এই নির্দিষ্ট ক্ষেত্রে)।
তবে তা করার দরকার নেই; একটি ডাল আলাদাভাবে প্রয়োগ করা যেতে পারে, উদাহরণস্বরূপ:

  • সক্রিয় রেকর্ডগুলি যা একটি ডাটাবেস বিমূর্ত স্তর উপর নির্ভর করে।
  • অ্যানিমিক ডোমেন অবজেক্টস (মনোযোগ, অ্যান্টি-প্যাটার্ন!) সারি ডেটা গেটওয়ে থেকে প্রাপ্ত
  • বা, কেন নয়, ডোমেন অবজেক্টগুলি বিভিন্ন ক্যোয়ারী অবজেক্ট থেকে প্রাপ্ত, যেখানে প্রতিটি ক্যোয়ারী অবজেক্টটি পুনরুদ্ধার করার জন্য একটি নির্দিষ্ট পদ্ধতি প্রয়োগ করবে implement
  • ভান্ডার
  • এই সমস্ত মিশ্রণ

ভাণ্ডারগুলির জন্য আলাদা

সংগ্রহস্থলের ধারণাটি স্থাপত্য মডেল এবং বাস্তবায়নের থেকে পৃথক। আপনার স্তর বা ডাটাবেস ভাবার দরকার নেই। আপনি যখন আপনার ডোমেনটি ডিজাইন করেন তখন আপনার যা জানা দরকার তা হ'ল আপনার অবজেক্টগুলি এমন একটি সংগ্রহস্থল যা একটি বিশেষ ধরণের সংগ্রহের জাদুকরী pers এটি তাদের ডোমেন ডিজাইনের জন্য খুব উপযুক্ত করে তোলে এবং কেন তারা ডোমেন চালিত ডিজাইনের একটি মূল উপাদান তা ব্যাখ্যা করে ।

ডিডিডি-তে, সংগ্রহাগুলিগুলির সম্মানের আরও কিছু বিধি রয়েছে: তারা সমষ্টিগুলিতে অ্যাক্সেস দেয় (একটি স্বতন্ত্র সত্তা, বা একটি সামগ্রিক মূলের উপর নির্ভরশীল সম্পর্কিত সংস্থাগুলির একটি গ্রুপ) এবং সমষ্টিতে প্রতি একক সংগ্রহস্থল রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.