কোন অবস্থার অধীনে এমভিভিএম ব্যবহার উপযুক্ত?


47

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

এখানে চিত্র বর্ণনা লিখুন

বেশিরভাগ সফ্টওয়্যার নিদর্শনগুলির মতো, এমভিভিএম এর যথাযথ ব্যবহার এবং এর অপব্যবহার রয়েছে। এমভিভিএম ব্যবহার কোন পরিস্থিতিতে উপযুক্ত? কবে অসুস্থ পরামর্শ দেওয়া হয়?


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

1
@ স্টিভ 314 এটি বিতর্কিত। আমি বলব এটি এটির উপর নির্ভর করে: এমভিভিএমকে একটি সুন্দর ডিজাইনের পথে না যেতে দিন এবং অবশ্যই আপনার পণ্যটি শিপিং বন্ধ করতে দেবেন না।
লুক পুপলেট

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

@ স্টিভ 314 রজার
লুক পুপলেট

উত্তর:


19

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

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

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

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


1
কয়েক বছর দ্রুত এগিয়ে: নকআউট সম্পর্কে আপনি কেমন অনুভব করেন? আমি ডাব্লুপিএফ থেকে আসার পরে এটি ব্যবহার করেছি এবং ডাব্লুপিএফের তুলনায় এটি কতটা হালকা ওজনের অনুভূত হয়েছিল তা জানতে পেরে আনন্দিত হয়েছিল এবং এটি আমার জন্য "ওভারকিল" দিকটি অনেকটা কেড়ে নিয়েছে।
জে

15

কখনও কখনও এমভিভিএম একটি ফাঁদ হতে পারে। আমার অভিজ্ঞতা থেকে এটি CRUD- এর মতো অ্যাপ্লিকেশনগুলির পক্ষে (ডেটা ফর্মগুলি) বনাম আরও টাস্ক-ওরিয়েন্টেড UIs এর পক্ষে। আমি বলছি না যে এটি অ্যাপ্লিকেশনের পিছনে / অন্য স্তরগুলির জন্য খারাপ আর্কিটেকচারকে বোঝায় তবে আমি অনেকগুলি এমভিভিএম অ্যাপ্লিকেশনকে "ডিডিডি লাইট" আর্কিটেকচারের সাথে দেখেছি। আমি জানি না কেন সম্ভবত কারণ বাঁধাই করা খুব সহজ এবং কোনও ওআরএম এবং এমভিভিএম / বাইন্ডিং দিয়ে পোকো / অ্যানিমিক ডোমেন অবজেক্ট ব্যবহার করে কোনও অ্যাপ্লিকেশন সেটআপ করা খুব সহজ।


10
একজন বিকাশকারীর কল্পনার অভাব প্যাটার্নটির ব্যর্থতা নয়। টাস্ক-ওরিয়েন্টেড ভিউমোডেলগুলি তৈরি করা বেশ সহজ।
শন

6
আপনি সেই সংক্ষিপ্ত কিছুটি প্রসারিত করতে চাইতে পারেন।
রোমান রেইনার

13

এমভিভিএম হ'ল দুর্বল নকশাকৃত ডেটা বাইন্ডিং স্তরগুলির জন্য একটি ব্যান্ড-সহায়তা। বিশেষত, ডব্লিউপিএফ / এক্সএএমএল-তে ডেটা বন্ডিংয়ের সীমাবদ্ধতার কারণে এটি ডাব্লুপিএফ / সিলভারলাইট / ডাব্লুপি 7 জগতে প্রচুর ব্যবহার দেখতে পেয়েছে।

এখন থেকে, আমি ধরে নেব যে আমরা ডাব্লুপিএফ / এক্সএএমএল এর সাথে কথা বলছি কারণ এটি বিষয়গুলি আরও পরিষ্কার করে দেবে। এমভিভিএম ডাব্লুপিএফ / এক্সএএমএল সমাধানের জন্য নির্ধারিত কিছু ত্রুটিগুলি দেখুন।

ডেটা শেপ বনাম ইউআই শেপ

