এমভিসি-তে ব্যবসায়ের যুক্তি [বন্ধ]


183

আমার 2 টি প্রশ্ন রয়েছে:

চতুর্থাংশ 1। এমভিসি প্যাটার্নে "ব্যবসায় যুক্তি" ঠিক কোথায় অবস্থিত? আমি মডেল এবং নিয়ামকের মধ্যে বিভ্রান্ত।

Q2 এর। "ব্যবসায় যুক্তি" কি "ব্যবসার বিধি" এর মত? তা না হলে পার্থক্য কী?

আপনি যদি একটি ছোট উদাহরণ দিয়ে ব্যাখ্যা করতে পারেন তবে দুর্দান্ত হবে।

উত্তর:


173

ব্যবসায়ের নিয়মগুলি মডেলটিতে যায়।

বলুন আপনি কোনও মেলিং তালিকার জন্য ইমেল প্রদর্শন করছেন। ব্যবহারকারী ইমেলগুলির একটির পাশের "মুছুন" বোতামটি ক্লিক করে, নিয়ামকটি এনড্রি এন মোছার জন্য মডেলকে অবহিত করে, তারপরে মডেলটি পরিবর্তিত হয়েছে বলে জানায়।

সম্ভবত অ্যাডমিনের ইমেলটি কখনই তালিকা থেকে সরানো উচিত নয়। এটি একটি ব্যবসায়ের নিয়ম, সেই জ্ঞানটি মডেলটির অন্তর্ভুক্ত। দৃশ্যটি চূড়ান্তভাবে কোনওভাবে এই নিয়মকে উপস্থাপন করতে পারে - সম্ভবত মডেলটি একটি "ইসডলেটযোগ্য" সম্পত্তি প্রকাশ করে যা ব্যবসায়ের নিয়মের একটি ফাংশন, যাতে ভিউতে মুছুন বোতামটি নির্দিষ্ট এন্ট্রিগুলির জন্য অক্ষম থাকে - তবে নিয়মটি নিজেই এতে অন্তর্ভুক্ত থাকে না দেখুন মধ্যে.

মডেলটি শেষ পর্যন্ত আপনার ডেটার জন্য দারোয়ান। আপনার ইউআইআইয়ের স্পর্শ না করে আপনার ব্যবসায়ের যুক্তি পরীক্ষা করতে সক্ষম হওয়া উচিত।


5
উদাহরণের জন্য ধন্যবাদ। প্রশাসকের ইমেল প্রবেশের জন্য (এটি মুছতে পারে কি না তা নিয়ন্ত্রণ করা), আমরা কি আমাদের নিয়ন্ত্রণকারী ব্যবহার করে তা নিয়ন্ত্রণ করতে পারি না?
এইচএমথুর

2
@ মুড যদি আমরা আমাদের মডেলটিকে আরও দুটি স্তর হিসাবে পরিবেশন করি যেমন পরিষেবা স্তর এবং সংগ্রহস্থল ... পরিষেবা স্তর ব্যবসায়ের যুক্তির জন্য দায়ী এবং ডেটা স্তরটির জন্য ভান্ডার দায়ী ...?
ড্রাগন

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

1
@ পিটারম্যাটিসকো " লারাভেলে লোকেরা তারপরে সবকিছু নিয়ন্ত্রণকারী বা মডেলগুলিতে ফেলে দেয় Bad খারাপ মন্দ স্থাপত্য।" খারাপ কিভাবে ? নির্দিষ্ট করা। "ভি" এর অর্থ "ভিউ"। দৃশ্য যা নয় এমন সমস্ত কিছু অগত্যা "এম" বা "সি" এর মধ্যে চলে। "এমভিসি কেবল পর্যাপ্ত নয়, এটি ব্যবসায়ের যুক্তি এবং কোথায় রাখা উচিত সে সম্পর্কে স্পষ্টভাবে কথা বলে না" নিশ্চিতভাবেই তা করে। "এম" হ'ল আপনার অ্যাপ্লিকেশনটির মডেল যা আপনার ডেটা, তার চারপাশের ব্যবসায়ের যুক্তি এবং এমন কিছু এবং যা উপস্থাপনা নয়। "ভি" এবং "সি" হ'ল উপস্থাপনা স্তর, ব্যবহারকারীর ইনপুট এবং আউটপুট।
কাঁদ

