এমভিসি আসলে কী?


201

একটি গুরুতর প্রোগ্রামার হিসাবে, আপনি কীভাবে প্রশ্নের উত্তর দেবেন এমভিসি কী?

আমার মনে, এমভিসি হ'ল একটি নেভুলাস বিষয় - এবং এর কারণ আপনার শ্রোতা যদি একজন শিক্ষানবিস হয় তবে আপনি এটিকে সাধারণ পদে বর্ণনা করতে পারেন যা বিতর্কিত হওয়ার সম্ভাবনা কম।

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

বিশেষত, কঠোরতা, উপাদান সংজ্ঞা, অংশগুলি পৃথকীকরণ (কোন অংশটি কোথায় ফিট করে) ইত্যাদি সম্পর্কিত মতভেদ রয়েছে বলে মনে হয়

সুতরাং, আমি এমভিসিকে এমনভাবে কীভাবে ব্যাখ্যা করব যা সঠিক, সংক্ষিপ্ত এবং বিতর্কিত নয়?


4
দ্রষ্টব্য: আপনি যদি এএসপি.নেটে কাজ করছেন, এমভিসির দ্বিতীয়, অ-নেবালাস অর্থ রয়েছে: এএসপি.নেট এমভিসি
ব্রায়ান

উত্তর:


155

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

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

দৃশ্য কার্যকরভাবে অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস উপাদান সরবরাহ করে। এটি মডেল থেকে এমন একটি ফর্মের ডেটা রেন্ডার করবে যা ব্যবহারকারীর ইন্টারফেসের জন্য উপযুক্ত।

নিয়ামকটি ব্যবহারকারী ইনপুট গ্রহণ করে এবং মডেল অবজেক্টগুলিতে এবং উপযুক্ত ক্রিয়া সম্পাদনের জন্য দর্শনগুলি করে।

সব মিলিয়ে এই তিনটি উপাদান এমভিসির তিনটি মূল উপাদান তৈরি করতে একসাথে কাজ করে।


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

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

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

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

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

135

উপমা

আমি আমার বাবাকে এমভিসিটি এভাবে ব্যাখ্যা করেছি:

এমভিসি (মডেল, ভিউ, কন্ট্রোলার) রক্ষণাবেক্ষণযোগ্যতা উন্নত করতে একটি অ্যাপ্লিকেশনটিতে কোড সংগঠিত করার একটি প্যাটার্ন।

কোনও স্টুডিওতে কোনও ফটোগ্রাফারকে তার ক্যামেরা সহ কল্পনা করুন। একজন গ্রাহক তাকে একটি বাক্সের ছবি তুলতে বললেন।

বাক্সটি মডেল , ফটোগ্রাফারটি নিয়ামক এবং ক্যামেরাটি ভিউ

কারণ বক্স নেই জানি ক্যামেরা বা ফটোগ্রাফার সম্পর্কে, এটি সম্পূর্ণ স্বাধীন। এই বিচ্ছেদটি ফটোগ্রাফারকে বাক্সের চারপাশে হাঁটার অনুমতি দেয় এবং ক্যামেরাটি যে কোনও কোণে নির্দেশ করতে পারে যে শটটি দেখতে চায় / দেখতে পারে।

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


বিস্তারিত ব্যাখ্যা

নীচের ম্যালিস্ট প্রশ্ন / উত্তর পড়ার পরেই আমার মনে হয়েছিল আমি এমভিসি বুঝতে পেরেছি। উদ্ধৃতি: https://mail.python.org/pipermail/python-list/2006- জানুয়ারি / 39496868.html

বাওয়াহা লিখেছেন:

লেখক এমভিসি ডিজাইনের উদাহরণ হিসাবে ডাব্লুএক্সপিথনে mvctree.py উল্লেখ করেছেন। তবে আমি এখনও খুব সবুজ তাই আমি সেই নির্দিষ্ট উদাহরণটিকে খুব জটিল মনে করি এবং লেখক যে সুপারিশ করছেন তা আমি বুঝতে পারছি না।

