জিইউআই, বিএলএল, ডএল অর্গানাইজেশন ইন এ প্রজেক্ট


9

আমি অ্যাপ্লিকেশন স্তরগুলি সম্পর্কে পড়ছি, এবং আমার পরের প্রকল্পে (সি #,। নেট) এই নকশাটি ব্যবহার করতে চাই। কিছু প্রশ্ন:

  1. নেমস্পেসের মাধ্যমে স্তরগুলির পৃথকীকরণ করা হয়? প্রজেক্ট.বিএলএল.ওয়েজ, প্রজেক্ট.ডাল.ওয়ে

  2. স্তরগুলি (প্রোজেক্ট.বিএলএল কম্পোনেন্ট 1), বা উপাদানগুলির দ্বারা, তারপরে স্তরগুলি দ্বারা পৃথক করা কি আরও উপযুক্ত (প্রকল্প.কোম্পোনেন্ট 1.বিএলএল)

  3. আমার ডালের জন্য, এই স্তরটি আরও বিভিন্ন ক্লাস ব্যবহার করে আরও সংগঠিত হয়? যদি সমস্ত ডাটাবেস কলগুলি একটি একক শ্রেণিতে রাখা হয় তবে কোনও সংস্থা নেই। এগুলি আলাদা আলাদা ক্লাস বা নেমস্পেসের সাথে ভাগ করে নেওয়া ভাল?

  4. ডাল ক্লাসগুলি কি সাধারণত স্থির থাকে? এটি ডাল অবজেক্টটি প্রতিবার কোনও একটি পদ্ধতির কল করার আগে তা ইনস্ট্যান্ট করা জটিল বলে মনে হচ্ছে।

এই স্তরগুলির সাথে সঠিকভাবে জিনিসগুলি করার জন্য অন্য কোনও টিপস প্রশংসা করা হবে।

উত্তর:


8
  1. হ্যাঁ. এবং সমাবেশগুলিও।
  2. আমি স্তরগুলি দিয়ে পৃথক করব, তারপরে উপাদানগুলি।
  3. হ্যাঁ. এটির জন্য বিভিন্ন পন্থা রয়েছে, তবে আমার একটি আইডিয়েটবেস সার্ভিস ছিল (বিভিন্ন পদ্ধতিতে ডেটাবেস বলা হয় - এটি প্রায়শই এক্সিকিউটস্কেলার / এক্সিকিউটননকিউয়েরি / এক্সিকিউটরেডারের সরাসরি ম্যাপিং হতে পারে), এবং তারপরে বিভিন্ন ডেটা অ্যাক্সেস ক্লাস যে ডাটা টাইপ দ্বারা বিভাজন। উদাহরণস্বরূপ, আপনার কাছে ইউজারডাটাএ্যাক্সেস ক্লাস থাকতে পারে যাতে সাধারণ সিআরইউডি পদ্ধতি থাকতে পারে যা ব্যবহারকারীর অবজেক্ট তৈরি / সংশোধন / মুছে ফেলতে পারে। আর একটি পদ্ধতির মধ্যে এমন কোনও ব্যবহারকারীর অবজেক্ট থাকতে হবে যা সিআরইউডিটি অন্তর্নির্মিত আছে।
  4. না এটি ইউনিট পরীক্ষার পক্ষে অনেক কঠিন করে তোলে । প্রতিটি ডেটা অ্যাক্সেস ক্লাসের কনস্ট্রাক্টরের (যেমন একটি আইড্যাটাসেস সার্ভিস) এর নির্ভরতার মধ্যে যাওয়ার জন্য আপনার নির্ভরতা ইনজেকশন ব্যবহার করা উচিত । এরপরে আপনি ব্যবসায়িক বস্তুগুলিতে ডেটা অ্যাক্সেস অবজেক্টগুলিকে এইভাবে পাস করবেন:

    বিজনেসঅবজেক্ট বিজনেসঅবজেক্ট = নতুন বিজনেসঅবজেক্ট (নতুন ডেটাঅ্যাক্সেসওবজেক্ট (নতুন ডাটাবেসসোভাইসর ())); businessObject.PerformOperation ();

প্রতিটি ব্যবসায়িক সামগ্রীতে একাধিক ডেটা অ্যাক্সেস অবজেক্টের প্রয়োজন হতে পারে। আপনার জিইউআই কোডটি এক বা একাধিক ব্যবসায়িক সামগ্রী ব্যবহার করবে। কিছু ব্যবসায়িক অবজেক্টের কোনও ডেটা অ্যাক্সেস অবজেক্টের প্রয়োজন নাও হতে পারে তবে সরাসরি আইডিটাবেসস সার্ভিসটি কখনও ব্যবহার করা উচিত নয়।


সুতরাং BusinessObject.PerforOperation () এর মতো কিছু দেখতে পাওয়া যাবে: DataAccessObject.PerforOperation (), যেহেতু ডেটাঅ্যাক্সেসঅবজেক্টটি ব্যবসায়অবজেক্টে বাস করে?
সোমবার সোমবার

1
এছাড়াও নির্ভরতা ইনজেকশন সম্পর্কে পরামর্শ দেওয়ার জন্য ধন্যবাদ thanks এটি আমার কাছে একটি নতুন ধারণা এবং এটি বোধগম্য মনে হয়। আমি এটি সম্পর্কে আরও জানতে হবে :)
সোমবার সোমবার

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