2
@ মুড সমস্যাটি হচ্ছে, সেই ল্যারাভেল একটি 'মডেল' কে কেবল একটি ডেটা ক্যারিয়ার বলে। টিউটোরিয়ালগুলি যখন বলে যে লারাভেল এমভিসি ব্যবহার করে এবং তারপরে আপনি দেখতে পান যে 'মডেল' এর খুব নির্দিষ্ট উদ্দেশ্য রয়েছে, তবে আপনি ব্যবসার যুক্তি কোথায় রাখবেন সে সম্পর্কে কোনও ধারণা ছাড়েন না। এবং একমাত্র যুক্তিযুক্ত স্থানটি নিয়ামক, যা ভাল নয় good আমি এটি তৈরি করছি না, আমি কেবলমাত্র সাধারণত লারাভেল প্রকল্পগুলিতে (এবং টিউটোরিয়াল) মন্তব্য করি যা আমি প্রায়শই দেখি।
পিটার ম্যাটিসকো

190

সকলের মুষ্টি:
আমি বিশ্বাস করি যে আপনি এমভিসি প্যাটার্ন এবং এন-স্তর-ভিত্তিক নকশার নীতিগুলি মিশ্রণ করছেন।

এমভিসি পদ্ধতির ব্যবহারের অর্থ এই নয় যে আপনার অ্যাপ্লিকেশনটি স্তরযুক্ত করা উচিত নয়।
আপনি এমভিসি আরও উপস্থাপনা স্তরটির এক্সটেনশনের মতো দেখতে পান এটি আপনাকে সহায়তা করতে পারে।

আপনি যদি এমভিসি প্যাটার্নের ভিতরে নন-প্রেজেন্টেশন কোডটি রাখেন তবে খুব তাড়াতাড়ি আপনি একটি জটিল ডিজাইনে শেষ করতে পারেন।
অতএব আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার ব্যবসায়িক যুক্তিটিকে একটি পৃথক ব্যবসায়ের স্তরে রাখবেন।

এটি একবার দেখুন: মাল্টিটায়ার আর্কিটেকচার সম্পর্কে উইকিপিডিয়া নিবন্ধ

এটি বলে:

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

যাইহোক ... কোনও এন্টারপ্রাইজ ওয়েব অ্যাপ্লিকেশন সম্পর্কে কথা বলার সময় UI থেকে ব্যবসায়িক লজিক স্তরটিতে কলগুলি (উপস্থাপনা) নিয়ামকের ভিতরে রাখা উচিত।

এজন্য যে কন্ট্রোলার প্রকৃতপক্ষে একটি নির্দিষ্ট সংস্থানটিতে কলগুলি পরিচালনা করে, ব্যবসায়িক যুক্তিতে কল করে ডেটা অনুসন্ধান করে এবং ডেটা (মডেল )টিকে উপযুক্ত দৃশ্যের সাথে সংযুক্ত করে।

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

এই কৌশলটি আপনি কোনও ডোমেন চালিত ডিজাইন বা লেনদেনের স্ক্রিপ্ট ভিত্তিক পদ্ধতির ব্যবহার করেন কিনা তা থেকে স্বাধীন।

আমাকে আপনার জন্য এটি কল্পনা করতে দিন:


উপস্থাপনা স্তর: মডেল - দেখুন - নিয়ামক


ব্যবসায়ের স্তর: ডোমেন যুক্তি - অ্যাপ্লিকেশন যুক্তি


ডেটা স্তর: ডেটা সংগ্রহস্থল - ডেটা অ্যাক্সেস স্তর


আপনি উপরে যে মডেলটি দেখছেন তার অর্থ হল আপনার কাছে এমন একটি অ্যাপ্লিকেশন রয়েছে যা এমভিসি, ডিডিডি এবং একটি ডাটাবেস-স্বতন্ত্র ডেটা স্তর ব্যবহার করে।
বৃহত্তর এন্টারপ্রাইজ ওয়েব অ্যাপ্লিকেশনটি ডিজাইনের জন্য এটি একটি সাধারণ পদ্ধতি।

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