এমভিসি সমস্ত উদ্বেগের বিচ্ছেদ সম্পর্কে is

মডেল প্রোগ্রামটির ডেটা (উভয় ব্যক্তিগত এবং ক্লায়েন্ট ডেটা) পরিচালনার জন্য দায়বদ্ধ। ভিউ / কন্ট্রোলার বাইরের বিশ্বকে প্রোগ্রামটির ক্লায়েন্টের ডেটার সাথে যোগাযোগের উপায় সরবরাহ করার জন্য দায়বদ্ধ।

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

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

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

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

কেন এটা সম্ভব? ভাল, সহজ উত্তরটি হ'ল এটি সমস্ত মডেল এবং দেখুন / নিয়ন্ত্রণকারী স্তরগুলির মধ্যে সংযুক্ত লোকে সংযুক্ত হওয়ার জন্য ধন্যবাদ। তবে এটি সম্পূর্ণ গল্প নয়। কি পুরো MVC প্যাটার্ন চাবিকাঠি হয় দিক সমস্ত নির্দেশাবলী প্রবাহিত যা ঐ সংযোগ যায় থেকে দেখুন / কন্ট্রোলার থেকে মডেল। কখনও কখনও মডেলটি ভিউ / নিয়ন্ত্রণকারীকে কী করতে হবে তা জানায় tells

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

কেন? কারণ এমভিসি উদ্বেগের স্পষ্ট বিচ্ছিন্নতা তৈরি করার বিষয়ে।

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

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

তারপরে ব্যবহারিক পদগুলিতে, কোনও ভিউ / কন্ট্রোলার অবজেক্ট মডেলটির এপিআই এর মাধ্যমে, ১. মডেলকে জিনিসগুলি করতে বলে (আদেশগুলি কার্যকর করে), এবং ২. মডেলকে জিনিস (রিটার্ন ডেটা) দেওয়ার জন্য বলে। ভিউ / কন্ট্রোলার স্তরটি মডেল স্তরের নির্দেশকে ধাক্কা দেয় এবং মডেল স্তর থেকে তথ্য টান দেয়

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

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

এখন, একটি শেষ কনড্রাম, যেমন আমি আগে ইঙ্গিত দিয়েছিলাম: আপনি কীভাবে ইউভির ডিসপ্লেটিকে এমভিসি ভিত্তিক সিস্টেমে মডেলের রাজ্যের সাথে সুসংগত রাখবেন?

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

কিন্তু কিভাবে? এমভিসি প্যাটার্নটি মডেলটিকে ভিউ স্তরটিতে সেই তথ্যের একটি নতুন অনুলিপি ঠেলে দেয়। হেক, এটি এমনকি মডেলটিকে দৃশ্যটির বার্তা প্রেরণের অনুমতি দেয় না এটি বলার জন্য যে এর রাজ্য পরিবর্তন হয়েছে।

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

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

এমভিসি সংরক্ষিত, এবং সবাই খুশি। আপনার অ্যাপ্লিকেশন ফ্রেমওয়ার্কটি একটি বিল্ট-ইন নোটিফিকেশন সিস্টেমটি সরবরাহ করতে পারে, বা আপনি না লিখলে নিজের লিখতে পারেন ('পর্যবেক্ষক বিন্যাস দেখুন')।

...

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

চিয়ার্স,

হয়েছে


এমভিভিএম এবং এমভিসিএস সম্পর্কে কীভাবে, আমি আপনার এমভিসি উত্তরটি শুনেছি সফ্টওয়্যারেনজেনারিং.স্ট্যাকেক্সেক্সঞ্জ
প্রশ্নগুলি

86

এমভিসি বেশিরভাগই একটি গুঞ্জন শব্দ।

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