2

1 এবং 2 প্রশ্নের জন্য ম্যাথিউর উত্তরগুলি নিয়ে যান।

ডেস্কটপ অ্যাপ্লিকেশনগুলির ডাল গঠনের সর্বোত্তম উপায়টি বের করার চেষ্টা করে আমি অনেক সময় ব্যয় করেছি। এবং সর্বোত্তম উপায়টি অ্যাপ্লিকেশনগুলির প্রয়োজনীয়তার উপর নির্ভর করে। আমার একটি অ্যাপ্লিকেশনে আমি প্রতিটি ডাটাবেস টেবিলের জন্য একটি ডিএ ক্লাস করার রাস্তায় নেমেছি, যা নিজেকে কেন্দ্রীয় (অর্থাত্ সিঙ্গলটন) ডেটাপ্রোভাইডার শ্রেণিতে নিবন্ধিত করে এবং সিআরইউডি পরিচালনা করে। প্রতিটি ডিএ ক্লাস তখন সিদ্ধান্ত নিতে পারে যে এটি র‌্যামের সমস্ত টেবিলের ডেটা ক্যাশে রাখতে চায় কিনা (পারফরম্যান্স!) এবং / অথবা এটি অন্য কম্পিউটারে চলমান অন্য ক্লায়েন্টগুলিতে স্বয়ংক্রিয় ক্লায়েন্ট আপডেটগুলি ট্রিগার করার ক্ষমতা রাখার প্রয়োজন ছিল (বহু-ব্যবহারকারী মনে করুন) সম্পাতবিন্দু)। এটি নতুন ডএএল ক্লাস যুক্ত করা খুব সহজ করে তোলে, কারণ তাদের যা করণীয় তা রেজিস্ট্রেশন ইন্টারফেসের সাথে সঙ্গতিপূর্ণ।

প্রতিটি ডালের এই ধরণের কার্যকারিতার প্রয়োজন হয় না, তবে আমি শিখেছি যে আমি নতুন ক্লাস যুক্ত করা শুরু করার সাথে সাথে এপ্রোচটি নিজেই (অর্থাত্ সিঙ্গেলন ডেটা সরবরাহকারী এবং স্ট্যাটিক রেজিস্ট্রেশন সহ সহজ ডাল ক্লাস) আমার জীবনকে আরও সহজ করে তুলেছিল।

আমি অবশ্যই সিআরইউডিটিকে উচ্চ স্তরের শ্রেণিতে তৈরি করার পরামর্শ দেব না, যদি না এটি খুব সাধারণ অ্যাপ্লিকেশন হয়। ডাল তথ্য সংরক্ষণের বিমূর্ততা of আপনি যদি ভবিষ্যতে কোনও সময়ে আপনার ডেটা স্টোরেজ পরিবর্তন করার সিদ্ধান্ত নেন (এমনকি এটি এমএস এসকিউএলের পরিবর্তে কেবল মাইএসকিউএল ব্যবহার করা হয়) তবে আপনি এর জন্য খুব কৃতজ্ঞ হবেন। প্লাস: বিএলএল অবজেক্টগুলি তাদের ব্যবসায়ের যুক্তিযুক্ত সম্পর্কগুলির দ্বারা কাঠামোযুক্ত হওয়া উচিত। ডাল অবজেক্টগুলি স্ট্রাকচারের ধারকগুলির প্রকারের দ্বারা তারা প্রতিনিধিত্ব করে struct পার্থক্য নাটকীয় হতে পারে।

আপনার ডাল ক্লাস স্থির করবেন না । কোডিংয়ের গতিতে আপনি যা অর্জন করেন তা পরীক্ষারযোগ্যতা এবং নমনীয়তায় আপনি বহুগুণ হারাবেন।


আপনি ঠিক বলেছেন যে নির্দিষ্ট নকশাটি অ্যাপ্লিকেশনগুলির প্রয়োজনীয়তার দ্বারা চালিত হয়। তবে, আমি আপনার নকশাকে ভুল বুঝে না নিলে আমি সিলেটলেট ব্যবহার সম্পর্কে একমত নই। হতে পারে আপনি আপনার পদ্ধতির আরও ব্যাখ্যা করতে পারেন। কেন Singletons ইভিল আছেন: blogs.msdn.com/b/scottdensmore/archive/2004/05/25/140827.aspx
ম্যাথু Rodatus

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

আমার পদ্ধতির বিশদ বিবরণ আমি এখানে মন্তব্যে কী সরবরাহ করতে পারি তার চেয়ে অনেক বেশি পূরণ করবে। আমাকে আপনার ইমেল ঠিকানাটি প্রেরণ করুন এবং আমি উত্তর দেব (ম্যান্টোরোইট ডট কম এ উলফগ্যাঙ্গস)
ওল্ফগ্যাঙ্গস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.