এমভিসি বনাম এন-টিয়ার আর্কিটেকচার


142

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

চিয়ার্স

উত্তর:


94

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

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

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


56
এন-টায়ারও একটি নকশার প্যাটার্ন, 3-টিয়ার সিস্টেম করার জন্য আপনার 3 টি সার্ভারের দরকার নেই, বাস্তবে, প্রতিটি স্তরকে একটি ধারণাগত ধারণা দ্বারা পৃথক করে একটি ফাইল ব্যবহার করে একটি এন-টায়ার সিস্টেম করা সম্ভব।
magallanes

6
টায়ারটি মূলত বোঝায় যে একটি নেটওয়ার্ক লিঙ্ক জুড়ে একটি আন্তঃসম্পর্কিত যোগাযোগ সাধারণত ঘটে থাকে। আমি একমত নই যে একটি প্রক্রিয়াধীন (একই ফাইলটিতে একা থাকুক) কোড ডিজাইন প্রবাহটি একটি টাইয়ারড ডিজাইন পদ্ধতির গঠন করে। অবশ্যই এটি আইএমএইচও। "সার্ভার" ইঙ্গিত দেয় যে মেশিন একই বাক্সে বেশ কয়েকটি প্রক্রিয়া চালাতে পারে; এবং তারা সম্ভবত এখনও "লোকালহোস্ট" নেটওয়ার্কে কথা বলতে পারে।
জাক

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

1
আমি এই উত্তরটি পড়ার জন্য যে কোনও ব্যক্তিকে অন্য উত্তরগুলি পড়ার পরামর্শ দিচ্ছি, এই উত্তরটি সঠিক নয়
কেইসার

@ ম্যাগল্যানেস, 'জাক' এর সাথে যান, প্রথমে আমাদের টিয়ার এবং লেয়ারের মধ্যে পার্থক্য পরিষ্কার করতে হবে এখানে খুব ভাল কোডড্রজেক্ট নিবন্ধ রয়েছে যেখানে এর স্পষ্ট ব্যাখ্যা রয়েছে
ইরফ

42

যদি 3-স্তরের নকশাটি এরকম হত:

Client <-> Middle <-> Data

এমভিসি প্যাটারটি হ'ল:

     Middle
     ^    |
     |    v
Client <- Data

অর্থ যে:

  • 3-স্তরের সমতলে, স্তরগুলির মধ্যে যোগাযোগ দ্বি-দিকনির্দেশক এবং সর্বদা মধ্য স্তরের মধ্য দিয়ে যায়
  • এমভিসির সমতলে যোগাযোগ একমুখী হয় ; আমরা বলতে পারি যে প্রতিটি "স্তর" বাম দিকে একটি দ্বারা আপডেট করা হয় এবং ঘুরে, ডানদিকে একটি আপডেট করে - যেখানে "বাম" এবং "ডান" নিছক চিত্রণযোগ্য

দ্রষ্টব্য ক্লায়েন্ট হবে দেখুন এবং মধ্য কন্ট্রোলার


13
এমভিসিতে মডেলটি সরাসরি ক্লায়েন্টের সাথে যোগাযোগ করতে পারে (দেখুন) ??? আমি তাই মনে করি না !
পালআলা

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

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

1
এখানে যদি মিডল একটি নিয়ামক হয় তবে মধ্য, ক্লায়েন্ট এবং মিডিলের মধ্যে যোগাযোগ, ডেটা দ্বি নির্দেশামূলক নয় উত্তরগুলিতে বর্ণিত হিসাবে দ্বি নির্দেশমূলক ভিউ মাধ্যমে পাস করার পরে।
ড্রাগন

30

এন-টিয়ার আর্কিটেকচার সম্পর্কে এটিই বলা যায়

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


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

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

2
@ সাম সম্পূর্ণরূপে একমত। স্বজ্ঞাত ধারণার জন্য অনেকগুলি জার্গন।
smwikedia

1
ভাল লাগছে, কাজ করে না উইকিপিডিয়া সত্যের চূড়ান্ত উত্স নয়
এসিভি

আপনি সত্যকে ব্যাখ্যা করার উপায় এটিই আবার আপনার লক্ষ্যগুলি কী তা তার উপর নির্ভর করে
জিনাস

17

একমাত্র মিল এটি যে দুটি প্যাটার্নের তাদের ডায়াগ্রামে তিনটি বাক্স রয়েছে। মৌলিকভাবে তারা তাদের ব্যবহারে সম্পূর্ণ আলাদা। যদি প্রকৃতপক্ষে, কোন প্যাটার্নটি ব্যবহার করা হয় তার মধ্যে এটি সাধারণত কোনও পছন্দ নয়, তবে উভয়ই নিদর্শন একসাথে সুরেলাভাবে ব্যবহার করা যেতে পারে। এখানে দুটির একটি ভাল তুলনা করা হয়েছে: http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html


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

