Informowanie innych końcówek o zmianach w bazie danych

0

Witam, mam pytanie związane z aplikacją jaką obecnie staram się pisać ( ucząc się programowania) chodzi o to że mam prostą aplikację której zadaniem jest dodawanie nowych recordów do bazy danych i wyświetlanie ich na grid - wszystko działa poprawnie jednak chciał bym aby aplikacja działała na więcej niż jednym komputerze i chciał bym żeby okna grid z zawartością bazy były aktualizowane na wszystkich końcówkach po dodaniu nowego recordu na jednej z nich- zrobiłem to "amatorsko" z wykorzystaniem timera jednak chyba nie jest to dobre rozwiązanie.
proszę o pomoc w jaki sposób rozwiązać mój problem?

0

No nie jest to dobre rozwiązanie. Jednym z możliwości jest:

  • klient wysyła żądanie do serwera (to może być za pomocą api, socketów, czy czegokolwiek)
  • serwer robi zmiany w bazie danych
  • serwer wysyła podłączonym klientom odpowiednią informację.

Inna możliwość podobna, ale tu aplikacja robi zmiany w bazie danych. Następnie aplikacja wysyła do serwera info o tym, że coś zmieniła, a serwer dalej rozsyła do innych klientów. To rozwiązanie jest dużo gorsze i łatwo można się tu pogubić. Ale zostawiam jako możliwość.

0

wg mnie takie coś jest złym pomysłem. User może coś robić z tym gridem, mieć ustawione filtrowanie, zaznaczone, które wiersze już sprawdził a Ty mu chcesz wchodzić z buciorami w to co on już zrobił i dodawać mu nowe rekordy. User powinien mieć przycisk odśwież i tyle - będzie chciał zobaczyć czy jest coś nowego to sobie zobaczy.

Co do timera to wyobraź sobie taką sytuację - masz 100 stanowisk i na każdym odpalony Twój program - ile niepotrzebnych zapytań na sekundę musi obsłużyć baza?

Jeśli jednak się uprzesz to jest coś takiego https://msdn.microsoft.com/en-us/library/t9x04ed2.aspx

0

@abrakadaber: ale przecież klient nie musi odświeżać grida. Może dać info w jakimś hincie, czy gdzieś, że zmieniły się dane i pokazać jakiś guzik do odświeżenia. To jest najlepsze, bo użytkownik wie, że się zmieniły, ale nic mu nie bruździ w gridzie.

0

to rozwiązanie mi się podoba:
No nie jest to dobre rozwiązanie. Jednym z możliwości jest:

klient wysyła żądanie do serwera (to może być za pomocą api, socketów, czy czegokolwiek)
serwer robi zmiany w bazie danych
serwer wysyła podłączonym klientom odpowiednią informację.

jednak jak to zrobić - jakich haseł użyć w google ?

jeśli chodzi o moje rozwiązanie to wiem że nie jest dobre rozwiązanie, tak wczoraj wymyśliłem i zrobiłem jednak docelowo chcę to zrobić porządnie i jak bozia przykazała.
jeśli chodzi o użytkownika to nie ma on możliwości filtrowania ( przynajmniej na razie) - będzie miał możliwość zmiany statusu oraz ewentualnie możliwość wprowadzenia komentarza, notatki. myślałem zrobić to w ten sposób aby w przypadku gdy jedna końcówka doda nowy record to dopisze się on( lub zmodyfikuje istniejący) w oknie innych końcówek.
na razie dla testu i nauki chciał bym wykonać ten scenariusz:
klient wysyła żądanie do serwera (to może być za pomocą api, socketów, czy czegokolwiek)
serwer robi zmiany w bazie danych
serwer wysyła podłączonym klientom odpowiednią informację.

może podpowiecie w jaki sposób to wykonać ?

0

przecież dałem Ci linka jak można wysłać info z MSSQLa do klientów

0

a Faktycznie, dzięki, już sie zabieram za czytanie :)

1

Możesz użyć https://www.nuget.org/packages/SqlTableDependency/, fajnie to działa dla małych baz danych

Pozdrawiam,

mr-owl

0

SignalR

0

Wszystko fajnie tylko w jaki sposób użyć dependency w przypadku gdy w projekcie mam ADO.NET Entity Data Model ( EF Designer from database) - nie potrafię użyć dependency - może ktoś pomoże lub wskaże inną metodę ?

0

Już sobie poradziłem, ale dziękuję za pomoc.

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