কৌশলটি ... আমি আশা করি এটি সাহায্য করবে ...

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

প্রশ্নটি: এমভিসি ধারণাটিতে এটি কীভাবে খাপ খায়?

উত্তর -> না!
ঠিক আছে - এটি কিন্ডা করে তবে পুরোপুরি হয় না।
এটি কারণ এমভিসি হ'ল একটি দৃষ্টিভঙ্গি যা ১৯ late০ এর দশকের শেষদিকে স্মার্টটাক -৮০ প্রোগ্রামিং ভাষার জন্য তৈরি হয়েছিল। সেই সময় জিইউআই এবং ব্যক্তিগত কম্পিউটারগুলি বেশ অস্বাভাবিক ছিল এবং ওয়ার্ল্ড ওয়াইড ওয়েবও আবিষ্কার হয়নি! আজকের বেশিরভাগ প্রোগ্রামিং ভাষা এবং আইডিই 1990 এর দশকে তৈরি হয়েছিল। সেই সময় কম্পিউটার এবং ইউজার ইন্টারফেসগুলি 1970 এর দশকের থেকে সম্পূর্ণ আলাদা ছিল।
আপনি যখন এমভিসি সম্পর্কে কথা বলেন তখন আপনার তা মনে রাখা উচিত।
মার্টিন ফাউলর এমভিসি, এমভিপি এবং আজকের জিইউআই সম্পর্কে একটি খুব ভাল নিবন্ধ লিখেছেন।


10
এমভিসি এবং এন-টিয়ার অ্যাপের মধ্যে সঠিকভাবে পার্থক্য তালিকা করার জন্য +1। আমার বিকাশযুক্ত বেশিরভাগ এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলিতে এন-টায়ার থাকে এবং কেবল উপস্থাপনা স্তর হিসাবে এমভিসি ব্যবহার করে।
অবসরপ্রাপ্ত_উজার

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

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

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

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

73

শব্দ যুক্তি শব্দটি আমার মতে একটি নির্দিষ্ট সংজ্ঞা নয়। ইভান্স তার বই, ডোমেন ড্রাইভেন ডিজাইনে প্রায় দুই ধরণের ব্যবসায়িক যুক্তি নিয়ে আলোচনা করেছে:

  • ডোমেন যুক্তি।
  • প্রয়োগ যুক্তি।

এই বিচ্ছেদটি আমার মতে অনেক পরিষ্কার। এবং বিভিন্ন ধরণের ব্যবসায়ের নিয়ম রয়েছে এমন উপলব্ধির সাথে উপলব্ধিও আসে যে তারা অগত্যা একই জায়গায় যায় না।

ডোমেন যুক্তি যুক্তি যা আসল ডোমেনের সাথে মিলে যায়। সুতরাং যদি আপনি কোনও অ্যাকাউন্টিং অ্যাপ্লিকেশন তৈরি করে থাকেন তবে ডোমেনের বিধিগুলি অ্যাকাউন্ট, পোস্টিং, কর আদায় ইত্যাদির বিষয়ে নিয়ম হতে পারে software প্রভৃতি

এই উভয় প্রকারের প্রয়োগের জন্যই সিএসভি আমদানি / রফতানি প্রাসঙ্গিক হতে পারে তবে সিএসভি আমদানি / রফতানির নিয়মের প্রকৃত ডোমেনের সাথে কোনও সম্পর্ক নেই। এ জাতীয় যুক্তি হ'ল অ্যাপ্লিকেশন লজিক।

ডোমেন লজিক অবশ্যই মডেল স্তরের মধ্যে যায়। মডেলটি ডিডিডিতে ডোমেন স্তরের সাথেও মিল রাখে।

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


1
এটা খুব সত্য! এখানে আপনার মডেল এবং আপনার ডোমেন মডেল দুটি মডেল রয়েছে। আমি মনে করি এটি প্রায় দুর্ভাগ্য যে এমভিসি প্রকল্পগুলির বিন্যাস নবজাতী বিকাশকারীদের বিশ্বাস করতে পরিচালিত করে যে তাদের ভিউ মডেলটিতে কেবল তাদের কোডটি ক্র্যাম করা উচিত।
জোনাথন

