ডিডিডি-লাইট নির্ভরতা ইনজেকশনের জন্য একটি প্যাটার্ন ভাষা?


17

গ্রেগ ইয়ংয়ের আলাপে আমি হোঁচট খেয়েছি D কারণ কেন ডিডিডি প্রকল্পগুলি ব্যর্থ হয় যেখানে তিনি কোনও কিছু উল্লেখ করেন যেখানে at:২০-তে তাকে ডিডিডি-লাইট বলে।

সংক্ষেপে তিনি মূলত বলেছিলেন যে কিছু কিছু ডিডিডি সম্পর্কিত কোনও কিছু না করে প্যাটার্ন ল্যাঙ্গুয়েজ (সত্তা, সংগ্রহশালা, মান বস্তু, পরিষেবা ইত্যাদি) হিসাবে ডিডিডি ব্যবহার করে। তিনি। নেট এ 60% বা তার বেশি ডোমেন মডেল পোস্ট করেন ডিডিডি-লাইট। তিনি মনে করেন ডিডিডি-লাইট মূলত নির্ভরতা ইনজেকশনটির আশেপাশে একটি ভাষা তৈরি করছে, যা আপনার সত্যিকারের করার দরকার নেই। তিনি বলেন, হয় পুরোপুরি ডিডিডি করুন বা সহজ কিছু করুন। অন্যথায় তিনি দাবি করেন যে কোনও ব্যক্তি ভাল বিমূর্ততা তৈরিতে এই সমস্ত কাজ চালিয়ে যাচ্ছেন, তবে কোনও আসল সুবিধা ছাড়াই।

আমাকে অবশ্যই স্বীকার করতে হবে যে আমি ডিডিডি সম্পর্কে আমার যতটা চাই তা জানি না এবং এখনও এটি ব্যবহার করার চেষ্টা করিনি। আমি এরিক ইভানের বইটিও পড়িনি। আমি আরো অনেক কিছু এই বিষয় ব্যবহার বিধি ও এরিক ইভান্স 'DDD বই থেকে রেফারেন্স ধারণার উপর নির্ভরতা ইনজেকশন এবং অনেক, অনেক বই এবং ব্লগ আগ্রহী। আমি এখানেই ডিডিডি ধারণার সংস্পর্শে এসেছি। আমি যে বইগুলিতে পড়ছি সেগুলির মধ্যে অন্তর্ভুক্ত রয়েছে:

  • নেট মধ্যে নির্ভরতা ইনজেকশন
  • মাইক্রোসফ্ট নেট: এন্টারপ্রাইজের জন্য আর্কিটেকিং অ্যাপ্লিকেশন
  • .NET- এ ব্রাউনফিল্ড অ্যাপ্লিকেশন বিকাশ

যদি কেউ নির্ভরতা ইনজেকশন করতে চান, তবে "ডিডিডি-লাইট" করার সহজ বিকল্পগুলি কী? এটি "ডিডিডি-লাইট" উপায়ে যদি কেউ ডিডিডি থেকে ধারণাগুলি ব্যবহার করে থাকে তবে নির্বিশেষে ভাল বিমূর্ততা তৈরি করা আমার কাছে মনে হচ্ছে। (মার্ক সিম্যানের ব্লগ পোস্টগুলি দেখুন: ইন্টারফেসগুলি বিমূর্ততা নয় এবং আরও ভাল বিমূর্তির দিকে )। ডিপেন্ডেন্সি ইনজেকশন করা প্রত্যেকে পুরোপুরি ডিডিডি করে (বা করা দরকার) হওয়ার ক্ষেত্রে আমার বিশ্বাস করতে খুব কষ্ট হয়। আমি কি কোনওভাবে ডিডিডি-লাইট সম্পর্কে গ্রেগ ইয়ংয়ের যুক্তিটি ভুল বুঝেছি?

উত্তর:


15

