এমভিসি ডিজাইনে ব্যবসায়ের যুক্তি কোথায় রাখবেন?


44

আমি একটি সাধারণ এমভিসি জাভা অ্যাপ্লিকেশন তৈরি করেছি যা ডেটাবেসে ডেটা ফর্মগুলির মাধ্যমে রেকর্ড যুক্ত করে।

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

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

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

এই পটভূমি গণনার জন্য কোডটি কোথায় লিখব? এটি নিয়ম এবং ব্যবসায়ের যুক্তি হিসাবে, আমি কি এটি নতুন জাভাবিয়ান ফাইলগুলিতে স্থাপন করব?


উত্তর:


83

ব্যবসা লজিক মধ্যে স্থাপন করা উচিত মডেল , এবং আমরা চর্বি জন্য নিশানা করা উচিত মডেল এবং চর্মসার কন্ট্রোলার

একটি সূচনা পয়েন্ট হিসাবে, আমাদের নিয়ামক যুক্তি থেকে শুরু করা উচিত। উদাহরণস্বরূপ: আপডেটে , আপনার নিয়ামক আপনার কোড সরাসরি উচিত পদ্ধতি / সেবা যে বিতরণ মডেল আপনার পরিবর্তনগুলি।

মডেলটিতে, আমরা সহজেই সহায়ক / পরিষেবা শ্রেণি তৈরি করতে পারি যেখানে অ্যাপ্লিকেশন ব্যবসায়ের বিধি বা গণনাগুলি বৈধতা দেওয়া যায়।

একটি ধারণাগত সারসংক্ষেপ

  • নিয়ামক অ্যাপ্লিকেশন যুক্তি জন্য। আপনার অ্যাপ্লিকেশনটি "জ্ঞানের ডোমেন" এর সাথে কীভাবে ইন্টারঅ্যাক্ট করতে চায় তা নির্দিষ্ট করে যুক্তিটি log

  • মডেল যুক্তিবিজ্ঞান আবেদন স্বাধীন যে জন্য । এই যুক্তিটি "জ্ঞানের ডোমেন" এর সাথে সম্পর্কিত সমস্ত সম্ভাব্য অ্যাপ্লিকেশনগুলিতে বৈধ হওয়া উচিত।

  • সুতরাং, মডেলটিতে সমস্ত ব্যবসায়ের নিয়ম স্থাপন করা যুক্তিসঙ্গত।


3
সুন্দর স্পষ্ট এবং সংক্ষিপ্ত উত্তর ..
হাঞ্জোলো

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

1
@ মোহ, সংক্ষেপে এগুলি একটি অ্যাপ্লিকেশনটিতে প্রযুক্তির স্তর বর্ণনা করতে সহায়তা করার জন্য গুঞ্জনযুক্ত শব্দ are ব্যবসায়িক যুক্তি কার্যত বৈশিষ্ট্য অনুসারে সিস্টেমের নিয়ম। উদাহরণস্বরূপ বি টাইপের বি এর অবজেক্টটি অবশ্যই সি এবং ডি হিসাবে চিহ্নিত করা উচিত, তবে ই নয় Application
EL Yusubov

: আপনি এই কথাগুলো সম্প্রসারিত হবে দয়া করে The most common mistakes are to implement application logic operations inside the controller or the view(presentation) layer.[ php-html.net/tutorials/model-view-controller-in-php ]
Revo

1
যদি আমি সঠিক বুঝতে পারি তবে উল্লিখিত নিবন্ধটি 'অ্যাপ্লিকেশন লজিক' কে 'ব্যবসায়িক যুক্তি' হিসাবে উল্লেখ করে। সুতরাং, ব্যবসায়ের যুক্তি বোঝায় এমন কোনও কিছুই নিয়ামক বা দৃশ্যে রাখা উচিত নয়।
EL ইউসুবভ

20

সর্বদা হিসাবে, এটি প্রকল্পের জটিলতার উপর নির্ভর করে।

তুচ্ছ অ্যাপ্লিকেশনগুলিতে, যেখানে ডোমেন মডেলের জটিলতা তুলনামূলকভাবে ছোট, আপনি মডেলগুলিতে যুক্তি রাখতে পারেন এবং এটিকে একটি দিন কল করতে পারেন।

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

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

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

রবার্ট মার্টিন (আঙ্কেল বব) এর এই বিষয়ে একটি ভাল ব্লগ পোস্ট রয়েছে: দ্য ক্লিন আর্কিটেকচার।


প্রশ্নটি এমভিসির জন্য নির্দিষ্ট ছিল। ব্যবসায়ের যুক্তি সর্বদা মডেল হওয়া উচিত। নিয়ামকটি কেবল একটি অ্যাডাপ্টার।
jgauffin

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

1
স্টিভ Burbeck (স্মলটক টিম) দ্বারা সংজ্ঞা থেকে: The controller interprets the mouse and keyboard inputs from the user, commanding the model and/or the view to change as appropriate। এটি একটি অ্যাডাপ্টারের সংজ্ঞা।
jgauffin

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

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

5

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

আমি এমভিসি 3.0 তে নির্মিত একটি ওয়েব পরিষেবা ব্যবহার করছি এবং ব্যবসায়িক যুক্তির ধারক হ'ল এমভিসি মডেল


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