এইচএমভিসি প্যাটার্নটি কী?


130

কোহানার ডকুমেন্টেশন পড়ে আমি জানতে পেরেছি যে 3.0.০ সংস্করণে মূল পার্থক্য হ'ল এটি এমভিসির পরিবর্তে এইচএমভিসি প্যাটার্নটি অনুসরণ করে যা সংস্করণ ২.x এর মতো করে। কোহানার ডক্স এবং উইকিপিডিয়ায় থাকা পৃষ্ঠাগুলি সম্পর্কে এই পৃষ্ঠাটি আমাকে সত্যিই একটি পরিষ্কার ধারণা দেয়নি।

সুতরাং প্রশ্ন: এইচএমভিসি প্যাটার্নটি কী এবং এটি এমভিসি থেকে কীভাবে আলাদা?


30
কোহানা ফোরামে এই বিষয়টি নিয়ে একটি আলোচনা হয়েছিল। : আপনি এটি সাহায্যের হতে খুঁজে পেতে পারেন forum.kohanaframework.org/discussion/1681
স্যাম্পসন

উত্তর:


86

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

লিঙ্কটি মারা গেছে: নতুন লিঙ্ক - https://web.archive.org/web/20160214073806/http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/


একটি ভাল লিঙ্কের জন্য ধন্যবাদ, এই javaworld.com/jw-07-2000/jw-0721-hmvc.html
ওয়েস কুরেশি


লিঙ্ক সবসময় মারা যাবে! লিঙ্কের পরিবর্তে লিখিত সামগ্রী পোস্ট করুন।
লোকি

58

আমি আমার নিজের পিএইচপি 5.3 HMVC ফ্রেমওয়ার্ক নামক তৈরির প্রক্রিয়ায় বর্তমানে am খাদ । যেহেতু আমি ভারীভাবে এইচএমভিসিতে বিনিয়োগ করেছি এবং বিক্রি করেছি, তাই আমি ভেবেছিলাম যে আমি আলাদা দৃষ্টিভঙ্গি দিতে পারি এবং এইচএমভিসি কেন ব্যবহার করা উচিত এবং এর ফলে কী কী উপকার হয় তা সম্পর্কে আরও ভাল ব্যাখ্যা।

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

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

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

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


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

2
হ্যাঁ, আপনি একটি ভাল পয়েন্ট করা। আমি আসলে দেখুন এই বিন্দু ভাগ এবং এটি অন্য একটি নাম দিয়েছেন - "নেস্টেড MVC" - একটি উপস্থাপনা আমি Confoo 2011 এ SlideShare উপর নির্ভর করে খাদ করেনি মধ্যে, # 20 স্লাইড: slideshare.net/vlucas/alloy-hmvc-php- ফ্রেমওয়ার্ক
ভ্যানস লুকাস

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

1
এই উত্তরটি উইকিপিডিয়া একটি অনুলিপি: / en.wikipedia.org/wiki/...
EricG

3
@ এরিকজ দেখে মনে হচ্ছে যে আমি এখানে দেওয়া উত্তরটি কেউ অনুলিপি করেছেন এবং তারপরে এটি উইকিপিডিয়ায় যুক্ত করেছেন (এটি আমার ছিল না)। উইকিপিডিয়া নিবন্ধের নীচে "রেফারেন্স" বিভাগটি দেখুন - এটি এই মন্তব্যে ফিরে আসে।
ভ্যানস লুকাস

7

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

এই উত্তরটিও দেখুন: /programming/115629/simplest-php-routing-framework/120411#120411


7

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

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

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

[ এপ্রিল ২০১১, মার্চ ২০১২ আপডেট করুন: মন্তব্যের জবাবে উত্তরে প্রসারিত।


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

1
হ্যাঁ, এটির সাথে এবং এটি ব্যতীত কোনও অভ্যন্তরীণ ওয়েব পরিষেবা বাস্তবায়নের চেষ্টা করুন, এটি দেখার জন্য "এটি আসলে এতটা গুরুত্ব দেয় না" to
কেমো

@ কেমো আমি মনে করি এটি একটি দুর্দান্ত স্থাপত্য, আমি কেবল মনে করি নামটি বিভ্রান্তিকর, এবং এর থেকে বোঝা যায় যে কোহানা বিশেষত অস্বাভাবিক কিছু করছে।
এমজেএস

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

4

এইচএমভিসি হায়ারারিকিকাল মডেল ভিউ কন্ট্রোলার normal সাধারণ এমভিসিতে প্রতিটি জিইউআই অবজেক্টের এমভিসি থাকে H তবে এইচএমভিসির বিপরীতে প্যারেন্ট GUI অবজেক্ট এবং চাইল্ড জিইউআই অবজেক্টের মধ্যে কোনও সম্পর্ক নেই। এইচএমভিসিতে প্রতিটি জিইউআই অবজেক্টের চাইল্ড অবজেক্টে অ্যাক্সেস থাকে এবং প্রতিটি শিশু অবজেক্ট তার প্যারেন্ট অবজেক্টে অ্যাক্সেস করতে পারে।

সুতরাং প্রতিটি দৃশ্যে একটি প্যারেন্ট ভিউ থাকে hযা এটি এটি প্যারেন্ট ভিউতে অ্যাক্সেস করতে পারে। প্রতিটি কন্ট্রোলারে একটি প্যারেন্ট কন্ট্রোলার থাকে যার মাধ্যমে এটি ইভেন্টটি পিতামাতার নিয়ামকের কাছে পৌঁছে দিতে পারে (যদি ইভেন্টটি তার সুযোগ না হয়))

বিশদ বিবরণের জন্য এখানে ক্লিক করুন

নতুন লিঙ্কটি এই ঠিকানা


1
একটি উত্তরের উত্তরের চিহ্নটি অন্য কোনও তথ্য বা প্রসঙ্গের সাথে একটি লিঙ্ক নয়। আপনি কি নিজের উত্তরটি ব্যয় করতে এবং লিঙ্কযুক্ত পোস্টের সম্পর্কিত অংশটি সংক্ষিপ্ত করতে পারেন?
কেভ

1
@ সঞ্জয়, কোনও কারণে আপনি এইচএমভিসি নিবন্ধ থেকে মোবাইলের জন্য জিডব্লিউটি রাজ্যের লিঙ্কটির গন্তব্য পরিবর্তন করেছেন?
ব্র্যাড কোচ

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