MVVM এর মাধ্যমে Clean Architecture তৈরি

MVVM (Model-View-ViewModel) Design Pattern - ডট নেট এমআইইউআই (.NET MAUI) - Mobile App Development

372

MVVM (Model-View-ViewModel) এবং Clean Architecture দুটি জনপ্রিয় আর্কিটেকচার প্যাটার্ন, যা একসাথে ব্যবহার করলে একটি সহজ, সুসংগঠিত এবং পরিস্কার কোডবেস তৈরি করতে সাহায্য করে। .NET MAUI অ্যাপ্লিকেশনে এই দুটি প্যাটার্ন ব্যবহার করে একটি শক্তিশালী এবং বর্ধনশীল অ্যাপ্লিকেশন তৈরি করা যায়।

Clean Architecture হল একটি সফটওয়্যার আর্কিটেকচার কৌশল যা অ্যাপ্লিকেশনের বিভিন্ন অংশকে আলাদা করে, যেমনঃ ডোমেইন লজিক, ডেটা অ্যাক্সেস, UI, ইত্যাদি, যাতে কোড রক্ষণাবেক্ষণ এবং পরবর্তী সময়ে এক্সটেনশন সহজ হয়।

এই টিউটোরিয়ালে MVVM এবং Clean Architecture ব্যবহার করে .NET MAUI অ্যাপ্লিকেশনে একটি সুন্দর আর্কিটেকচার তৈরি করার ধাপগুলি তুলে ধরা হবে।


1. Clean Architecture এর মূল স্তম্ভ:

Clean Architecture প্রাথমিকভাবে ৪টি স্তরে বিভক্ত:

  1. Entities (ডোমেইন লজিক)
  2. Use Cases / Interactors (অ্যাপ্লিকেশন লজিক)
  3. Interface Adapters (UI এবং ডেটা ট্রান্সফার)
  4. Frameworks & Drivers (এপিআই, ডাটাবেস, UI ফ্রেমওয়ার্ক)

এখানে, MVVM প্যাটার্নটি Interface Adapters স্তরে ব্যবহার করা হয়, যেখানে ViewModel ডোমেইন থেকে ডাটা নিয়ে ইউআই (View) এর মধ্যে পার্স করা হয়।


2. MVVM Pattern এর ধারণা:

MVVM প্যাটার্নের তিনটি প্রধান উপাদান:

  1. Model: অ্যাপ্লিকেশনের ডাটা এবং লজিকের প্রতিনিধিত্ব। এটি ডেটাবেস, ওয়েব সেবা বা অন্য কোনো সোর্স থেকে ডাটা পেতে ব্যবহৃত হয়।
  2. View: ইউজার ইন্টারফেস যা ইউজারের সাথে ইন্টারঅ্যাক্ট করে।
  3. ViewModel: এটি Model এবং View এর মধ্যে একটি মধ্যস্থতাকারী হিসেবে কাজ করে। ViewModel ইউজারের ইনপুট গ্রহণ করে এবং তা Model এ প্রক্রিয়া করে, তারপর তা View-এ দেখায়।

3. Clean Architecture এবং MVVM এর সংমিশ্রণ:

এখন, Clean Architecture অনুসারে MVVM প্যাটার্নটি .NET MAUI অ্যাপ্লিকেশনে প্রয়োগ করতে নিচের স্তরগুলো তৈরি করতে হবে:


Step 1: Project Structure

এটি প্রস্তাবিত প্রকল্পের কাঠামো, যেখানে প্রতিটি স্তর পরিষ্কারভাবে আলাদা করা হয়েছে:

- Core (Entities, Use Cases)
    - Models
    - Interfaces
    - Services
- Application (Use Cases)
    - ViewModels
    - Commands
    - Services
- Infrastructure (Frameworks, Data Access)
    - Data
    - API
    - Repositories
- UI (Interface Adapters)
    - Views
    - Resources
    - Pages