এমভিভিএম-এর 'ভিএম' সিএম-এ সংজ্ঞায়িত অবজেক্টের একটি সেট তৈরি করে যা মানচিত্রটি এক্সএএমএল-এ সংজ্ঞায়িত উপস্থাপনের সামগ্রীর উপর সেট করে। এই সি # অবজেক্টগুলি সাধারণত উপস্থাপনা অবজেক্টগুলিতে ডেটা কনটেক্সট বৈশিষ্ট্যের মাধ্যমে এক্সএএমএল-এর সাথে সংযুক্ত থাকে।

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

ভিউ মডেল অবজেক্ট গ্রাফটি ui অবজেক্ট গ্রাফ থেকে মডেল অবজেক্ট গ্রাফটিকে সাফল্যের সাথে ডিউপল করে তবে অতিরিক্ত ভিউ মডেল স্তর ব্যয় করে এটি অবশ্যই নির্মিত এবং রক্ষণাবেক্ষণ করতে হবে।

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

আনস্প্রেসিভ ডেটা বাইন্ডিংয়ের আশেপাশে কাজ করা

ডাব্লুপিএফ / এক্সএএমএল বাইন্ডিংগুলি অপর্যাপ্তভাবে প্রকাশযুক্ত ive আপনি মূলত কোনও অবজেক্টে পৌঁছানোর উপায় প্রদান করতে পারেন, একটি সম্পত্তি পথ পাড়ি দেওয়ার জন্য এবং উপস্থাপনের বস্তুর যা প্রয়োজন তার সাথে ডেটা প্রপার্টিটির মানটিকে অভিযোজিত রূপান্তরকারীকে বাধ্য করে।

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

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

ডেটা অ্যাক্সেস আক্রমণাত্মকভাবে বাদ দেওয়া হয়

যেহেতু ডেটা কনটেক্সট বৈশিষ্ট্যগুলির মাধ্যমে ডেটা সাধারণত ইউআইতে প্রবেশ করে তাই আপনার অ্যাপ্লিকেশন জুড়ে নিয়মিতভাবে বৈশ্বিক বা সেশন ডেটার প্রতিনিধিত্ব করা শক্ত।

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

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

একটি উদাহরণ যেখানে এমভিভিএম পড়ে যায়

বলুন আমাদের কাছে ব্যবহারকারীদের একটি তালিকা রয়েছে। প্রতিটি ব্যবহারকারীর পাশে, আমরা একটি "ব্যবহারকারী মুছুন" বোতামটি প্রদর্শন করতে চাই তবে কেবলমাত্র বর্তমানে লগ ইন করা ব্যবহারকারী যদি প্রশাসক হন। এছাড়াও, ব্যবহারকারীদের নিজেকে মুছে ফেলার অনুমতি নেই।

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

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

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

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

কীভাবে জিনিস হতে পারে

উপরে বর্ণিত ক্ষেত্রে, আমি বলতে চাই:

<Button Visibility="{CurrentUser.IsAdmin && CurrentUser.Id != Id}" ... />

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

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

(আপনি আরও পড়া সন্ধানের ক্ষেত্রে এই পদ্ধতির মাঝে মাঝে "ফাংশনাল রিঅ্যাকটিভ প্রোগ্রামিং" হিসাবে উল্লেখ করা হয়)।

উপসংহারে

আপনার যদি ডাব্লুপিএফ / এক্সএএমএলএলতে অবশ্যই কাজ করতে হয় তবে আমি এখনও এমভিভিএমের প্রস্তাব দিই না।

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

এমভিভিএম আপনাকে আপনার কোডটি আরও ভার্বোজ, কম রক্ষণাবেক্ষণযোগ্য পদ্ধতিতে কাঠামো করতে বলেছে।

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

আরও ভাল - এক্সএএমএলকে আরও উদ্বেগজনক কিছু দিয়ে প্রতিস্থাপন করুন। সিএমএল অবজেক্টগুলি ইনস্ট্যান্ট করার জন্য এক্সএএমএল একটি খুব সাধারণ এক্সএমএল ফর্ম্যাট - এটি আরও বেশি উদ্বেগজনক বৈকল্পিকের সাথে আসা শক্ত হবে না।

