উইন্ডোজ ফর্মগুলির সাথে এমভিসি বাস্তবায়ন করা হচ্ছে


102

উইন্ডোজ ফর্মগুলিতে এমভিসি প্যাটার্নটি কীভাবে পুরোপুরি প্রয়োগ করা যায় তার একটি ভাল উদাহরণ আমি কোথায় পাব?

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



উত্তর:


115

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

  • সরাসরি ডাটাবেসে কথা বলুন (২ স্তরের)
  • প্রদত্ত অ্যাপ্লিকেশনটির জন্য লিখিত হয়েছে এমন একটি ব্যাকএন্ড ব্যবহার করুন (3 স্তর)
  • ওয়েব অ্যাপ্লিকেশনগুলির একটি সেট ব্যবহার করুন যা অনেক অ্যাপ্লিকেশন দ্বারা ব্যবহারের জন্য লেখা হয়েছিল এবং আপনার অ্যাপ্লিকেশনটির জন্য পরিবর্তন করা যাবে না। (সেবা ভিত্তিক স্থাপত্য)
  • সিআরইউডি অপারেশন দ্বারা আপডেট করা হচ্ছে
  • কমান্ড প্যাটার্ন দিয়ে আপডেটগুলি করা হচ্ছে (ব্যাকএন্ড সার্ভারে আদেশ পাঠানো)
  • ডেটা বাইন্ডিংয়ের প্রচুর ব্যবহার / ডাটা বাইন্ডিংয়ের ব্যবহারগুলি
  • বেশিরভাগ ডেটা হ'ল "টেবিলের মতো" (যেমন চালান) যা মানক গ্রিড নিয়ন্ত্রণগুলিতে ভাল কাজ করে / বেশিরভাগ ইউআই ডেটার জন্য কাস্টম নিয়ন্ত্রণ প্রয়োজন need
  • 10 বা 20 বিকাশকারীদের একটি বিকাশকারী / টিম (কেবলমাত্র ইউআইতে)
  • প্রচুর ইউনিট পরীক্ষা / কোন ইউনিট পরীক্ষা ইত্যাদি ব্যবহার করে unit

অতএব আমি মনে করি না যে এমভিসি (বা এমভিপি) এর একটি বাস্তবায়ন তৈরি করা সম্ভব যা সর্বদা ভাল fits

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

উইনফর্মস প্রকল্পের জন্য একটি এমভিসি / এমভিপি বাস্তবায়ন নির্বাচন করা একটি ওভারভিউ দেয় যা পাঠযোগ্যপিওরএমভিসির মতো প্রচুর লোক । আমি এটি কখনই ব্যবহার করি নি, তবে পরের বার যখন এমভিসি কাঠামো দরকার তখন আমি এটির দিকে নজর দেব।

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

"আমি যখন 'সংরক্ষণ করুন' বোতামটি ক্লিক করি তখন ফাইলটি সংরক্ষণ করা উচিত এবং সংরক্ষণ না করা ফাইলের সতর্কতা অদৃশ্য হয়ে যায়” "

"উপস্থাপিকা প্রথম" ব্যবহার করার অভিজ্ঞতা আমার নেই, তবে আমি যখন সুযোগ পাব তখন এটি চেষ্টা করব, কারণ এটি খুব আশাব্যঞ্জক বলে মনে হচ্ছে।

অন্যান্য স্ট্যাক ওভারফ্লো প্রশ্ন আপনি তাকান করতে চাইতে পারেন পারে এখানে এবং এখানে

আপনি ব্যবহার করার চিন্তা হয় WPF যেকোনো সময়ে কটাক্ষপাত করা মডেল দেখুন ViewModel (MVVM) প্যাটার্ন। এখানে একটি খুব ভাল ভিডিও আপনার নজর দেওয়া উচিত: মডেল-ভিউ-ভিউমোডেলে জেসন ডলিংগার

এমভিভিএম (মডেল ভিউ মডেল) উইনফর্মগুলির জন্য ডিজাইনের প্যাটার্ন আরেকটি বিকল্প দেয় যা যদি প্রয়োজন হয় তবে ডাব্লুপিএফতে রূপান্তর করতে সহজতর হতে পারে। ম্যাজিকাল.ট্রেভর উইন্ডোজ ফর্মগুলির জন্য আরও একটি এমভিভিএম নমুনা যাতে সম্পত্তির নামের উপর ভিত্তি করে অটো বাইন্ডিংও অন্তর্ভুক্ত।


