উইন্ডোজ ফর্মগুলির জন্য ইউআই ডিজাইনের প্যাটার্ন (ডাব্লুপিএফের জন্য এমভিভিএমের মতো)


159

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



5
এটি একটি ভাল প্রশ্ন বলে মনে হচ্ছে। ভোট এবং তারাগুলি দেখুন ..
নওফাল

13
আমি যে কথোপকথনটি অনুসন্ধান করছিলাম ঠিক তখন এটি কীভাবে গঠনমূলক নয়? মডারেট, ডিক্টেট না!
সিএডি 0

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

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

উত্তর:


94

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

সি # তে চৌকস নীতি, প্যাটার্নস এবং অনুশীলনগুলি ...

আপনি সোর্স কোড পেতে পারেন সোর্স কোড

সম্পাদনা করুন:

এমভিপি প্যাটার্নের দুটি বৈচিত্র রয়েছে (ক) প্যাসিভ দর্শন এবং (খ) তদারকি নিয়ন্ত্রক

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

আমি নীচের এমভিপি কাঠামো এমভিসি # - একটি এমভিপি ফ্রেমওয়ার্কটি একবার দেখার পরামর্শ দিচ্ছি

নাম দিয়ে যাবেন না (এটি একটি এমভিপি কাঠামো)।

সাধারণ উইনফর্মগুলি এমভিপি ভিডিও উইনফর্মগুলি - এমভিপি

ড্রপডাউন তালিকা এমভিপি - ড্রপডাউনলিস্টের সাথে কাজ করার একটি উদাহরণ

সরল ট্রিভিউ বাইন্ডিং উদাহরণ (দরিদ্র লোকের বাঁধাই)। আপনি বাইন্ড্রি () তে যে কোনও ট্রিভিউ সুনির্দিষ্ট যুক্তি যুক্ত করতে পারেন।

নীচে কোড স্নিপেট .... পরীক্ষা করা হয়নি, সরাসরি চিন্তা থেকে কুইড করা হয়েছে ....

public interface IYourView
{
   void BindTree(Model model);
}

public class YourView : System.Windows.Forms, IYourView
{
   private Presenter presenter;

   public YourView()
   {
      presenter = new YourPresenter(this);
   }

   public override OnLoad()
   {
         presenter.OnLoad();
   }

   public void BindTree(Model model)
   {
       // Binding logic goes here....
   }
}

public class YourPresenter
{
   private IYourView view;

   public YourPresenter(IYourView view)
   { 
       this.view = view;
   }

   public void OnLoad()
   {
       // Get data from service.... or whatever soruce
       Model model = service.GetData(...);
       view.BindTree(model);
   }
}

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

বিটবঙ্ক - আমি উত্তরটি আপডেট করেছি এবং আমি আরও তথ্য পেতে পারি কিনা তা যাচাই করে নেব।
রাজেশ স্তম্ভ

1
বাইন্ড্রি পদ্ধতিটি আমার কাছে কিছুটা ত্রুটিযুক্ত বলে মনে হচ্ছে। হঠাৎ দর্শনটি মডেলটি জানেন। এটা কি একটি ভাল জিনিস? এই ধরণের সমস্যার মুখোমুখি হতে হবে প্রচুর পোপল। আমি অবাক হই যে এটি সম্পর্কে কোনও বই নেই। যেহেতু। নেট বিশ্বের সমস্ত কিছু সম্পর্কে বই রয়েছে।
বিটবঙ্ক

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

14

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

আপনি যদি সবকিছু ভাল পদ্ধতিতে শুরু করতে চান তবে আপনাকে স্মার্ট ক্লায়েন্ট তৈরির কাঠামোটি ব্যবহার করতে হবে। সুতরাং আমি সেই নকশা এবং অনুশীলনগুলি ব্যবহার করার পরামর্শ দেব: স্মার্ট ক্লায়েন্ট সফটওয়্যার ফ্যাক্টরি http://www.codeplex.com/smartclient

আপনার বর্তমান স্মার্ট ক্লায়েন্ট ফ্রেমওয়ার্কগুলি সম্পর্কে এখানে আলোচনা রয়েছে: http://codebetter.com/blogs/glenn. block / archive / 2008 / 05/10 / prism-cab-and-winforms-futures.aspx

পিএস: এমভিপি বিরোধী নিদর্শনগুলিতে আমি এই পোস্টটি পছন্দ করি: http://blog.mattwynne.net/2007/06/13/mvp-smells/

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


9

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

WAF উইন্ডোজ ফরম অ্যাডাপ্টার দেখায় কিভাবে উইন্ডোজ ফরম অ্যাপ্লিকেশন MVVM প্যাটার্ন প্রযোজ্য হবে।


3
ডাব্লুএফএফ উইন্ডোজ ফর্ম নয়, ডাব্লুপিএফের জন্য। লিঙ্কটি বিভ্রান্তিকর।
বেন্টলে ডেভিস

2
লিঙ্কটি বিভ্রান্তিকর নয়। ডাব্লুএফএ উইন্ডোজ ফর্ম অ্যাডাপ্টার একটি এমভিভিএম অ্যাপ্লিকেশন নিয়ে আসে যা দুটিবার প্রয়োগ করা হয়: ১. উইনফর্মস; 2. ডাব্লুপিএফ। উভয় অ্যাপ্লিকেশন নীচের স্তরগুলি ভাগ করে যা ইউআই প্রযুক্তি থেকে পৃথক।
jbe