আমার অন্যান্য প্রস্তাবনা: এমন কৌশল সরঞ্জাম ব্যবহার করবেন না যা এই ধরণের আপসকে বাধ্য করে। তারা আপনার সমস্যার ডোমেনটির দিকে মনোনিবেশ করার পরিবর্তে আপনাকে এমভিভিএমের মতো ক্র্যাপের দিকে ঠেলা দিয়ে আপনার শেষ পণ্যের গুণমানকে আঘাত করবে।


23
-1: এই পয়েন্টগুলির বেশিরভাগ অগভীর এবং বেশিরভাগ সমস্যাগুলি নির্দিষ্ট ডাব্লুপিএফ বৈশিষ্ট্যগুলি ব্যবহার করে কাটিয়ে উঠতে পারে। আমি মনে করি আপনি এমভিপি প্যাটার্নটির বিন্দুটি পুরোপুরি মিস করেছেন।
ফালকন

14
উদাহরণ: "এর মধ্যে একটি বিশাল অপূর্ণতা রয়েছে - ডেটা প্রায়শই সেভাবে কাজ করে না your ডান - এজন্য আপনার প্রথম স্থানে একটি ভিউমোডেল রয়েছে।
ফ্যালকন

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

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

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

8

আমি সত্যিই এমভিভিএম পছন্দ করি এবং আমি এর চ্যালেঞ্জগুলি অনুপ্রেরণা খুঁজে পেয়েছি এবং এর অনেকগুলি সুবিধা দেখতে পাচ্ছি, তবে ...

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

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

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

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

সামগ্রিকভাবে যদিও - আপনি যদি সমস্ত প্রতিবন্ধকতাগুলি কাটিয়ে উঠেন এবং প্যাটার্নে মোটামুটি দক্ষ হয়ে উঠেন - তবে এগুলি সমস্ত স্পষ্টতা, রক্ষণাবেক্ষণ এবং ... দাম্ভিকতার অধিকারগুলিতে ফিরিয়ে দেয়? :)


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