এমভিসি কখনই ওয়েব অ্যাপ্লিকেশনগুলি বর্ণনা করে না।
আধুনিক অপারেটিং সিস্টেম বা ভাষাও নয়।
(যাদের মধ্যে কিছু সত্যই 1979 এর সংজ্ঞাটি রিডানড্যান্ট করে তুলেছিল)

এটা করা হয়েছিল। এবং এটি কার্যকর হয়নি।

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

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

  • তথ্য মডেল ওয়ান ওয়ে পরিচালিত হয়,
  • দৃশ্য অন্য,
  • বাকিটির নাম মাত্র "নিয়ামক" এবং পাঠকের বিবেচনার ভিত্তিতে রেখে দেওয়া হয়েছে।

90 এর দশকের ওয়েব সাইট / ওয়েব অ্যাপ্লিকেশনগুলি উদ্বেগের পৃথকীকরণ প্রয়োগ করতে সত্যই ব্যবহার করেনি।

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

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

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

যেমন এটি দাঁড়িয়েছে এটি সাধারণ জ্ঞান , কোনও পদ্ধতি নয়
এটি একটি সূচনা পয়েন্ট , কোনও সমাধান নয়
এটি ক্যান্সারের নিরাময়ের জন্য নয় , মানুষকে বায়ু শ্বাস নিতে বা ক্রাঞ্চ তৈরি করতে বলার মতো ।


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

23
It's a fancy word for pre-existing concepts that didn't really need one.এবং কোন নকশার প্যাটার্ন / আর্কিটেকচার সেই বিবরণটির সাথে খাপ খায় না?
ইয়ানিস

8
+1 প্রকৃতপক্ষে এই জিনিসগুলির বেশিরভাগটি স্পষ্টতই একবার আপনার কাছে মূলসূত্রগুলি (সংহতি, মিলন, পাঠযোগ্যতা, অস্থিরতা ইত্যাদি) উপলব্ধি হয়ে যায় এবং আধুনিক ভাষার সক্ষমতার সাথে এটি একত্রিত করে।
লোরান

12
The data model is handled one way, the view in another, the rest is just named "controller"+1
c69

33
-1। আমি আশা করি আমি সমস্ত বোকা +1 মন্তব্যের জন্য -10 করতে পারতাম। এই "সুস্পষ্ট" এর কোনটিকে সংযুক্তি ও সংহতির মৌলিক নীতিগুলি দেওয়া হয় কীভাবে? ইউভি স্থাপত্যগুলি এমভিসি, এমভিপি, এমভিভিএম, ফর্ম এবং স্মলটকের মডেল সহ প্রচুর। কিছু সংস্থা যৌগিক অ্যাপ্লিকেশন আর্কিটেকচারকে চূড়ান্ত দিকে ঠেলে দেয়, যেমন ডাব্লুএস-সিএএফ-তে। "সাধারণ জ্ঞান" স্বয়ংক্রিয়ভাবে আপনাকে এমভিসির দিকে নিয়ে যায় বলে ডেসকার্টসের Godশ্বরের তথাকথিত প্রমাণ হিসাবে যতটা জল থাকে holds এটি স্পষ্টতই আপনি জানেন কী তবে আপনার উত্তরটি অন্য পদ্ধতির অজ্ঞতা বা নিজের দিগন্তকে প্রসারিত করতে অক্ষমতার পরিচয় দেয়।
অ্যারোনআউট

39

এটি সংজ্ঞায়িত করার সর্বোত্তম উপায় হ'ল ট্রাইগভে রেইনসকাগের মূল লেখাগুলিতে যাওয়া , যিনি এটি আবিষ্কার করেছিলেন: http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

এই কাগজটি, বিশেষতঃ সাধারণত সংজ্ঞাযুক্ত পাঠ্য হিসাবে বিবেচিত হয়: http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf

মডেল

মডেলগুলি জ্ঞানের প্রতিনিধিত্ব করে। কোনও মডেল একক বস্তু হতে পারে (বরং উদ্বেগহীন) হতে পারে, বা এটি বস্তুর কিছু কাঠামো হতে পারে ...