5

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

নেট নেটফর্মগুলির জন্য এমভিভিএম

এমভিভিএম (মডেল ভিউ ভিউ মডেল) এমন পরিবেশের ডেটা থেকে উপস্থাপনাটি পৃথক করার জন্য অনুরূপ পদ্ধতির প্রবর্তন করে যা ডেটা বাইন্ডিং (ডাব্লুপিএফ )কে ক্ষমতা দেয়। যেহেতু .NET ফ্রেমওয়ার্ক 2.0 ইতিমধ্যে উন্নত ডেটা বাইন্ডিং অবকাঠামো সরবরাহ করে যা অ্যাপ্লিকেশন অবজেক্টগুলির ডিজাইনের সময় বাঁধাইয়ের অনুমতি দেয় - 'ভিউ মডেল' সত্তা এমভিপি ভিত্তিক পরিবেশে বেশ ভাল ফিট করতে পারে।


4

আমি আমার দুই প্রযুক্তিবিদ সহকর্মীদের কাছে একই প্রশ্নটি জিজ্ঞাসা করেছি: উইন্ডোজফোর্সের জন্য এমভিভিএম কি সম্ভব? উভয়ই আমাকে ঠিক একই উত্তর দিয়েছে: " কোনও উপায় নেই! উইন্ডোজ ফর্মসগুলি ডাব্লুপিএফ এবং সিলভারলাইট (ওয়ানটাইম, ওয়ানওয়ে, টুওয়ে, ওয়ানওয়েটোসোর্স) এর সমৃদ্ধ বাঁধন অনুপস্থিত এবং এটি টাইপকন্টার্টারগুলি অনুপস্থিত ।"

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

আবার, উইনফর্মগুলির জন্য কি আমাদের এমভিভিএম থাকতে পারে? হ্যাঁ আমরা পারি. আমরা সব টুকরা আছে। আমাদের কেবল তাদের একসাথে আঠালো করতে হবে।


4

আমি বিশ্বাস করি যে এমভিপি হ'ল উইনফর্মস বিকাশের পক্ষে উপযুক্ত একটি প্যাটার্ন - যেমনটি সিএবি -এর উইনফোর্মে মাইক্রোসফ্টের কাঠামোর ব্যবহার দ্বারা আংশিক প্রমাণিত ।

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

আমি আমার নিজস্ব প্রকল্পটি উল্লেখ করতে পারি যেখানে আমি এমভিপি প্যাটার্ন এক্সপেশনআরপোর্টার.এনইটি ব্যবহার করি । যদিও আমি নিশ্চিত যে আমি এটি পুরোপুরি ব্যবহার করি না।

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

WinForms মধ্যে সবচেয়ে মূল্যবান খেলোয়াড় ব্যবহারের মান আরো প্রমাণ জন্য সবচেয়ে মূল্যবান খেলোয়াড় ব্যবহার করে Boodhoo এর ভিডিও উপস্থাপনা দেখুন: http://www.bestechvideos.com/2008/06/29/dnrtv-show-14-jean-paul-boodhoo-on-model -ভিউ-উপস্থাপক এবং একই লেখকের একটি এমএসডিএন নিবন্ধ http://msdn.microsoft.com/en-us/magazine/cc188690.aspx


বুধুর স্টাফগুলি উইনফোর্ডগুলি নয়, ওয়েবফর্ম সম্পর্কিত বলে মনে হয়। পরে ভিডিওতে আরও কিছু না থাকলে ...?
রজার লিপসক্বে

3

বাইন্ড্রি পদ্ধতিটি আমার কাছে কিছুটা ত্রুটিযুক্ত বলে মনে হচ্ছে। হঠাৎ দর্শনটি মডেলটি জানেন। এটা কি একটি ভাল জিনিস? এই ধরণের সমস্যার মুখোমুখি হতে হবে প্রচুর পোপল। আমি অবাক হই যে এটি সম্পর্কে কোনও বই নেই। যেহেতু। নেট বিশ্বের সমস্ত কিছু সম্পর্কে বই রয়েছে।

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

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

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

আবার এর মূল বিষয় হ'ল প্রতিটি স্তর একে অপরের সাথে কীভাবে যোগাযোগ করে তা সংক্ষিপ্তভাবে সংজ্ঞায়িত করতে ইন্টারফেসগুলির ব্যবহার।

আমার নিজের অ্যাপ্লিকেশনটিতে (ধাতু কাটার মেশিন চালানোর জন্য ব্যবহৃত একটি সিএডি / সিএএম অ্যাপ্লিকেশন) আমার কাঠামোটি দেখতে এ জাতীয় দেখাচ্ছে।

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

3

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

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

Alt পাঠ্য http://i.msdn.microsoft.com/ms954595.f00aa01%28en-us%2CMSDN.10%29.gif

আরও আনুষ্ঠানিক "নিদর্শন" এর জন্য মাইক্রোসফ্ট। নেট ব্যবহার করে এন্টারপ্রাইজ সলিউশন প্যাটার্ন রয়েছে(সূত্র: মাইক্রোসফট.কম )বিকল্প পাঠ

কয়েকটি নাম রাখতে,


2

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


1

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

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