আপনি কেন এমভিসি ব্যবহার করছেন তা নিজেকে জিজ্ঞাসা করুন ।

  • আপনি কি যতটা সম্ভব কোড ইউনিট পরীক্ষায় সক্ষম হতে চান?
  • আপনি কি যথাসম্ভব কোডটি পুনরায় ব্যবহার করার অনুমতি দেওয়ার চেষ্টা করছেন?
  • আপনি কি আপনার কোড বেসটি বোঝার জন্য সহজ করার চেষ্টা করছেন?
  • 101 অন্য কোনও কারণ যা প্রদত্ত প্রকল্পের জন্য বৈধ হতে পারে।

একবার আপনি আপনার লক্ষ্যগুলিতে পরিষ্কার হয়ে গেলে, একটির প্রয়োগ বা অন্যটি চয়ন করা সহজ হয়ে যায়।


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

হা হা! হ্যাঁ, আমি এখন সেই "অ্যাপ্লিকেশন ব্লকগুলি" মনে করি।
অগ্নেল কুরিয়ান

45

আপডেট: নীচে আমার পূর্ববর্তী উত্তর ছাড়াও, আমি "উপস্থাপিকা প্রথম" পদ্ধতির (বিশেষত পিডিএফ নিবন্ধগুলি) পড়ার পরামর্শ দিচ্ছি

আমি এমভিসির পরিবর্তে এমভিপি (প্যাসিভভিউ প্যাটার্নটি আসলে) সুপারিশ করব would এর জন্য আপনার আসলে কোনও বিশেষ ফ্রেমওয়ার্কের দরকার নেই, এটি ঠিক কীভাবে আপনি আপনার কোডটি সংগঠিত করেন।

একটি পদ্ধতির (যা আমি সাধারণত গ্রহণ করি) হ'ল প্রতিটি উইন্ডো ফর্মকে তিনটি সত্তায় বিভক্ত করা:

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

উদাহরণ কোড (একটি সাধারণ সিউডোকোড, কেবল উদাহরণের জন্য):

interface IView
{
    string Username { get; set; }
    string Password { get; set; }

    event EventHandler LogOnButtonClicked;

    void InformUserLogOnFailed();
    void MoveToMainScreen();
}

class Presenter
{
    public Presenter(IView view)
    {
        this.view = view;
        view.LogOnButtonClicked += new EventHandler(OnLogOnButton);
    }

    private void OnLogOnButton()
    {
        // we ask some service to verify the username/password
        bool isLogOnOk = logOnService.IsUserAndPasswordOk(view.Username, view.Password);
        if (isLogOnOk)
            view.MoveToMainScreen();
        else
        {
            view.Username = "";
            view.Password = "";
            view.InformUserLogOnFailed();
        }
    }

    private IView view;
}

class Form : IView
{
    public Form()
    {
        presenter = new Presenter(this);
    }

    public string Username
    {
        get { return TextBoxUsername.Text; }
        set { TextBoxUsername.Text = value; }
    }

    public string Password
    {
        get { return TextBoxPassword.Text; }
        set { TextBoxPassword.Text = value; }
    }

    public void InformUserLogOnFailed()
    {
        MessageBox.Show("Invalid username or password.");
    }

    public void MoveToMainScreen()
    {
        // code for opening another form...
    }

    private Presenter presenter;
}

7
এটি প্যাসিভভিউ নামে এমভিপি বৈকল্পিকের একটি বাস্তবায়ন। প্যাসিভ ভিউতে ভিউটি তার উপস্থাপককে পছন্দ করে না। একটি অনুরূপ উদাহরণের জন্য (তবে সত্যিই প্যাসিভ দেখুন) এই নমুনাটি পরীক্ষা করুন
ড্যানিয়েলেটি.আইটি /?

6

আপনি কি PureMVC এর দিকে চেয়েছেন ? আমি খুঁজে পেয়েছি যে এমভিসি আসলে একটি নির্দিষ্ট বাস্তবায়ন তৈরি শুরু করার পরে সত্যই কেমন লাগে তাতে কেউ একমত হতে পারে না।

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


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


2

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

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

আপনি যখন স্কুল থেকে বাইরে চলে আসবেন আপনি সম্ভবত অন্যান্য পোস্টারগুলির মতো একটি ফ্রেমওয়ার্কে ফিরে যেতে চাইবেন।


2

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

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

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