ওয়েব ফর্মগুলির সাথে তুলনা করে, এমভিসি একইসাথে পৃষ্ঠার আউটপুট এবং আরও উচ্চ-স্তরের, আরও আর্কিটেকচারালি-চালিত পদ্ধতির সাথে আরও বেশি নিয়ন্ত্রণের সাথে এইচটিএমএল প্রজন্মের কাছে নিম্ন স্তরের পন্থা। আমাকে ওয়েব ফর্ম এবং এমভিসি ক্যাপচার করুন এবং দেখান যে আমি কেন মনে করি যে তুলনাটি অনেক পরিস্থিতিতে ওয়েব ফর্মগুলির পক্ষে - যতক্ষণ না আপনি কিছু ক্লাসিক ওয়েব ফর্মের ফাঁদে পড়ে না।
ওয়েব ফর্ম
ওয়েব ফর্ম মডেলটিতে আপনার পৃষ্ঠাগুলি সরাসরি ব্রাউজারের পৃষ্ঠার অনুরোধের সাথে মিলে যায়। সুতরাং, আপনি যদি কোনও ব্যবহারকারীকে বইয়ের তালিকায় নির্দেশনা দিচ্ছেন তবে আপনার সম্ভবত সম্ভবত "Booklist.aspx" নামক একটি পৃষ্ঠা থাকবে যেখানে আপনি তাকে নির্দেশনা দেবেন। সেই পৃষ্ঠাতে, আপনাকে সেই তালিকাটি প্রদর্শনের জন্য প্রয়োজনীয় সবকিছু সরবরাহ করতে হবে। এর মধ্যে ডেটা টানতে, কোনও ব্যবসায়িক যুক্তি প্রয়োগ করতে এবং ফলাফলগুলি প্রদর্শনের কোড অন্তর্ভুক্ত রয়েছে। পৃষ্ঠাটিতে প্রভাব ফেলতে যদি কোনও স্থাপত্য বা রাউটিং যুক্তি থাকে তবে আপনাকে পৃষ্ঠাতে আর্কিটেকচারাল যুক্তিও কোড করতে হবে। ভাল ওয়েব ফর্ম বিকাশ সাধারণত একটি পৃথক (ইউনিট-টেস্টেবল) ডিএলএল সমর্থনকারী শ্রেণীর একটি সেট বিকাশ জড়িত। এই শ্রেণি (এস) ব্যবসায়িক যুক্তি, ডেটা অ্যাক্সেস এবং স্থাপত্য / রাউটিংয়ের সিদ্ধান্তগুলি পরিচালনা করবে।
MVC
এমভিসি ওয়েব অ্যাপ্লিকেশন বিকাশের আরও একটি "আর্কিটেকচারাল" দৃষ্টিভঙ্গি নিয়েছে: কোনও মানকীয় স্ক্যাফল্ড তৈরি করবে যার উপর নির্ভর করে। এটি প্রতিষ্ঠিত আর্কিটেকচারের মধ্যে স্বয়ংক্রিয়ভাবে মডেল, ভিউ এবং নিয়ামক শ্রেণি তৈরির সরঞ্জাম সরবরাহ করে। উদাহরণস্বরূপ, রুবেল অন রেল উভয় ক্ষেত্রে (এখান থেকে কেবল "ই "রেল") এবং এএসপি.নেট এমভিসি আপনি সর্বদা একটি ডিরেক্টরি কাঠামো দিয়ে শুরু করবেন যা তাদের ওয়েব অ্যাপ্লিকেশন আর্কিটেকচারের সামগ্রিক মডেলকে প্রতিফলিত করে। একটি দর্শন, মডেল এবং নিয়ামক যোগ করতে, আপনি রেলসের "রেল স্ক্রিপ্ট / জেনারেট স্ক্যাফোল্ড {মডেলনাম}" (এএসপি.নেট এমভিসি আইডিইতে অনুরূপ কমান্ড সরবরাহ করে) এর মতো একটি কমান্ড ব্যবহার করবেন। ফলস্বরূপ নিয়ন্ত্রক শ্রেণিতে সূচকের জন্য পদ্ধতি ("ক্রিয়াগুলি") (প্রদর্শন তালিকা), শো, নতুন এবং সম্পাদনা এবং ধ্বংস (কমপক্ষে কারাগারে, এমভিসি অনুরূপ) থাকবে। ডিফল্টরূপে, এই "
ডিরেক্টরি এবং ফাইলগুলির বিন্যাস এমভিসিতে উল্লেখযোগ্য। উদাহরণস্বরূপ, এএসপি.নেট এমভিসি-তে, "বুক" অবজেক্টের সূচক পদ্ধতির সম্ভবত একটি লাইন থাকবে: "রিটার্ন ভিউ ();" এমভিসির যাদুবিদ্যার মাধ্যমে, এটি "/ ভিউ / বই / ইন্ডেক্স.এএসপিএক্স" পৃষ্ঠাতে বইয়ের মডেলটি প্রেরণ করবে যেখানে আপনি বই প্রদর্শনের কোড পাবেন। যুক্তি কিছুটা সুস্পষ্ট এবং কম "ম্যাজিক" হলেও রেলের দৃষ্টিভঙ্গি একই রকম। এমভিসি অ্যাপে একটি ভিউ পৃষ্ঠাটি ওয়েব ফর্ম পৃষ্ঠাগুলির চেয়ে সাধারণত সহজ হয় কারণ তাদের রাউটিং, ব্যবসায়িক যুক্তি বা ডেটা হ্যান্ডলিং সম্পর্কে তেমন চিন্তা করতে হবে না।
তুলনা
এমভিসি এর সুবিধাগুলি আপনার আউটপুট উত্পাদন করার জন্য উদ্বেগের পরিষ্কার বিচ্ছিন্নতা এবং একটি ক্লিনার, আরও HTML / সিএসএস / এজেএক্স / জাভাস্ক্রিপ্ট-কেন্দ্রিক মডেলকে ঘিরে। এটি পরীক্ষাযোগ্যতা বাড়ায়, আরও মানসম্পন্ন ডিজাইন সরবরাহ করে এবং আরও বেশি "ওয়েব 2.0" ধরণের ওয়েবসাইটের দরজা খুলে দেয়।
তবে পাশাপাশি কিছু উল্লেখযোগ্য ত্রুটি রয়েছে।
প্রথমত, যখন কোনও ডেমো সাইট চালানো সহজ হয়, সামগ্রিক স্থাপত্যের মডেলটিতে একটি উল্লেখযোগ্য শেখার বক্ররেখা থাকে। যখন তারা "কনভেনশন ওভার কনফিগারেশন" বলছেন তখন ভাল লাগবে - যতক্ষণ না আপনি বুঝতে পেরেছেন যে আপনার কাছে শেখার মতো কোনও বইয়ের মূল্য রয়েছে। অধিকন্তু, এটা প্রায়ই একটি বিট উন্মাদক কি কারণ আপনার যাচ্ছে জিনিসটা হয় হয় স্পষ্ট কল বদলে জাদু উপর নির্ভর। উদাহরণস্বরূপ, এটি "রিটার্ন ভিউ ();" উপরে কল? অন্যান্য একই ক্রিয়ায় ঠিক একই কলটি পাওয়া যাবে তবে তারা বিভিন্ন জায়গায় যায়। এমভিসি কনভেনশন বুঝতে পারলেতাহলে আপনি জানেন কেন এটি করা হয়। তবে এটি অবশ্যই ভাল নামকরণ বা সহজে বোধগম্য কোডের উদাহরণ হিসাবে যোগ্যতা অর্জন করে না এবং নতুন বিকাশকারীদের জন্য ওয়েব ফর্মগুলির চেয়ে বাছাই করা খুব কঠিন (এটি কেবল মতামত নয়: গত বছর আমার গ্রীষ্মের ইন্টার্ন শিখেছে এবং এই বছর এমভিসি এবং উত্পাদনশীলতার মধ্যে পার্থক্যগুলি উচ্চারিত হয়েছিল - ওয়েব ফর্মের পক্ষে)। বিটিডাব্লু, রেলস এক্ষেত্রে কিছুটা উন্নত, যদিও রুবে অন রেলগুলি গতিময় নামকরণের পদ্ধতিগুলি দেখায় যা কিছু গুরুতর-ব্যবহার-গ্রহণের ব্যবস্থাও গ্রহণ করে।
দ্বিতীয়ত, এমভিসি স্পষ্টতই ধরে নিয়েছে যে আপনি একটি ক্লাসিক সিআরইউডি-স্টাইলের ওয়েব সাইট তৈরি করছেন। স্থাপত্য সংক্রান্ত সিদ্ধান্তগুলি এবং বিশেষত কোড জেনারেটরগুলি এই জাতীয় ওয়েব অ্যাপ্লিকেশনটিকে সমর্থন করার জন্য তৈরি। আপনি যদি কোনও সিআরইউডি অ্যাপ্লিকেশন তৈরি করছেন এবং প্রমাণিত আর্কিটেকচার (বা কেবল আর্কিটেকচার ডিজাইনের অপছন্দ) গ্রহণ করতে চান, তবে আপনার সম্ভবত এমভিসি বিবেচনা করা উচিত। তবে, আপনি যদি সিআরইউডি থেকেও বেশি কিছু করছেন এবং / অথবা আপনি স্থাপত্যের সাথে যুক্তিসঙ্গতভাবে দক্ষ হয়ে থাকেন তবে এমভিসি সরাসরি স্ট্র্যাজকেটের মতো অনুভব করতে পারে যতক্ষণ না আপনি সত্যিকারভাবে অন্তর্নিহিত রাউটিং মডেলটি আয়ত্ত করেন (যা কেবল ওয়েবফর্ম অ্যাপগুলিতে রাউটিংয়ের চেয়ে যথেষ্ট জটিল)। তারপরেও, আমি অনুভব করেছি যে আমি সর্বদা মডেলটির সাথে লড়াই করছি এবং অপ্রত্যাশিত ফলাফলের জন্য উদ্বিগ্ন।
তৃতীয়ত, যদি আপনি লিনকের যত্ন নেন না (তবে আপনি লিনাক-টু-এসকিউএল অদৃশ্য হয়ে যাওয়ার আশঙ্কায় বা আপনি লিনক-টু-সত্তাগুলি হাস্যরূপে অত্যধিক উত্পাদিত এবং চালিতের অধীনে খুঁজে পেয়েছেন) তবে আপনিও চান না এএসপি.নেট এমভিসি স্ক্যাফোোল্ডিংয়ের সরঞ্জামগুলি লিনকের চারপাশে নির্মিত হওয়ায় এই পথে চলতে হবে (এটি আমার জন্য হত্যাকারী ছিল)। আপনি এসকিউএল (এবং বিশেষত যদি আপনি টিএসকিউএল এবং সঞ্চিত পদ্ধতিতে পারদর্শী হন) তবে আপনি যা অর্জন করতে পারবেন তার তুলনায় রেলের ডেটা মডেলটিও বেশ আনাড়ি।
চতুর্থত, এমভিসি সমর্থকরা প্রায়শই নির্দেশ করে যে এমভিসি ভিউগুলি ওয়েবের এইচটিএমএল / সিএসএস / এজেএক্স মডেলের নিকটে রয়েছে spirit উদাহরণস্বরূপ, "এইচটিএমএল হেল্পার্স" - আপনার ভ্যু পৃষ্ঠায় থাকা ছোট্ট কোড কলগুলি যা সামগ্রীগুলিতে অদলবদল করে এবং এটি এইচটিএমএল নিয়ন্ত্রণে রাখে - ওয়েব ফর্ম নিয়ন্ত্রণগুলির চেয়ে জাভাস্ক্রিপ্টের সাথে সংহত করা অনেক সহজ। যাইহোক, এএসপি.এনইটি ৪.০ আপনার নিয়ন্ত্রণগুলির নাম দেওয়ার সক্ষমতা প্রবর্তন করে এবং এইভাবে এই সুবিধাটি মূলত সরিয়ে দেয়।
পঞ্চম, এমভিসি পিউরিস্টরা প্রায়শই ভিউস্টেট উপহাস করেন। কিছু ক্ষেত্রে, তারা এটি করা ঠিক। যাইহোক, ভিউস্টেট একটি দুর্দান্ত সরঞ্জাম এবং উত্পাদনশীলতার জন্য এক পৃষ্ঠপোষক হতে পারে। তুলনা করার মাধ্যমে, ভিভিস্টেট পরিচালনা করা এমভিসি অ্যাপে তৃতীয় পক্ষের ওয়েব নিয়ন্ত্রণকে সংহত করার চেষ্টা করার চেয়ে অনেক সহজ। যদিও নিয়ন্ত্রণ সংহতকরণ এমভিসির পক্ষে আরও সহজ হয়ে উঠতে পারে, আমি যে সমস্ত বর্তমান প্রচেষ্টা দেখেছি সেগুলি এই নিয়ন্ত্রণগুলি আবার দেখার কন্ট্রোলার শ্রেণীর সাথে সংযোগ স্থাপনের জন্য (কিছুটা ক্ষোভজনক) কোড তৈরির প্রয়োজনীয়তায় ভুগছে (এটি - এমভিসি মডেলের আশেপাশে কাজ করা) )।
উপসংহার
আমি এমভিসি বিকাশ অনেক উপায়ে (যদিও আমি দীর্ঘ শট করে এএসপি.নেট এমভিসির কাছে রেল পছন্দ করি)। আমি আরও মনে করি যে এএসপি.নেট এমভিসি এএসপি.এনইটি ওয়েব ফর্মগুলির একটি "অ্যান্টি-প্যাটার্ন", এমন চিন্তাভাবনার ফাঁদে না ফেলা আমাদের পক্ষে গুরুত্বপূর্ণ। তারা পৃথক তবে সম্পূর্ণ ভিনগ্রহের নয় এবং অবশ্যই উভয়ের জন্য জায়গা রয়েছে।
তবে আমি ওয়েব ফর্মগুলির বিকাশকে প্রাধান্য দিই কারণ বেশিরভাগ কাজের জন্য , কাজগুলি করা সহজতর (ব্যতিক্রম সিআরইউডি ফর্মগুলির একটি সেট প্রজন্ম)। এমভিসিও কিছুটা বেশি তত্ত্বের থেকে ক্ষতিগ্রস্থ বলে মনে হচ্ছে । প্রকৃতপক্ষে, এসও-তে এমন অনেকগুলি প্রশ্ন দেখুন যাঁরা পৃষ্ঠা-ভিত্তিক এএসপি.এনইটি জানেন তবে যারা এমভিসি চেষ্টা করছেন। ব্যতিক্রম ব্যতীত, দাঁতগুলি গ্রাস করার প্রচুর পরিমাণ রয়েছে কারণ বিকাশকারীরা দেখতে পান যে তারা হুপসের মধ্য দিয়ে ঝাঁপিয়ে পড়া বা বিশাল শেখার বক্ররেখা ব্যতীত প্রাথমিক কাজগুলি করতে পারে না। এটিই আমার বইতে ওয়েব ফর্মগুলি এমভিসির চেয়ে উচ্চতর করে তোলে: এমভিসি আপনাকে আরও প্রকট হতে বা আরও খারাপ করার জন্য আপনাকে সত্যিকারের বিশ্বব্যাপী মূল্য দিতে বাধ্য করে কারণ আপনি ব্যবহার করছেন তাই কেবল শীতল হিসাবে দেখা যেতে পারেসর্বশেষ প্রযুক্তি।
আপডেট: আমার মন্তব্য বিভাগে আমার তীব্র সমালোচনা হয়েছে - এর কয়েকটি বেশ ন্যায্য। সুতরাং, আমি সত্যিই পরবর্তী বড় জিনিসটি মিস করছি না তা নিশ্চিত করার জন্য আমি কয়েক মাস ব্যয় করেছি রেলস এবং এএসপি ডট এমভিসি শিখতে! অবশ্যই, এটিও নিশ্চিত করে যে আমি প্রশ্নের ভারসাম্যপূর্ণ এবং উপযুক্ত প্রতিক্রিয়া সরবরাহ করি তা সহায়তা করে। আপনার জানা উচিত যে উপরের প্রতিক্রিয়াগুলি আমার প্রাথমিক উত্তরটির একটি প্রধান পুনর্লিখন মন্তব্যগুলি যদি সিঙ্কের বাইরে থেকে যায়।
আমি এমভিসির আরও ঘনিষ্ঠভাবে তাকানোর সময় আমি ভেবেছিলাম, কিছুক্ষণের জন্য, আমি একটি বড় মেয়া কুলপা শেষ করব। শেষ পর্যন্ত আমি এই সিদ্ধান্তে পৌঁছলাম যে, ওয়েব ফর্মের আর্কিটেকচার এবং পরীক্ষার জন্য আমাদের আরও অনেক বেশি শক্তি ব্যয় করা দরকার বলে মনে করি, এমভিসি সত্যই আমার জন্য ডাকে সাড়া দেয় না। সুতরাং, আন্তরিকভাবে লোকদের ধন্যবাদ জানাই যারা আমার প্রাথমিক উত্তরটির বুদ্ধিমান সমালোচনা সরবরাহ করেছিল।
যারা এটিকে একটি ধর্মীয় যুদ্ধ হিসাবে দেখেছেন এবং যারা নিরলসভাবে বন্যাকে নিচে নামিয়েছেন, আপনি কেন বিরক্ত হন তা আমি বুঝতে পারছি না (একাধিক অনুষ্ঠানে একে অপরের কয়েক সেকেন্ডের মধ্যে 20+ ডাউন-ভোট অবশ্যই স্বাভাবিক নয়)। আপনি যদি এই উত্তরটি পড়ছেন এবং ভাবছেন যে আমার উত্তর সম্পর্কে সত্যই কিছু "ভুল" রয়েছে যদি আপনি দেওয়া উত্তরগুলি তুলনায় স্কোরটি অনেক কম, তবে নিশ্চিত হয়ে নিন যে এটি এমন কিছু লোকের সম্পর্কে আরও বলেছে যারা সাধারণ জ্ঞানের চেয়ে দ্বিমত পোষণ করে সম্প্রদায়টি (সামগ্রিকভাবে, এটি একশবারেরও বেশি ভালভাবে উন্নীত হয়েছে)।
আসল বিষয়টি হ'ল অনেক বিকাশকারী এমভিসির যত্ন নেন না এবং প্রকৃতপক্ষে এটি সংখ্যালঘু দৃষ্টিভঙ্গি নয় (এমনকি ব্লগগুলি ইঙ্গিত করে বলে মনে হয় এমএসের মধ্যেও)।