Wzorzec MVP- czy jest aktualny ?

Wzorzec MVP- czy jest aktualny ?
W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Witam czy wzorzec MVP w Win formsach jest obecnie używany czy raczej się tego nie używa i jest jakiś inny lepszy wzorzec ?

JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

Jak użyjesz to jest używany a jak nie to nie :)
Niektórzy lubią MVVM, są jakieś przykładowe implementacje a Devexpress ma nawet framework MVVM dla WinForms ale jak próbowałem to trzeba kliknąć pierdyliard razy, żeby coś zobaczyć.

W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Czyli jak użyje mvp to będzie dobrze ?

a_s_f
  • Rejestracja:ponad 22 lata
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
2

Jak dobrze użyjesz, to będzie dobrze.

SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
1

Ten wzorzec ma prawie 30 lat, a MVC jest starszy o 20 lat i obydwa żyją.


Bydgoszcz, Senior .Net Developer
W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Mam pytanie do wzorca MVP. Gdzie powinna się znaleźć logika biznesowa? w Presenter czy Model?

SL
Jeśli nie wiesz gdzie trzymać logikę to znaczy że nie rozumiesz tego wzorca, ale spoko są was miliony.
a_s_f
  • Rejestracja:ponad 22 lata
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
0

W modelu

W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

@Slepiec: też uważałem że model, lecz w Internecie jest dużo przykładów z logiką w prezenterze i zglupialem.

darkrat
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 lata
  • Postów:203
0

Przydatny w aplikacjach, gdzie jeden przycisk = jeden widok. Wtedy prezenter tworzy instancje tego widoku i zajmuje się stricte nim (w przeciwieństwie do MVC, gdzie jeden kontroler może zarządzać wieloma widokami). Wygodny w połączeniu z MVVM, gdzie odpowiedzialność za wstrzyknięcie ViewModelu do widoku podejmuje właśnie Presenter. Jeśli chodzi o przepływ danych, to standardowy scenariusz wygląda mniej więcej tak: widok podejmuje jakieś działanie, wyzwalany jest handler eventu (na przykład naciśnięcie przycisku). Następnie wywołujemy jakąś metodę w ViewModelu (który w MVVM posiada zachowanie). Następnie ViewModel korzysta z metod z warstwy logiki biznesowej i ma za zadanie odpowiednio zaagregować dane do widoku. Wszystko celem maksymalnego odseparowania logiki od prezentacji.

W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

Czy tak to powinno mniej więcej wyglądać?
MODEL:

Kopiuj
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MVPTUT.Model
{
    public class Tabela
    {
        MySql.Data.MySqlClient.MySqlConnection connection;
        string server = "127.0.0.1";
        string database = "test";
        string login = "root";
        string password = "";
        string connectionString;
        string query { get; set; }



        public DataTable Load()
        {

            connectionString = "SERVER=" + server + ";" + "DATABASE=" +
            database + ";" + "UID=" + login + ";" + "PASSWORD=" + password + ";";
            query = "SELECT * FROM test";
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query, connection))
            using (DataSet ds = new DataSet())
            using (DataTable dt = new DataTable())
            
            {
                ds.Tables.Add(dt);
                connection.Open();
                dataAdapter.Fill(dt);
                return dt;
            }
        }

    }
}

PRESENTER:

Kopiuj
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MVPTUT.View;
using MVPTUT.Model;


namespace MVPTUT.Presenter
{
    public class TabelaPresenter
    {
        ITabela tabelaView;
        public TabelaPresenter(ITabela view)
        {
            tabelaView = view;
        }
        
        
        public void Load()
        {
            Tabela tabela = new Tabela();

            tabelaView.dtOut = tabela.Load();

        }
       
    }
}

VIEW
INTERFACE

Kopiuj
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVPTUT.View
{
    public interface ITabela
    {
        object dtOut { get; set; }
    }
}

FORM

Kopiuj
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MVPTUT.View;
using MVPTUT.Presenter;

namespace MVPTUT
{
    public partial class Form1 : Form, ITabela
    {
        public Form1()
        {
            InitializeComponent();
        }

