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?
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ść.
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
@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.
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ć ?
przecież dałem Ci linka jak można wysłać info z MSSQLa do klientów
a Faktycznie, dzięki, już sie zabieram za czytanie :)
Możesz użyć https://www.nuget.org/packages/SqlTableDependency/, fajnie to działa dla małych baz danych
Pozdrawiam,
mr-owl
SignalR
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ę ?
Już sobie poradziłem, ale dziękuję za pomoc.