monitorowanie plików w folderze - zrobić to za pomocą repozytorium?

0

Planuję zroboic sobie aplikacje, która będzie monitorowała pliki w wybranym folderze. Chciałbym żeby aplikacja miała warstwy bo będę ją rozwijał i taki podział chyba umożliwi mi to. Czy taki monitoring plików zrealizować za pomocą wzorca repozytorium (jakieś repozytorium zawartości foldera?). Bardzo prosze po kilka wskazówek jak zaprojektować taką aplikację.
Dziękuję

2

monitorowanie jest bardzo proste
https://stackoverflow.com/questions/15017506/using-filesystemwatcher-to-monitor-a-directory
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx

Na razie zrob sobie prosta architekture MVC. Jak bedzie Ci sie rozrastac to wtedy bedizesz myslac o wiekszych detalach architektury. Poki co to YAGNI

0

@fasadin: tak zrobię, tylko pytanie czy to monitorowanie powinno sie znalezc w modelu czy gdzies wyzej?

aha, pisze w Window Forms to pewnie jakies MVP uzyje

0

w modelu,
view -> wyswietla dane
controler -> tlumaczy z view na model i w druga strone
model -> logika

jak potrzebujesz to dzielisz model na kolejne czesci, ale watpie zebys potrzebowal

1

Nie rozumiem, czemu w ogóle pisać jakiś program narzędziowy stosując architekturę pasującą do cruda.

0

@somekind: jaka architektura w takim razie bardziej nadaje się do programu narzędziowego, doradzisz coś?

0

MVC czy MVP wsparty obserwatorami było by spoko, ale obecnie pewnie prościej będzie zrobić to na MVVM.
Dlaczego chcesz zrobić to na Win Forms a nie na WPF ?

0

@Slepiec: moj stan wiedzy mi nie pozwala. Nie zanm WPF

1
Chory Młot napisał(a):

@somekind: jaka architektura w takim razie bardziej nadaje się do programu narzędziowego, doradzisz coś?

Jeśli chodzi o interakcję warstwy GUI z "rdzeniem" programu, to może być i MVP, które ładnie do WinFormsów pasuje.
Na pewno żadnych "repozytoriów" nie potrzebujesz, a co więcej to nie wiem, bo nie wiem jaki jest dokładny cel, który chcesz osiągnąć. Jak na razie to widzę tu problem, który można rozwiązać trzema klasami, więc jak dla mnie to za mało, żeby w ogóle o architekturze mówić.

0

@somekind: chce zrobić coś takiego, że po włączeniu aplikacji trzeba się zalogować na swoje konto. Następnie program monitoruje jakiś wybrany w konfiguracji folder. Jeśli w folderze pojawi sie jakis plik, to ląduje on na liście plików w aplikacji. Uzytkownik sobie klika na dowolny wpis na liście, w polu tekstowym uzupełnia opis, klika jakieś tam checkboxy i daje "Zapisz". Wtedy wszystko co zrobił z tym plikiem w aplikacji ląduje w bazie, plik znika z listy i uzytkownik moze wybrać teraz kolejny plik to obsłużenia. Tak to ma wszystko wyglądać :)

0

Plik ma znikać z listy, czy z katalogu też?
Jeśli użytkownik nie opisze jakiegoś pliku w aplikacji tylko ją wyłączy, to po ponownym uruchomieniu ma mieć ten plik znowu możliwy do edycji?

0

@somekind:
Plik ma znikać z listy i z katalogu (w zasadzie ma zostać przerzucony do innego katalogu)

Plik ma się znajdować na liście i być możłiwym do opisu, dopóki będzie w katalogu który monitoruję. Jeśli zaloguje sie inny uzytkownik i opisze ten plik to wcześniejszy user ma już go nie mieć na liście do opisu gdy znowu się zaloguje.

0

Czyli musisz mieć jakiś adapter na system plików. Jeśli pojawi się plik w katalogu, to adapter wysyła zdarzenie do jakiegoś adaptera od bazy, który powoduje wstawienie nowego rekordu z tym plikiem. Następnie musi zostać odświeżone GUI, aby doczytać ten nowy rekord i wyświetlić go na liście.
W drugą stronę z kolei masz zapisać dane o pliku i przenieść plik do innego katalogu. To powinno być zamknięte w jednej transakcji, żeby nie było czasem tak, że dane w bazie się zapiszą, a plik się nie przeniesie. (Tak przynajmniej sądzę, w każdym razie trzeba przemyśleć jak to się ma zachować.)
Jeśli transakcja się powiedzie, to znowu trzeba wysłać zdarzenie, aby GUI się odświeżyło.

0

@somekind: wpis do bazy powinien pójść dopiero jak użytkownik opisze dany plik i kliknie przycisk "Zatwierdź". Gdy w folderze pojawi się plik, to informacja o nim ma się tylko znaleźć na liście w GUI. Czy w takim przypadku też potrzebny będzie jakis adapter?
Przepraszam ze tak cie mecze pytaniami ale widze ze wiesz o czym mowisz :)

0
Chory Młot napisał(a):

@somekind: wpis do bazy powinien pójść dopiero jak użytkownik opisze dany plik i kliknie przycisk "Zatwierdź".

No dobrze, a co w sytuacji, jeśli aplikacja zostanie wyłączona kiedy plik już pojawi się w katalogu, a zanim zostanie opisany przez użytkownika. Nie będziesz go miał później ani na liście ani w bazie.

Gdy w folderze pojawi się plik, to informacja o nim ma się tylko znaleźć na liście w GUI. Czy w takim przypadku też potrzebny będzie jakis adapter?

Owszem, a jak inaczej dowiesz się o istnieniu pliku? Musisz jakoś obsłużyć zdarzenie systemowe, na jego podstawie utworzyć jakiś obiekt w swoim programie, potem zapoczątkować cały proces.

Ja to widzę tak: diagram.png

0
[somekind napisał(a)]

No dobrze, a co w sytuacji, jeśli aplikacja zostanie wyłączona kiedy plik już pojawi się w katalogu, a zanim zostanie opisany przez użytkownika. Nie będziesz go miał później ani na liście ani w bazie.

Na starcie aplikacja ma zaczytywać zawartość folderu i później już monitorować go przez cały czas swojej pracy, tak żeby uzytkownik mogl sobie opisywac wszystko co jest w tym folderze

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