Jak napisać aplikację zbudowaną z "klocków" C#

Jak napisać aplikację zbudowaną z "klocków" C#
PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

Jak można rozbudować program, który jest już używany, w bazie są jakieś dane. Czy jest może jakaś możliwość zbudowania go z tak jakby "klocków" - osobnych plików. Np. jeden plik, to menu, jak się zmieni, to podmieniam, jak jest potrzebny jakiś nowy formularz, to kopiuję go do folderu z programem i działa.
Dowiedziałem się, że trzeba użyć refleksji.
Program na chwilę obecną mam zbudowany na WinForms. W programie mam pliki Class.cs, Form.cs, Form[design].cs. Jest formularz MdiParent i w nim otwieram kolejne potrzebne formularze.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
0

Ale po co tak sobie utrudniać?

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:około miesiąc
0

Wszystko jest możliwe.
Ale odłóż motykę, na razie i tak nie dobiegniesz do słońca.

PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

"Utrudniać" - hmmm, moim zdaniem chyba nie.
Potrzebuję mieć możliwość dodawania nowych funkcjonalności do programu, który jest już używany przez klienta z jak najmniejszym "zamieszaniem" przy tym.

0

w podstawowej wersji nie jest to trudne ale wymaga dobrej znajomości języka której prawdopodobnie nie masz, bo gdybyś miał to byś nie pytał o takie rzeczy
możesz popróbować to zrobić na zasadzie pluginów, powinien być jakiś tutorial na sieci

ale w zasadzie to prawdopodobnie wystarczy Ci rozdzielenie aplikacji na .dll-ki - przy zmianie funkcjonalności przesyłasz klientowi odpowiednią dll-ke i tyle - dużo zamieszania nie ma
sztuką jest tak zaprojektować aplikację i tak utrzymywać moduły w poszczególnych .dll żeby były możliwie niezależnie od siebie

PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

Pogląd, jak, to porozdzielać, myślę, że już mam. tylko jak to mniej więcej zrealizować, w jakich krokach?

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

Każdy Twój plugin musi zawierać klasę implementującą odpowiedni interfejs, Ty dynamicznie wczytujesz dllki z pluginami, a główna aplikacja potrafi zbudować na ich podstawie menu, formularze, itd.

Tylko nie wiem, czy to jest tego warte, naprawdę najłatwiej użyć jakiegoś ClickOnce i aplikacja będzie się aktualizowała sama po deployu nowej wersji.

PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

somekind - A co zrobić z bazą danych? Chodzi mi o dodawanie tabel, dodawanie kolumn do istniejących tabel.

DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
0

Jak używasz jakiegoś ORMa na przykład EF lub NHibernate to posiadają gotowe narzędzia w EF to się nazywa Migrations w NHibernate podajże SchemaUpdate. Jak używasz SQL to możesz samemu napisać taką prostą funkcję robiącą na starcie programu kolejne zmiany w modelu bazy danych.


Yubby dibby dibby dibby dibby dibby dibby dum..
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
1

ale w zasadzie to prawdopodobnie wystarczy Ci rozdzielenie aplikacji na .dll-ki - przy zmianie funkcjonalności przesyłasz klientowi odpowiednią dll-ke i tyle - dużo zamieszania nie ma
sztuką jest tak zaprojektować aplikację i tak utrzymywać moduły w poszczególnych .dll żeby były możliwie niezależnie od siebie

Tym sposobem nic nie osiągniesz - wysilisz się tylko, a i tak user musi coś tam ręcznie ściągnąć i wgrać na dysk.
To już łatwiej zmieścić program w jednym exeku, i podmieniać tego exeka.

Kwestia bazy to już inna sprawa - zależy czego się używa do jej obsługi. Można zaimplementować upgrade bazy wraz z aktualizacją (na zasadzie: brakuje tabeli? CREATE TABLE)

PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

DibbyDum - nie używam nic takiego.
Azarien - używam czystego c# do obsługi tego.
To jeszcze mam pytanie, po naciśnięciu zielonego trójkąta w VS (2012) w folderze \bin\x64\Debug mam trochę plików, czy muszę wysyłać je wszystkie klientowi czy wystarczy tylko exe + plik bazy danych + dll do SQLite'a?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:7 dni
  • Lokalizacja:Wrocław
0

Nie wysyłaj klientowi nic z Debug tylko z Release.

PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

Ale Release jest puste, a z Debug też działa :)

T2
  • Rejestracja:prawie 11 lat
  • Ostatnio:8 miesięcy
  • Postów:194
1

Debug i Release powiny tak samo dobrze działać. Jednak wersja release nie zawiera plików które pozwalają się podpiąć w celu debuggowania oraz zapewne jest tam przeprowadzona większa optymalizacja kodu.
Koło tej zielonej strzałki możesz skonfigurować jakiego bulid-a ma wykonać Debug czy Release

edytowany 3x, ostatnio: teo215
PP
Dziękuję bardzo za podpowiedź.
dam1an
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
  • Postów:1589
0
pablo_pj napisał(a):

somekind - A co zrobić z bazą danych? Chodzi mi o dodawanie tabel, dodawanie kolumn do istniejących tabel.

Możesz też użyć tego:
http://www.adeptsql.com/
Można łatwo porównać dwie bazy danych, tabele, procedury, funkcje itp zobaczyć co się zmieniło i jednym kliknięciem wgrać na produkcję.

somekind
Takich narzędzi są dziesiątki... Tylko autor chyba nie bardzo jest w stanie któregokolwiek z nich użyć, bo dopiero raczkuje.
0

Witam Kolega w zapytaniu zapewne myślał o czymś więcej niż pojedynczym programie... na ten przykład system Windows to nie jest pojedynczy program jak też usługi sieciowej całkowicie przecież jako biznes nie da się zrobić w postaci pojedynczego programu a nawet w postaci pojedynczej technologii... ja mam silnik własnej usługi który testuję obecnie... oprogramowanie łączy się z serwerem FTP wysyłając oraz odbierając czyli komunikacja z programem desktopowym na komputerze użytkownika ponadto jeszcze jest wymiana informacji z bankiem który przysyłam mi raporty dzienne wpłacanych przez użytkowników za abonament i szereg innych jeszcze technicznych aspektów których trochę by zajęło wyliczenie... tak więc być może autor tego wątku pytał w kontekście czegoś większego niż pojedynczy program Miko

PP
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 6 lat
  • Postów:33
0

Dziękuję za odpowiedzi. Aplikacja na chwilę obecną nie jest duża. Chciałem rozbudować, tak, żeby była jak najprostsza do aktualizacji, ale zostanę przy pierwszym sposobie czyli kopiowanie nowszego exe-ka. Jeśli chodzi o bazę, to można zrobić osobny, malutki programik z 1 przyciskiem "Dodaj tabele". Myślę, że takie rozwiązanie powinno być najszybsze.

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.