এএসপি.নেট এমভিসি মডেল বনাম ভিউমোডেল


92

ঠিক আছে, আমি এমএস-এর এএসপি.নেট এমভিসি সম্পর্কিত "ভিউমোডেলস" সম্পর্কে আলোচনা শুনছি।

এখন, এটি নির্দিষ্ট ধরণের মডেল হওয়ার উদ্দেশ্যে করা হয়েছে, সঠিক? নির্দিষ্ট ধরণের ভিউ নয়।

আমার বোঝার জন্য, এটি এক ধরণের মডেল যার সাথে ভিউয়ের সাথে ইন্টারেক্ট করার একটি নির্দিষ্ট উদ্দেশ্য রয়েছে? নাকি এরকম কিছু?

কিছু ব্যাখ্যা প্রশংসা হবে।

উত্তর:


71

মূলত মডেল এবং দেখুন মডেল দুটি বৈশিষ্ট্য সহ সাধারণ ক্লাস।

এই শ্রেণীর মূল উদ্দেশ্য হ'ল যথাযথভাবে নিয়ামক এবং দৃষ্টিভঙ্গি সম্পর্কিত তাদের শ্রোতাদের জন্য একটি বস্তু ("মডেল") বর্ণনা করা।

সুতরাং আপনি যখন বলবেন তখন আপনি পুরোপুরি সঠিক

আমার বোঝার জন্য, এটি এক ধরণের মডেল যার ভিউয়ের সাথে ইন্টারঅ্যাক্ট করার একটি নির্দিষ্ট উদ্দেশ্য রয়েছে

সুতরাং, যখন মডেল ক্লাসগুলি কার্যকরভাবে ডোমেন সংস্থাগুলি রয়েছে যা আপনার অ্যাপ্লিকেশনটির সাথে যোগাযোগ করে, দেখুন মডেলগুলি এমন এক সাধারণ শ্রেণি যা আপনার দর্শনগুলির সাথে যোগাযোগ করে।

আশা করি এটা সাহায্য করবে :)

আপডেট :

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


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

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

4
ভিউমোডেল (ডোমেন) মডেল থেকে ভিউ আলাদা করার কথা। সুতরাং ভিউমোডেলটি মডেলের কাছাকাছি নয়, ভিউয়ের নিকটে রাখা অর্থপূর্ণ।
ভিতালিয়া ওলান্টিকভ

আমি আমার 'মডেল' ক্লাসগুলিকে কোনও মডেল ফোল্ডারের পরিবর্তে আমার এমভিসি প্রকল্পের বাইরে রাখব - আমি তবে ভিভি মডেলের ক্লাসগুলিকে এমভিসি প্রকল্পের মধ্যে রাখব, যাতে ভিতালিয়া যেমন বলে যে তারা ভিউয়ের কাছাকাছি থাকবে।
ড্যান হ্যারিস

@ লোরেঞ্জো আপনার প্রথম লাইনে আপনি বলেছেন "গুণাবলী সহ দুটি সহজ ক্লাস"। আমি মনে করি আপনি সম্পত্তি সহ বোঝাতে চান? যদি তা না হয় তবে আপনি কোন বৈশিষ্ট্যের প্রতি উল্লেখ করছেন? বৈশিষ্ট্য বনাম বৈশিষ্ট্য
xr280xr

69

সহজ শর্তে, আমি নিম্নলিখিতগুলি সম্পর্কে ভাবতে পছন্দ করি:

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

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

উদাহরণ হিসাবে, আপনার মডেলটিতে নিম্নলিখিত বৈশিষ্ট্য থাকতে পারে যা আপনার ডেটা উত্সের প্রত্যক্ষ উপস্থাপনা:

    public string FirstName { get; set; }
    public string LastName { get; set; }

এখন, যেহেতু আপনার ভিউ মডেলটি আপনার দৃশ্যের সাথে আবদ্ধ, এতে নিম্নলিখিত বৈশিষ্ট্য থাকতে পারে - যা মডেলটির ফার্স্টনাম ক্ষেত্র এবং লাস্টনাম ফিল্ডকে এক সাথে যুক্ত করে:

    [Display(Name = "Customer Name")]                
    public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}

4
আপনি কি ভিউমোডেলের পূর্ণ উদাহরণ সরবরাহ করতে পারেন? এটি কীভাবে জানতে পারে যে মাইমোডেল কী এবং এটি কীভাবে মাইমোডেলের ডেটা পায়?
এম কেনেন II

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

26

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

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

http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx


19

উইকিপিডিয়াতে মডেল বনাম মডেলভিউয়ের আরও সম্পূর্ণ বিবরণ রয়েছে যার চেয়ে আপনি কোনও এসও উত্তর পাবেন: http://en.wikedia.org/wiki/Model_View_ViewModel

আমি উদ্ধৃতি:

মডেল : ক্লাসিক এমভিসি প্যাটার্নের মতো, মডেলটি (ক) এমন একটি অবজেক্ট মডেলকে বোঝায় যা প্রকৃত রাজ্য বিষয়বস্তুকে উপস্থাপন করে (একটি বস্তু-ভিত্তিক দৃষ্টিভঙ্গি), বা (খ) সেই ডেটা অ্যাক্সেস স্তর যা সেই বিষয়বস্তুকে উপস্থাপন করে (একটি ডেটা- কেন্দ্রিক পদ্ধতির)।

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

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


4
মডেল এবং ভিউমোডেলের একটি বর্ণনা রয়েছে, সেই লিঙ্কটি কেবল এমভিভিএম আর্কিটেকচারাল প্যাটার্নটি বর্ণনা করছে। মডেল এবং দেখুন মডেলের মধ্যে পার্থক্য নয়
লরেঞ্জো

5

এখানে ভিউমোডেলের ধারণা রয়েছে তবে এটি সাধারণত Asp.net এমভিসির সাথে সম্পর্কিত নয়। এমভিসি মডেল ভিউ কন্ট্রোলার প্যাটার ব্যবহার করে, যেখানে নিয়ামক ইন্টারঅ্যাকশন পরিচালনা করে, মডেল থেকে ডেটা তৈরি করে এবং তারপরে সেই ডেটা প্রদর্শনের জন্য ভিউতে প্রেরণ করে।

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

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


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

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