        public object dtOut
        {
            get
            {
                return dataGridView1.DataSource;
            }
            set
            {
                dataGridView1.DataSource = value;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            TabelaPresenter tb = new TabelaPresenter(this);
            tb.Load();
        }
    }
}


edytowany 1x, ostatnio: ww1994
JU
  • Rejestracja:około 22 lata
  • Ostatnio:2 miesiące
  • Postów:5042
0

Kiedyś chyba @somekind wrzucił fajny przykład.

HA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad rok
  • Postów:115
1

Poczytaj jeszcze o Clean Architecture. Wtedy logika typowo biznesowa znajduje się w warstwie domenowej w UseCase'ach/Interactorach, a MVP odpowiada za warstwę prezentacji.

0
ww1994 napisał(a):

@Slepiec: też uważałem że model, lecz w Internecie jest dużo przykładów z logiką w prezenterze i zglupialem.

przykłady zazwyczaj obrazują ideę a nie poprawną architekturę. gdyby miały obrazować prawdziwą apkę to byłyby zbyt rozbudowane
w większości przykładów w ogóle logikę, łącznie z połączeniem do bazy masz w widoku bo tak jest nie oszukując się - najszybciej coś pokazać

W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

A jak bardzo kod który wstawiłem odchodzi od poprawnego pisania?

0

Trzeba by było zapytac inaczej, czy w ogóle WinForms jeszcze jest używany.

JP
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:6 dni
  • Lokalizacja:Wrocław
0
Hagefid napisał(a):

Poczytaj jeszcze o Clean Architecture. Wtedy logika typowo biznesowa znajduje się w warstwie domenowej w UseCase'ach/Interactorach, a MVP odpowiada za warstwę prezentacji.

Nie trzeba niczego czytać. MVP to wzorzec warstwy prezentacji, więc z definicji zawsze odpowiada za tę warstwę, a nie logikę biznesową.

HA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad rok
  • Postów:115
0

Napisałem to dlatego, bo OP pytał się gdzie powinna się znajdować logika biznesowa.

edytowany 1x, ostatnio: Hagefid
W1
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:60
0

A czy jest sens jest się zagłębiać w MVP WinFormsy, czy lepiej od razu ASP.NET MVC?

darkrat
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 lata
  • Postów:203
0
ww1994 napisał(a):

A czy jest sens jest się zagłębiać w MVP WinFormsy, czy lepiej od razu ASP.NET MVC?

W ogóle nie masz pojęcia, co chcesz robić i nikt za Ciebie tego nie podejmie. Jedno to aplikacja desktopowa, drugie to webówka. Na WinFormsach jest zbudowany m.in. cały czas rozwijany DevExpress i technologia wciąż jest żywa.

JP
Akurat DevExpress ma komponenty do wszystkiego. Tylko XAF dla Win jest na WinForms chociaż z ogromnym naciskiem na MVC.
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0
ww1994 napisał(a):

A czy jest sens jest się zagłębiać w MVP WinFormsy, czy lepiej od razu ASP.NET MVC?

To źle postawione pytanie. Na WinForms możesz mieć MVP, MVC (vide XAF od DevExpress) albo NULL architecture :) czyli encja na twarz i pchasz.

Moim zdaniem jest sens w nauce WinForms ale chyba więcej ofert teraz jest w webdev i mobile.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:6 dni
  • Lokalizacja:Wrocław
1

No w WinForms raczej nie ma teraz nowych projektów, a do starych raczej nie biorą juniorów.
ASP.NET MVC też jest już trochę przestarzałe, bo teraz raczej wszystko to REST API + klient w jakimś frameworku JS.

grzesiek51114
grzesiek51114
Dzisiaj to i tak wszystko pędzi na złamanie karku. Nie zdąży się człowiek nauczyć jednej technologii, a tutaj okazje się, że jest już przestarzała. W dodatku zauważyłem, że nie dotyczy to już nawet tylko sezonowych frameworków JS. Powiem szczerze, że jest to troszeczkę męczące, ponieważ, nawet jako "były humanista", tęsknię za pewną dozą stabilizacji. :-)
JU
  • Rejestracja:około 22 lata
  • Ostatnio:2 miesiące
  • Postów:5042
0
somekind napisał(a):

No w WinForms raczej nie ma teraz nowych projektów, a do starych raczej nie biorą juniorów.
ASP.NET MVC też jest już trochę przestarzałe, bo teraz raczej wszystko to REST API + klient w jakimś frameworku JS.

Mamy nowy .NET Core

JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

Ja mam cały czas nowe projekty w WinForms ale to raczej przemysłowa nisza. Na szczęście :)

BO
  • Rejestracja:około 8 lat
  • Ostatnio:13 dni
  • Postów:34
0

To teraz w czym dłubią desktopy? WPF tylko? Czy już większość przeszła na weba ?

JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0
Juhas napisał(a):
somekind napisał(a):

No w WinForms raczej nie ma teraz nowych projektów, a do starych raczej nie biorą juniorów.
ASP.NET MVC też jest już trochę przestarzałe, bo teraz raczej wszystko to REST API + klient w jakimś frameworku JS.

Mamy nowy .NET Core

W którym pisze się API dla JS-frameworków :)

somekind
Raczej mówi się, że się pisze niż pisze, a na pewno nie napisze. ;)
JP
No Panie, ale można na Linuxie w końcu :) Podobno.
somekind
Jak kiedyś kupię Linuksa to sprawdzę.
0
Bogu napisał(a):

To teraz w czym dłubią desktopy? WPF tylko? Czy już większość przeszła na weba ?

W ogóle już prawie się nie pisze nic na desktopy, a jeśli już to raczej w WPF.

JP
Pora umierać :) Znasz jakieś duże biznesowe apps w wp?
BO
Tak właśnie czułem :) Dzięki za info bo ostatni rok skupiłem się tylko i wyłącznie na webówce.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.