6
@ শিয়ান, দুঃখিত, আমি আমার তৃতীয় দিনে রয়েছি, এবং এখনও লড়াই করছি :( সম্ভবত কারণ আমি 'জটিল' জিনিসগুলি যেমন ডায়লগ বাক্সগুলি খোলার চেষ্টা করছি বা নির্বাচিত আইটেমটি আমার মডেল থেকে ট্রিভিউতে সেট করার চেষ্টা করছি ...
বেনজল

8

আমি বহু বছর ধরে এমভিভিএম-এ ট্রেডিং সিস্টেমের মতো বিশাল অ্যাপ্লিকেশন তৈরির জন্য ডব্লিউপিএফ / সিলভারলাইট প্রোগ্রামার হয়েছি।

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

কোড-ব্যাকড না থাকা সর্বাধিক বেসিক ফর্ম / ডাটাবেস অ্যাপ্লিকেশন ব্যতীত এটি অসম্ভব।

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

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

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

কেবলমাত্র এর প্রয়োজনে নিয়ন্ত্রণের একটি সেট আপ না করে কেবল কোড-পেছনের এবং চতুর ইউআই স্টাফকে ভিউতে লিখতে প্রায়শই সহজ হয়।

এমভিভিএমের লক্ষ্য হ'ল অ্যাপ্লিকেশন / ব্যবসায় যুক্তিটিকে ইউআই যুক্তি থেকে পৃথক করা। বাইন্ডিং সিস্টেম এবং এমভিভিএম এটি করার একটি দুর্দান্ত উপায়।

অন্যান্য লক্ষ্যগুলি যেমন: একটি ডেস্কে এক্সএএমএল ডিজাইনার, অন্যদিকে সি # প্রোগ্রামার, অন্যটি ভিএসে ব্লেন্ডে কাজ করা, একটি মিথ্যাচার as

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

আমার জন্য, আমি আমার অ্যাপ্লিকেশন লজিককে পৃথক রাখতে এমভিভিএম ব্যবহার করি (আমি সাধারণত টেস্টেবল কন্ট্রোলার এবং লজিকলেস ভিউ মডেলের একটি সেট ব্যবহার করি) তবে আমার ইউআই চেহারা এবং সেক্সি উপায়ে অভিনয় করার জন্য কোড এবং ট্রিকস যা প্রয়োজন তা আমি করি না এটা ঘাম.

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

জীবনের বেশিরভাগ জিনিসের মতো এমভিভিএমের দুটি চরমের মাঝে কোথাও একটি মিষ্টি স্পট রয়েছে

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


7

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

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

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

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

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


4

এমভিভিএম ব্যবহার করা কখনই তা বোঝায় না:

  • আপনি ডাব্লুপিএফ বা সিলভারলাইটের সাথে কাজ করছেন না
  • আপনি একটি ধারণা পরীক্ষা করছেন

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

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

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


3

এমভিভিএমকে টস ইন করে রূপান্তর করার প্রয়াসের সাথে কোড-পিছনে থাকা একটি প্রকল্পে আমি ক্লায়েন্টের জন্য কিছু কাজ করেছি এবং এটি ছিল বিশাল এক জগাখিচুড়ি। এটি বলে না যে সমস্ত কোড-পিছনের প্রকল্পগুলি একটি জগাখিচুড়ি। মতামতগুলি ত্রুটি বা ক্র্যাশ করবে মিশ্রণ যা ডিজাইনারদের জন্য সমস্যা তৈরি করেছিল।

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

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

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


2

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

ডব্লিউপিএফ কম্পোজিটস

http://wpfcomposites.codeplex.com/

এখানে, ডাব্লুপিএফ-এর জন্য সংক্ষিপ্ত সি # কোড-ব্যাকড গ্রিড-ভিত্তিক কম্পোজিটগুলির মাধ্যমে ইউআইয়ের শীর্ষে একটি সাধারণ ম্যাট্রিক্সকে আচ্ছাদন করে তৈরি করা হয়। যদি কোনও আধুনিক এক্সএএমএল ইউআইতে কেবল কয়েকটি পাঠ্য লেবেল এবং ফটোগুলির একটি তালিকাবক্স থাকে তবে কেন এটি সাধারণ কোডের লাইন দ্বারা সংজ্ঞায়িত করা যায় না: গ্রিড Aএডটেক্সট (গাইড, এক্স সমন্বিত, y স্থানাঙ্ক)? দ্রষ্টব্য, এটি কোনও ক্যানভাসে নেই, তবে এখনও ডাব্লুপিএফ কনটেইনারগুলির মধ্যে রয়েছে: গ্রিড, ডকপ্যানেল ইত্যাদি W এই পদ্ধতির নিছক এটির উপর নির্ভর করে।

বিকাশকারীরা সাধারণত ম্যাট্রিক এবং সূচকগুলি মনে করেন না। জিইউডির ডেটা ট্রান্সফার অবজেক্টস (ডিটিও) বা পোকো দ্বারা সংজ্ঞায়িত একটি মোটা-দানাদার ধারক স্তর দিয়ে শুরু করুন, তারপরে এই কীড পাত্রে প্রশংসনীয় সারি এবং কলামগুলির সূক্ষ্ম-দানযুক্ত ম্যাট্রিক্স দ্বারা প্রশংসা করুন?

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

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


-2

এমভিভিএম মূলত আমি যে ইউআই কাঠামোটি ব্যবহার করছি তার চারপাশে ভিত্তিক। সুতরাং ডাব্লুপিএফ বা সিলভারলাইটের মতো এমন কিছু যা একটি ডেটাকনটেক্সটকে আবদ্ধ করার উপর ভিত্তি করে একটি দৃষ্টান্ত তৈরি করে, সেই ডেটাঅন্টেক্সটকে সর্বদা একটি ভিউ মডেল বলা যেতে পারে।

আমার কাছে প্রশ্নটি হল আপনি কখন একটি বড় ফ্যাট পৃথক শ্রেণি তৈরি করেন যা এই নিয়ন্ত্রণ / উইন্ডো / অ্যাপ্লিকেশনের ভিউ মডেল এবং আপনি ইতিমধ্যে নির্মিত অবজেক্টগুলি ব্যবহার করে কখন পালাতে পারবেন।

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

স্বল্প উত্তরের জন্য, কমান্ড লাইন অ্যাপস বা ওয়েব পরিষেবাদির জন্য এমভিভিএম উপযুক্ত নয় :)

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