1
আপনার উত্তরটি আরও গ্রহণযোগ্য এবং বোধগম্য Found ধন্যবাদ।
রেভো

27

এ 1 : বিজনেস লজিক Modelঅংশ নিতে যায় MVC। ভূমিকা Modelহ'ল ডেটা এবং ব্যবসায়ের যুক্তি ধারণ করে। Controllerঅন্যদিকে ব্যবহারকারীর ইনপুট গ্রহণ এবং কী করবেন তা সিদ্ধান্ত নিতে দায়বদ্ধ।

এ 2 : এ এর Business Ruleএকটি অংশ Business Logic। তাদের একটা has aসম্পর্ক আছে। Business Logicহয়েছে Business Rules

একবার দেখুন Wikipedia entry for MVC। ওভারভিউতে যান যেখানে এটি প্রবাহের উল্লেখ করেMVC প্যাটার্নের ।

এছাড়াও দেখুন Wikipedia entry for Business Logic। এটি এবং এর Business Logicসমন্বয়ে উল্লেখ করা হয়েছে ।Business RulesWorkflow


16

বেশ কয়েকটি উত্তর যেমন উল্লেখ করেছে, আমি বিশ্বাস করি যে এমভিসি আর্কিটেকচার বনাম মাল্টি টায়ারের কিছু ভুল ধারণা রয়েছে।

মাল্টি টায়ার আর্কিটেকচারে আপনার অ্যাপ্লিকেশনটিকে স্তর / স্তরগুলিতে ভাঙ্গা জড়িত (যেমন উপস্থাপনা, ব্যবসায়িক যুক্তি, ডেটা অ্যাক্সেস)

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

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

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


2
বিষয়টি সম্পর্কে সেরা উত্তর। উচ্চতর ভোট দেওয়া উচিত। সবচেয়ে খারাপ উত্তর স্বীকৃত হিসাবে চিহ্নিত করা হয়েছে।
পিটার ম্যাটিস্কো

সেরা উত্তর .. সন্দেহ নেই
সালমান

এটি কি ডেটা এবং অ্যাপ্লিকেশনটির আকারের উপর নির্ভর করে? একটি ছোট অ্যাপের জন্য, আমি অনুমান করছি যে সমস্ত যুক্তি কোনও বিভ্রান্তি ছাড়াই মডেলগুলিতে যেতে পারে। যদি তা হয় তবে আলাদা স্তরে আলাদা হওয়া শুরু করার জন্য আকারের প্রান্তিকতাটি কী?
mLstudent33

15

এটি একটি উত্তর দেওয়া প্রশ্ন, তবে আমি আমার "এক শতাংশ" দেব:

ব্যবসায়ের নিয়মগুলি মডেলটির অন্তর্ভুক্ত। "মডেল" সর্বদা গঠিত (যৌক্তিক বা শারীরিকভাবে পৃথক):

  • উপস্থাপনা মডেল - শ্রেণীর একটি সেট যা দৃষ্টিতে ব্যবহারের জন্য উপযুক্ত (এটি নির্দিষ্ট ইউআই / উপস্থাপনার জন্য উপযুক্ত),
  • ডোমেন মডেল - মডেলের UI- স্বতন্ত্র অংশ এবং
  • সংগ্রহস্থল - "মডেল" এর স্টোরেজ-সচেতন অংশ।

ব্যবসায়ের বিধিগুলি ডোমেন মডেলটিতে লাইভ থাকে, "উপস্থাপনা" মডেলটিতে উপস্থাপনা-উপযুক্ত আকারে প্রকাশিত হয় এবং কখনও কখনও "ডেটা স্তর" তে নকল হয় (বা প্রয়োগ করা হয়)।


5

এমভিসি প্রকল্পের জন্য আপনার ব্যবসায়ের স্তরটিকে মডেলটিতে রাখার অর্থ নেই।

