Kilku klientów w jednej solucji - dobrze?

0

Hej, kilka lat temu zacząłem pewien projekt. Okazało się, że teraz w jednej solucji mam:

  • WebApi
  • klienta Webowego
  • klienta mobilnego
  • klienta WPF

Oczywiście cały kod jest współdzielony. I niby ok, ale zaczynam mieć pewne wątpliwości, czy to dobrze. Załóżmy, że wypuściłem klienta WPF z wersją 1.0. Teraz zmieniam coś tylko wizualnie w kliencie webowym i muszę to wrzucić na serwer. Niby nie ma z tym problemu, ale pojawia się już bałagan w kontroli wersji. Teraz pytanie, czy powinienem zmienić wszędzie wersję np. na 1.0.0.1 i taki tag dać na masterze? Zasadniczo powinienem wtedy wypuścić klienta WPF, który się nie zmienił.

Czy może lepiej, żeby każdy klient był w osobnej solucji? Ale wtedy będzie to chyba trudniej utrzymać. W solucji mam teraz około 36 projektów wraz z projektami testowymi. Co o tym sądzicie?

0

Pytanie, czy chodzi o jedną solucję czy jeden projekt na git ?
Jeżeli chodzi o jedną solucję to nic nie stoi na przeszkodzie abyś stworzył zestaw nowych solucji do których dodasz istniejące i potrzebne projekty, np. osobna solucja na WPF. Sprawdzisz i zdecydujesz.

W jednym z projektów tak właśnie miałem: wiele solucji + jedna, która potrafiła zrobić build wszystkiego - można to wykorzystać w ramach automatyzacji / CI.

3

Wersjonowanie nie ma nic do rzeczy z podziałem kodu na projekty.

Poczytaj sobie o semantic versioning https://semver.org/ Standardowe wersjonowanie Nugetów w MS ssie.

To co musisz wersjonować to API webowe do którego łączą się klienci. Jest sporo artykułów na ten temat, generalnie chcesz zrobić tak żeby to samo api obsługiwało jak największy zakres wersji klientów.
Przykład dodajesz nowy parametr - to zrób go nieobowiązkowym w ten sposób obsłużysz żądania od starego i od nowego klienta. Co do odpowiedzi klient powinien być tak skonfigurowany żeby bezproblemowo przyjmował dodatkowe, nieznane mu pola w odpowiedziach.

Na ten temat napisano bardzo dużo (nawet książki): https://allegro-restapi-guideline.readthedocs.io/en/latest/Resource/#versioning https://www.baeldung.com/rest-versioning

0
Juhas napisał(a):

Teraz pytanie, czy powinienem zmienić wszędzie wersję np. na 1.0.0.1 i taki tag dać na masterze? Zasadniczo powinienem wtedy wypuścić klienta WPF, który się nie zmienił.

Ale po co wypuszczać coś, co się nie zmieniło? Wypuszczasz tego klienta, którego zmieniłeś, a tak na masterze może to opisywać, np. web-1.0.1. Pytanie jeszcze do czego w ogóle tych tagów używasz.

Czy może lepiej, żeby każdy klient był w osobnej solucji? Ale wtedy będzie to chyba trudniej utrzymać. W solucji mam teraz około 36 projektów wraz z projektami testowymi. Co o tym sądzicie?

Myślę, że to dużo i ja bym raczej podzielił.

1 użytkowników online, w tym zalogowanych: 0, gości: 1