নির্ভরতা ইনজেকশন এবং ডিডিডি দুটি পৃথকীকরণের ধারণা। নির্ভরতা ইনজেকশন করার জন্য ডিডিডি করার প্রয়োজন হয় না বা ডিডিডি ডিপেন্ডেন্সি ইনজেকশন প্রয়োজন হয় না।

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

সংক্ষেপে: আমার ধারণা এটি একটি ভুল বোঝাবুঝি


4
+1 ইভান্সের বইয়ে বর্ণিত নিদর্শনগুলি এখনও আরও বিস্তৃত প্রসঙ্গে মূল্যবান - যতক্ষণ কেউ বুঝতে পারে যে এগুলিকে বিচ্ছিন্নভাবে প্রয়োগ করা এটিকে ডিডিডি করে না।
মার্ক সিমেন

1
হ্যাঁ আমি ডিআই বুঝতে পারি! = ডিডিডি। @ মার্কসিম্যান, সুতরাং গ্রেগের যুক্তি মনে হয় যে লোকেরা বলছে যে তারা না থাকলে তারা ডিডিডি করছে। ঠিক আছে আমি এটা পেয়েছি। তবে তিনি যুক্তিও দিয়েছিলেন যে ডিডিডি-তে পাওয়া অ্যাস্ট্রাকশনগুলি (সমষ্টি, সংগ্রহস্থল, ডোমেন সত্তা, মান বস্তু, পরিষেবাদি ইত্যাদি) ব্যবহার অপ্রয়োজনীয় যদি সেগুলি কেবল নির্ভরতা ইনজেকশনের আর্কিটেকচারকে সমর্থন করে ব্যবহার করা হয়। আমি যে অংশটি পাই না তা (এটিতে কী ভুল)। সম্ভবত এটি স্ট্রো ম্যান আর্গুমেন্ট , কারণ এই জাতীয় জিনিসগুলি কেবল "নির্ভরতা ইনজেকশনের চারপাশে একটি ভাষা তৈরি করা" নয়।
ম্যাট

3
গ্রেগ আংশিকভাবে সঠিক: ডিডিডি-তে বিশেষ নিদর্শনগুলি বিশেষভাবে ডিআইয়ের সাথে সম্পর্কিত নয়। যাইহোক, আমার বইতে আমি কয়েকটি পরিভাষা বেছে নিয়েছিলাম, বিশেষত সত্তা বনাম মান মান বনাম পরিষেবার সংজ্ঞা কারণ কোথায় কী ইনজেক্ট করা উচিত তা বোঝা গুরুত্বপূর্ণ। যাইহোক, এই পরিভাষাগুলির পাশাপাশি অন্যান্য নিদর্শনগুলি যেমন ডিপডি বইয়ের তুলনায় অনেক পুরানো, তাই বলে যে এই বিষয়গুলি ডিডিডি এর বাইরে অপ্রয়োজনীয় আমার কাছে ভুল বলে মনে হচ্ছে। এটি নির্ভর করে আপনি কীভাবে ডিডিডিটিকে সংজ্ঞায়িত করেন তার উপর নির্ভর করে।
মার্ক সিম্যান

2

আমি বাজি ধরছি পুরো ডিডিডি পদ্ধতির পরিবর্তে ডোমেন-চালিত ডিজাইনের ধরণের একটি সাবসেট যদি গ্রেগ সহজ অ্যাপ্লিকেশনটির কথা উল্লেখ করে। ডিডিডি-লাইট শব্দটি নিখুঁতভাবে http://www.infoq.com/minibooks/domain-driven-design-quickly বইটিকে বোঝায় যেটি ডিডিডি নবীনদের মধ্যে জনপ্রিয় ছিল, তবে কেবলমাত্র উপর দৃষ্টি নিবদ্ধ রেখে পুরো ছবিটিকে মিস করে ot স্থানীয় মডেলিং নকশা নিদর্শন।

যদিও নির্ভরতা ইনজেকশন একটি ভাল জিনিস হিসাবে বিবেচিত হয়, ডিডিডি এবং ডিআইয়ের মধ্যে কোনও দৃ strong় সম্পর্ক নেই।

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