বলুন যে আপনার বস উপস্থাপনা স্তরটি অন্য কোনওটিতে পরিবর্তন করার সিদ্ধান্ত নিয়েছে, আপনি বিচলিত হবেন! ব্যবসায়ের স্তরটি একটি পৃথক সমাবেশ হতে হবে। একটি মডেলটিতে এমন ডেটা থাকে যা ব্যবসায়ের স্তর থেকে আসে যা প্রদর্শন করতে ভিউতে যায়। তারপরে পোস্টের উদাহরণস্বরূপ, মডেলটি এমন একটি ব্যক্তি শ্রেণীর সাথে আবদ্ধ হয় যা ব্যবসায়ের স্তরটিতে থাকে এবং পার্সনবসনেসকে বলে ave সেভপারসন (পি); যেখানে p হচ্ছে ব্যক্তি শ্রেণি। আমি যা করি তা এখানে রয়েছে (বিজনেসআরারের ক্লাসটি অনুপস্থিত তবে এটি বিজনেস লাইয়ারেও যাবে):এখানে চিত্র বর্ণনা লিখুন


আপনি এই বিবৃতি পরিষ্কার করতে চান? "একটি মডেলটিতে এমন ডেটা থাকে যা ব্যবসায়ের স্তর থেকে আসে যা প্রদর্শন করতে ভিউতে চলে যায়" "
অ্যান্টনি রটলেজ

2

চতুর্থাংশ 1:

ব্যবসায়িক যুক্তিগুলি দুটি বিভাগে বিবেচনা করা যেতে পারে:

  1. ইমেল ঠিকানার (স্বতন্ত্রতা, সীমাবদ্ধতা ইত্যাদির) নিয়ন্ত্রণ, চালানের জন্য কোনও পণ্যের দাম অর্জন করা বা শপিংকার্টের পণ্য সামগ্রীর উপর ভিত্তি করে মোট মূল্য নির্ধারণের মতো ডোমেন লজিক্স controls

  2. আরও বিস্তৃত এবং জটিল ওয়ার্কফ্লোগুলি যাকে ব্যবসায়িক প্রক্রিয়া বলা হয়, যেমন শিক্ষার্থীর নিবন্ধকরণ প্রক্রিয়া নিয়ন্ত্রণ করা (যার মধ্যে সাধারণত বেশ কয়েকটি পদক্ষেপ থাকে এবং বিভিন্ন চেকের প্রয়োজন হয় এবং আরও জটিল বাধা থাকে) has

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

এই দেখুন উত্তর মডেল এবং নিয়ামক মধ্যে একটি নির্দিষ্ট পার্থক্য জন্য, এই লিঙ্কে খুব সঠিক সংজ্ঞা এবং এই লিংক একটা চমৎকার অ্যান্ড্রয়েড উদাহরণস্বরূপ।

মুল বক্তব্যটি হ'ল "মুড" এবং "ফ্রাঙ্ক" উভয়ের উপরে উল্লিখিত নোটগুলি পাশাপাশি "পিট" এর (ব্যবসায়িক যুক্তির ধরণ অনুসারে মডেল বা নিয়ন্ত্রণকারীতে ব্যবসায়ের যুক্তি স্থাপন করা যেতে পারে) সত্য হতে পারে।

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


Q2 এর:

ব্যবসায়ের যুক্তি আরও সাধারণ এবং (উপরে উল্লিখিত "ডেস্ক্লোন" হিসাবে) আমাদের মধ্যে তাদের মধ্যে নিম্নলিখিত সম্পর্ক রয়েছে:

ব্যবসায়িক বিধি ⊂ ব্যবসায়িক লজিক


0

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


-5

মডেল = CRUD ডাটাবেস ক্রিয়াকলাপের কোড।

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

মডেলটির একটি ক্যোয়ারির ভিত্তিতে উত্পন্ন উত্স = ইউআই।

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


যদি আপনি ব্যবসার নিয়মকে নিয়ন্ত্রণে রাখেন এবং আপনার অনেকগুলি, অনেকগুলি ক্রিয়া রয়েছে - আপনি কি ব্যবসার নিয়মটি বহুবার, বহুবার প্রতিলিপি করতে চলেছেন? না You আপনি এটি কোনও সহায়ক পদ্ধতি বা কোনও ধরণের শ্রেণিতে পৃথক করবেন। সেই "জিনিস "টিকে মডেলটিতে রাখুন, যেখানে এটি অন্তর্ভুক্ত।
জি স্টোনেভ

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