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

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.

0

Ale po co tak sobie utrudniać?

0

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

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

0

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

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.

0

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

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.

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)

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?

0

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

0

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

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

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ę.

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

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.

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