5

ত্রি-স্তরের আর্কিটেকচারের একটি মৌলিক নিয়ম হ'ল ক্লায়েন্ট স্তর কখনই ডেটা স্তরগুলির সাথে সরাসরি যোগাযোগ করে না; একটি ত্রি-স্তরের মডেলটিতে সমস্ত যোগাযোগ অবশ্যই মিডওয়্যারের স্তরের মধ্য দিয়ে যেতে হবে।

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


5

@ চেরি মিডল ওয়্যার এমভিসি প্যাটার্নে অনুরোধ হ্যান্ডলার বা পুনঃনির্দেশকের মতো আরও কাজ করে।

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

  1. ক্লায়েন্ট যে কোনও পরিষেবার জন্য অনুরোধ করে অধিবেশন শুরু করে।
  2. এই অনুরোধটি নিয়ামক (অনুরোধ হ্যান্ডলার, পুনর্নির্দেশকারী ইত্যাদি) দ্বারা প্রাপ্ত এবং পরিচালনা করা হয়েছে
  3. কন্ট্রোলার অনুরোধে একটি মৌলিক তথ্য প্রক্রিয়া করে এবং এটি সম্পর্কিত মডেলে পুনর্নির্দেশ করে যা ডেটা অনুরোধ পূরণ করতে পারে।
  4. মডেল কন্ট্রোলার কর্তৃক পাস হওয়া প্যারামিটার অনুসারে অনুরোধটি পূরণ করে এবং ফলাফলটি নিয়ামকের কাছে ফেরত পাঠায়। (দ্রষ্টব্য: এখানে আমি পরিষ্কার করতে চাই যে সত্যিকারের এমভিসি আর্কিটেকচারে ডেটা সরাসরি ক্লায়েন্টকে ফেরত দেওয়া হয় না, বরং এটি পূরণ করে এবং নিয়ামকের কাছে ফিরে আসে))
  5. দেখুন (ক্লায়েন্ট) এ ডেটা প্রেরণের চেয়ে নিয়ামক।
  6. ক্লায়েন্টের সামনে অনুরোধকৃত পরিষেবা রয়েছে।

এমভিসি সম্পর্কে এটিই আমি জানি।


1
আমি মনে করি, উপরোক্ত বলেন মতো MVC ত্রিদলীয়, যেমন এই দস্তাবেজে ব্যাখ্যা তাই দেখুন কখনো কখনো সরাসরি মডেল এবং ভাইস করার বিপরীতভাবে কথা বলতে পারেন: msdn.microsoft.com/en-us/library/ms978748.aspx
ychaouche

5

নিজেকে একটি বিরতি দিন। বাস্তব-বিশ্ব সমস্যাগুলি সমাধান করার সময় নিজেকে কিছু নিদর্শনগুলিতে সীমাবদ্ধ করবেন না। কেবল কয়েকটি সাধারণ নীতিগুলি মনে রাখুন যার মধ্যে একটি হল কনসার্সের পৃথকীকরণ


4

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


3

একটি এন-টিয়ার আর্কিটেকচারটি ডিপ্লোয়মেন্ট ডায়াগ্রাম ব্যবহার করে সর্বোত্তমভাবে সংজ্ঞায়িত হয়।

একটি এমভিসি আর্কিটেকচার সিকোয়েন্স ডায়াগ্রাম ব্যবহার করে সেরা সংজ্ঞায়িত হয়।

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

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


যদি এমভিসি আপনার প্রদত্ত দৃশ্যের জন্য কোনও কিছু পুনরায় ব্যবহার না করে তবে এন টিয়ার খিলানের তুলনায় এমভিসি এর কোনও সুবিধা রয়েছে।
ড্রাগন

2

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


1

জেরি: এখানে দু'জনের কীভাবে সম্পর্ক রয়েছে তার একটি সাধারণ উদাহরণ এখানে:


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


টায়ার 2 - টিয়ার 1 এর থেকে কোনও ধরণের পরিষেবা বা বার্তাগুলি পুনরুদ্ধার করার উপায় রয়েছে T টিয়ার 1 সম্পর্কে / জানেন না, তাই কেবল উপরের কলগুলির জবাব দিতে পারে - কখনও নিজে থেকে জিনিস জিজ্ঞাসা করবেন না। এছাড়াও সমস্ত ব্যবসায়িক যুক্তি রয়েছে।


টিয়ার 3 - এতে ডোমেন মডেল, ডাটাবেসের অবজেক্টের উপস্থাপনা এবং ডাটাবেস-এন্ট্রিগুলি যোগাযোগ এবং আপডেট করার জন্য সমস্ত যুক্তি রয়েছে ic


1

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


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