একদিকে মডেল এবং এর অংশগুলির মধ্যে একে অপরের মধ্যে যোগাযোগ থাকতে হবে এবং অন্যদিকে মডেলটির মালিক দ্বারা উপলব্ধ হিসাবে প্রতিনিধিত্ব করা বিশ্ব। কোনও মডেলের নোডগুলির ফলে সমস্যার একটি সনাক্তকারী অংশ উপস্থাপন করা উচিত।

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

VIEWS বার

একটি দৃশ্য তার মডেলের একটি (ভিজ্যুয়াল) উপস্থাপনা। এটি সাধারণত মডেলের কিছু বৈশিষ্ট্য হাইলাইট করে এবং অন্যকে দমন করে। এটি এভাবে উপস্থাপনা ফিল্টার হিসাবে অভিনয় করছে ।

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

কন্ট্রোলার

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

একটি নিয়ামক কখনও ভিউ পরিপূরক করা উচিত নয়, উদাহরণস্বরূপ কখনও কখনও নোডের মধ্যে তীর আঁকার মাধ্যমে দৃষ্টিভঙ্গি সংযোগ করা উচিত নয়।

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

সম্পাদকের

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

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


11

এমভিসি হ'ল ডিজাইনের ধরণ যা ব্যবসায়িক যুক্তি উপস্থাপনা থেকে আলাদা করতে ব্যবহৃত হয়।

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

কৌশল প্যাটার্ন বাস্তবায়নকারী একটি অ্যাপ্লিকেশন যদিও এটি সম্পর্কে একটি সামান্য বিশদ রয়েছে, এটি বলে যে একটি ওয়েব অ্যাপ্লিকেশন এমভিসি ডিজাইন প্যাটার্ন ব্যবহার করে এটি তার স্থাপত্যের খুব সংজ্ঞা দিচ্ছে


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

8

এমভিসি একটি সফ্টওয়্যার ডিজাইন যা কোনও সিস্টেম বা সাবসিস্টেমের নিম্নলিখিত উপাদানগুলিকে পৃথক করে:

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

6

আমি বলব এমভিসি একটি ধারণা বা অনুরূপ নিদর্শনগুলির একটি পরিবার।

আমি এই নিবন্ধটি পড়া মূল্যবান বলে মনে করি। মার্টিন ফওলারের জিইউআই আর্কিটেকচার


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

3

প্রথমত, আপনাকে নির্ধারণ করতে হবে যে প্রশ্নকারী প্রশ্নকর্তা এবং তিনি কী ধরণের উত্তর খুঁজছেন। আপনি এই প্রশ্নের জবাব অন্য প্রশ্নের সাথে দিয়েছেন, যেমন "" কোন অর্থে? "

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

যদি এটি কোনও পরীক্ষার প্রশ্নে থাকে এবং আপনি প্রশ্নকারীকে স্পষ্ট করতে বলতে না পারেন, তবে আপনাকে প্রসঙ্গের ভিত্তিতে অনুমান করতে হবে।

একটি ভাল, সহজ উত্তর:

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

আপনি আরও বলতে পারেন:

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

তবে, শেষ পর্যন্ত, আপনি যে উত্তরটির প্রত্যাশা করছেন তার উত্তর আপনি দিয়েছিলেন কিনা সে বিষয়ে আপনার বিচার করা হবে। সমস্যার একমাত্র সমাধান তারা কী ধরণের উত্তর প্রত্যাশা করছে তা খুঁজে বের করা।


2

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

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

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

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


1

আমি সবসময় তাদের বলে দিয়ে শুরু করি যে প্যাটার্নটি কোনও নতুন কিছু নয় এবং বহু বছর ধরে রয়েছে ... এটি এই মুহুর্তে তারা আমাকে একটি অনুসন্ধানী চেহারা এবং বিএএম প্রদান করে!

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

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