Avatar billede joki Juniormester
22. september 2013 - 08:58 Der er 7 kommentarer og
1 løsning

Opdatere form hos andre brugere ved ændring af data

Hej

Har en appklilatin med en form. Hvordan gives der besked når en anden bruger har opdateret data i databasen.
Avatar billede lasserasch Juniormester
22. september 2013 - 09:14 #1
Dit spørgsmål er meget generelt og alt for stort.
Vis os den kode du har skrevet og hvad det er du gerne vil have det helt konkret skal ske....
Avatar billede joki Juniormester
22. september 2013 - 09:35 #2
Det er udelukkende en klient applikation. Formen
er bundet til et view. Dataset opdateres ved form load. Kan du give et par eksempler på hvordan det kunne gøres?
Avatar billede Syska Mester
22. september 2013 - 11:56 #3
Du kunne ligeså godt skrive "Hvordan laver man facebook".

Men kort sagt ...
1. Du kan poll din database for at se om der er ændringer. Måske via en timestamp. Klart den nemmeste men performance er ringe.
2. Du kan lave et pub/sub system med en message bus og på den måde give andre klient apps besked når der er opdateringer.
3. Når du gemmer kan du også sammenligne for at se om der er andre der i mellemtiden har lavet opdateringer og så merge de ting der måtte være.

Men spm er nok mere ... hvad prøver du at lave?

Husk, for at man kan gå, skal man først kunne kravle.
Avatar billede lasserasch Juniormester
22. september 2013 - 18:36 #4
Og den løsning du vælger af de 3 afhænger også meget af dit niveau ift. programmering.


Jeg have ofte lavet nr. 2.

Bl.a. ifm. et projekt for trygfonden.

Her har de en SQL database med en masse data omkring hjertestartere i. Disse informationer opdateres af både et 3. parts system hos 112 centralerne samt af et callcenter via et web interface.

Det som jeg lavede var kort fortalt følgende :


1. En databus hvorfra alle applikationer (IOS/Android apps, Websites, Callcenter samt 3. parter) trak data fra.

I mit tilfælde valgte jeg at lave denne databus som en REST Webservice.

2. Det giver mangle fordele. Specielt når der skal trækkes forskellige datasæt og der er stort load på systemet, så SQL serveren belastes mindst muligt.

Derudover lavede jeg en sikkerheds mekaniske, så man skal sende et hash med ved hvert request. Ud fra dette hash kan systemet se hvilket system der kalder databussen og hvilke rettigheder det pågældende system har fået. (F.eks. kan man ikke slette og rette data med det hash tag som en Iphone App bruger).

For hvert system der kan kalde denne databus, er der defineret en callback URL.

Dvs, når et system opdaterer databasen (f.eks. fjerner en hjertestarter), så vil databussen kalde de respektive URL'er, og på den måde fortælle hvert system at datasættet har ændret sig og de bør hente et nyt.


Når det så er sagt, så er det jo ikke et særligt konkret svar med kode eksempler osv.

Men vi vil meget hellere hjælpe dig ift. noget konkret kode du har skrevet selv, end bare servere løsningerne på et sølvfad.

Det lærer du ikke så meget af, som Buzzzz også skriver.

Mvh.
Lasse
Avatar billede joki Juniormester
23. september 2013 - 06:46 #5
Som i nok fornemmer, så er jeg helt blank på dette område.
Jeg søger derfor lidt generel info evt. links, hvor jeg kan læse om de forskellige muligheder, men også en konkret for min applikation.
Min form er bundet til et view, som loades ved form load. Jeg har behov for at opdatere andre brugers form hvis en bruger laver ændringer i databasen

  private void FormEC001_Load(object sender, EventArgs e)
        {          this.vIEW_EC001TableAdapter.Fill(this.dataSet_EC001.VIEW_EC001);

        }
Avatar billede lasserasch Juniormester
23. september 2013 - 08:34 #6
Altså med alt respekt for at alle starter et sted, så fornemmer jeg at du ganske enkelt ikke er på et niveau hvor du vil kunne lave løsningsforslag nr. 2 fra buzzzz.

Så det nemmeste for dig vil være at tilføje et felt i databasen med timestamp og så lade alle dine klient applikationer polle din database f.eks. hvert 30. sek for at tjekke om de skal opdatere deres datasæt.


Men hvis du alligevel vælger at gå i krig med forslag nr. 2, så vil du få brug at lave et Server / Client setup.

En søgning på google giver masser af resultater med vejledninger hertil.

https://www.google.dk/?gws_rd=cr&ei=f9w_Up7FOarE4gTQpIGgBA#q=server+%2F+client+application+c%23



Dit "problem" er at din kommunikation er envejs og sker direkte mellem databasen og din applikation.

1. Klient applikation (A) spørger Databasen (B) efter et datasæt.
2. Klient applikation (A) sender opdateret datasæt til Databasen (B).



Det du har brug for er :

1. Klient applikation (A) laver en forbindelse til databus (C).
2. Klient applikation (B) laver en forbindelse til databus (C).
3. Klient applikation (A) spørger databus (C) efter datasæt.
4. Databus (C) spørger databasen (D) efter datasæt og retunerer til Klient applikation (A).
5. Klient applikation (A) sender opdateret datasæt til databus (C)
6. Databus (C) sender opdateret datasæt til database (D).
7. Databus (C) fortæller Klient Applikation (B) at Klient applikation (A) har opdateret et datasæt.
8. Klient (B) spørger databus (C) efter datasæt.


Så vælg enten løsning nr. 1 eller gå igang med løsning nr. 2. Vi hjælper dig gerne undervejs uanset hvilken løsning du går efter, men vi hjælper helst når du har forsøgt selv først og har noget konkret kode som driller.... :-)


Mvh.
Lasse
Avatar billede joki Juniormester
23. september 2013 - 08:49 #7
Tak Lasse. Jeg er enig med dig i at forslag 1 er det bedste for mig, så det går jeg igang med :-)
Jeg vil nu også læse lidt om client/server, får måske brug for det en anden gang.
Smider du et svar
Avatar billede lasserasch Juniormester
23. september 2013 - 08:53 #8
Ok.

Mvh.
Lasse
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester