আমি একবার একটি এমভিভিএম / ডাব্লুপিএফ প্রকল্প শুরু করেছি, যা শেষ পর্যন্ত নির্মিত এবং স্থাপন করা হয়েছিল এবং এর জন্য আমি প্রচুর ক্যালিবার্ন.মাইক্রো এমভিভিএম ফ্রেমওয়ার্ক অধ্যয়ন করেছি। আসল বিষয়টি হ'ল: আমি এর জন্য ক্যালিবার্ন M মাইক্রো ব্যবহার না করে শেষ করেছি এবং কিছু এমভিভিএম ধারণা নিজেই প্রয়োগ করেছি (বিশেষত, কেবলমাত্র ViewModelBase
এবং RoutedCommand
ক্লাসগুলি)।
এখন একই লাইন ধরে আমাকে কিছুটা বড় প্রকল্পে নিয়োগ দেওয়া হয়েছিল: একটি "সিঙ্গল-ইউজার রিচ ক্লায়েন্ট অফলাইন ডেস্কটপ অ্যাপ্লিকেশন", তাই বলে, এবং আমি ক্যালিবার্ন.মাইক্রো ব্যবহার করার সিদ্ধান্ত নিয়েছি। আর সেখান থেকেই আমার "সমস্যা" শুরু হয়।
আমি এই বিখ্যাত ব্লগ পোস্টে পড়েছি , যার শিরোনামে বলা হয়েছে যে "আপনি যদি এমভিভিএম ব্যবহার করেন তবে আপনার একটি কাঠামো দরকার ", যে:
"একটি কাঠামো ছাড়াই এমভিভিএম এর মতো কিছু করার চেষ্টা করা বিশাল পরিমাণের কাজ d টন ডুপ্লিকেট কোড, চাকাটি পুনরায় উদ্ভাবন করা, এবং মানুষকে অন্যরকমভাবে চিন্তা করতে পুনরায় প্রশিক্ষণ দেওয়া ।
কমপক্ষে কোনও কাঠামোর সাহায্যে আপনি সদৃশ কোডটি এড়ান এবং আশা করি চাকাটি পুনরায় উদ্ভাবন করতে হবে না - আপনাকে লোক প্রশিক্ষণে মনোনিবেশ করার অনুমতি দেয়। পুনরায় প্রশিক্ষণ অংশটি সাধারণত অনিবার্য, তবে একটি কাঠামো নদীর গভীরতানির্ণয় কোড এবং কাঠামো সরবরাহ করে, প্রক্রিয়াটিকে সহজ করে তোলে। "
আমি প্রথম পড়ার উপর একমত হব তবে আমার আসল প্রয়োগে ক্যালিবার্ন। মাইক্রো (সিএম) এর সাথে আমার আসল অভিজ্ঞতা হ'ল অজ্ঞতা ও বিচ্ছিন্নতার। এটি হ'ল, কাঠামোটি একেবারেই বিপরীতক্রমে প্রক্রিয়াটি সহজ করে তোলে না। বরং (খুব) অনানুষ্ঠানিক ডকুমেন্টেশনে রব আইজেনবার্গের সরবরাহ করা সর্বদা পুনরাবৃত্তি করার উদাহরণগুলি পড়া এবং সংশ্লেষিত সরবরাহিত নমুনাগুলি এবং তাদের সম্পূর্ণ পরোক্ষ শ্রেণি এবং ইন্টারফেস সম্পর্কের অনুমানের চেষ্টা করা, যেখানে মনে হয় যে জিনিসগুলি কাজ করে ডিজাইন করা হয়েছে তার উপর ভিত্তি করে পার্শ্ব প্রতিক্রিয়াগুলি, আপনি অসম্পূর্ণ প্রতিভা না থাকলে মানবিকভাবে অসম্ভব বলে মনে হয় (অভিজাতটির জন্য দুঃখিত, তবে আমি অনুমান করি যে আপনি কী বোঝাতে চেয়েছিলেন)।
উপরের-তুচ্ছ কোনও দৃশ্যে আইওসি পাত্রে জড়িত বলে মনে হচ্ছে না, যা এমন কোনও বিষয় যা আমি কখনও কাজ করি নি এবং যা মনে হয় এমন একটি সমস্যার সমাধানও করে বলে মনে হচ্ছে । আমার সমস্যা এবং অ্যাপ্লিকেশন ডোমেনগুলি সম্পর্কে চিন্তাভাবনা করার পরিবর্তে আরও বেশি প্রকল্পের সময়গুলি সেগুলি শেখার মতো ব্যয় করার মতো মনে হয় না। আমি কেবল একটি কলা চেয়েছিলাম, কিন্তু সিএম আমাকে একটি গরিলা (আইওসি) দিয়েছিলেন একটি কলার কলা holding
আমি এখন আমার হোমস্পান এমভিভিএম কাঠামোর দিকে ফিরে যাওয়ার কথা ভাবছি - আমি যে বাস্তবিকই প্রয়োগ করতে চাইছি তার মধ্যে কয়েকটি মুভিভুক্ত এমভিভিএম-নির্দিষ্ট শ্রেণীর সমন্বয়ে - আমি এখানে কিছু হারাতে পারলে আমি কমপক্ষে মুখ্যমন্ত্রীকে একটি সুযোগ দিতে চাই, বা নিছক অনভিজ্ঞতা এবং অজ্ঞতার বাইরে কেবল স্পষ্টভাবে জিনিসগুলি "ভুল উপায়ে" করা। এবং তাই প্রশ্নটি হ'ল:
"Frameাকা কাঠামোগুলি জিনিসগুলিকে সহজ এবং আরও প্রাকৃতিক করে তোলে" এর ব্যাপক sensকমত্য রয়েছে, তবে আমি যদি এর বিপরীতে অভিজ্ঞ হয়ে পড়ি তবে এর অর্থ কি এই কাঠামোটি ব্যবহার করা উচিত নয়, বা আমি এটি ভুল উপায়ে শেখার চেষ্টা করছি? এমন কি কোনও সূত্র আছে যা আমার প্রথম স্থানে কোনও ফ্রেমওয়ার্ক ব্যবহার করা উচিত নয়? অথবা কীভাবে সাধারণ এমভিভিএম বিকাশের জন্য সিএম ব্যবহার করবেন তা বোঝার কিছু "সঠিক" উপায় আছে?
RelayCommand
বাস্তবায়ন খুঁজে পাইনি (যেহেতু এটি আইকোমন্ড প্রোপার্টিগুলিকে আবদ্ধ না করে কনভেনশন দ্বারা সরাসরি পদ্ধতিগুলিতে "আবদ্ধ")।
RelayCommand
যদি ক্যালিবার্ন মাইক্রো ব্যবহার করা আপনার পক্ষে কাজ না করে তবে আপনি অন্য লাইব্রেরি থেকে কেন ব্যবহার করতে পারবেন না তার কোনও কারণ আমি দেখতে পাচ্ছি না ।
EventAggregator
এবংNotificationObject
একটি ভিউমোডেলবেস এবং এমভিভিএম লাইটেরRelayCommand
আদেশগুলি ব্যবহার করতে চাই। গুরুত্বপূর্ণ বিষয় হ'ল কাঠামোটি আপনার জন্য কী সমস্যাগুলি সমাধান করতে চলেছে তা চিহ্নিত করা এবং কেবলমাত্র সেগুলি সমাধানগুলি ব্যবহার করুন। আপনি পুরো ফ্রেমওয়ার্ক লাইব্রেরিটি ব্যবহার করতে বাধ্য হবেন বলে মনে করবেন না।