Step 2: Models (Core)

এখানে আপনি আপনার অ্যাপ্লিকেশনের ডোমেইন মডেল তৈরি করবেন। এগুলি অ্যাপ্লিকেশনের ব্যাসিক ডাটা স্ট্রাকচারগুলির প্রতিনিধিত্ব করে। উদাহরণস্বরূপ:

public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
}

Step 3: Use Cases (Core)

Use Cases অ্যাপ্লিকেশনের ব্যবসায়িক লজিক বা ইউজারের কার্যকলাপগুলির প্রতিনিধিত্ব করে। প্রতিটি ইউজার ইন্টারঅ্যাকশনের জন্য একটি UseCase তৈরি করা হয়। উদাহরণস্বরূপ, একটি ইউজারের তথ্য নেওয়ার জন্য:

public class GetUserDataUseCase
{
    private readonly IUserRepository _userRepository;

    public GetUserDataUseCase(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    public User Execute()
    {
        return _userRepository.GetUserData();
    }
}

Step 4: ViewModel (Application)

এখন, ViewModel তৈরি করা হবে যা Use Case এর মাধ্যমে ডেটা এবং লজিক View এর মধ্যে সঠিকভাবে ব্যাখ্যা করবে।

public class UserViewModel : INotifyPropertyChanged
{
    private readonly GetUserDataUseCase _getUserDataUseCase;
    private User _user;

    public User User
    {
        get => _user;
        set
        {
            _user = value;
            OnPropertyChanged(nameof(User));
        }
    }

    public UserViewModel(GetUserDataUseCase getUserDataUseCase)
    {
        _getUserDataUseCase = getUserDataUseCase;
    }

    public void LoadUserData()
    {
        User = _getUserDataUseCase.Execute();
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Step 5: Views (UI)

এখন XAML পেজ তৈরি করা হবে যেখানে ViewModel এর মাধ্যমে ডেটা এবং ইউজারের ইন্টারঅ্যাকশন পরিচালিত হবে।

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:YourAppNamespace"
             x:Class="YourAppNamespace.UserPage">

    <Label Text="{Binding User.Name}" />
    <Label Text="{Binding User.Email}" />
    <Button Text="Load Data" Command="{Binding LoadUserCommand}" />
</ContentPage>

এখানে, User.Name এবং User.Email ViewModel থেকে ব্যাখ্যা করা হবে এবং LoadUserCommand কমান্ডের মাধ্যমে ইউজার ডেটা লোড করা হবে।


Step 6: Dependency Injection (DI)

ডিপেনডেন্সি ইনজেকশনের মাধ্যমে ViewModel, UseCase এবং Repository এর মধ্যে যোগাযোগ স্থাপন করা হবে। এটি App.xaml.cs-এ করতে হবে:

public partial class App : Application
{
    public App()
    {
        InitializeComponent();

        // Dependency Injection
        var container = new Container();
        container.Register<IUserRepository, UserRepository>();
        container.Register<GetUserDataUseCase>();
        container.Register<UserViewModel>();

        var viewModel = container.Resolve<UserViewModel>();

        MainPage = new UserPage
        {
            BindingContext = viewModel
        };
    }
}

সারাংশ:

MVVM এবং Clean Architecture এর মাধ্যমে .NET MAUI অ্যাপ্লিকেশন তৈরি করা একটি শক্তিশালী এবং পরিস্কার আর্কিটেকচার প্রদান করে, যা কোড পুনঃব্যবহারযোগ্যতা, পরীক্ষণ, এবং রক্ষণাবেক্ষণকে সহজ করে তোলে। এখানে:

  • Core স্তরে ডোমেইন মডেল এবং লজিক।
  • Application স্তরে ViewModel এবং ইউজার ইন্টারঅ্যাকশন।
  • UI স্তরে XAML পেজ এবং ইউজারের ইন্টারফেস।

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

Content added By
Promotion

Are you sure to start over?

Loading...