Avatar billede 2705 Nybegynder
01. april 2011 - 11:07 Der er 7 kommentarer og
1 løsning

Updater til applikation

Hej

Jeg har en applikation som jeg skal have bygget en updater til.

Meningen er at den skal kunne se på vores webserver om der er opdateringer. Vi har en eksisterende xml-fil der skal benyttes.

Derudover skal man (valgfrit) kunne hente en masse ekstra filer, som applikationen kan benytte. Man kan egentlig se det som plugins.

Jeg har googlet og fundet en masse eksempler på hvordan man opdaterer selve applikationen. Men jeg vil gerne have denne ekstra funktionalitet med at kunne hente x antal filer.
Og vi snakker pt op mod 1000 filer. Jeg havde forestillet mig at man kunne lave x antal pakker på serveren der indeholder f.eks. 200 filer. Og updateren så skal hente disse pakker i stedet for hver enkelt fil (Bliver til rigtig mange http requests).

Har i nogle forslag, gode idéer eller bare inspiration?

Mvh. Jesper
Avatar billede magic-mouse Novice
01. april 2011 - 12:24 #1
Lav en service som du kan anmode om.

Hvis du har en XML fil er det vel ikke noget problem. Forløbet skal foregå ca. sådan her:

* Applikation sender request til service.
* XML dokumentet med filer som skal findes sendes tilbage.
* Applikationen regner ud hvad som skal hentes af filer, og hvad som skal slettets, samt hvad som ikke skal røres.
* Nye filer downloades, til en sepperat mappe.
* Gamle filer slettes.
* Nye filer flyttes over, der hvor de skal være.

Opdatering færdig.

På den måde har du 1+n HTTP request hvor n er eksisterende filer - mænden af aktuelle filer.

Selve applikationen zipper du til download så at du ikke har problemet med at man skal installere ved at update, men bare sikre at applikationen er up to date.

Og ved at lave udregningerne på client side bliver serverload lavt.

+ Servicen kan entligt selv lave en liste da mange services arbejder med XML som overførelses liste.
Avatar billede 2705 Nybegynder
01. april 2011 - 14:36 #2
Hvis du med service mener en php-side der håndterer mit request, så var det også noget i den retning jeg havde forestillet mig.
Bortset fra at de gamle filer skal blive liggende, og man så spørges om filerne skal overskrives med de nye.

Jeg har desuden tænkt at hvis jeg i princippet laver en ny xml-fil på serveren hvor filnavnene på disse pakker ligger i, kan jeg lave det sådan at jeg kun henter de pakker der er brug for. Jeg kender datoen for sidste gang der blev lavet en update, så hvis jeg fortæller serveren at jeg skal hente de pakker der er lavet siden denne data får jeg de sidste nye.

Og ja havde også tænkt at serveren kunne lave den xml til mig som jeg skal bruge på client side, så jeg måske bare henter alle de filer der står i xml-filen.

Smid et svar. Tror konceptet er på plads nu :)
Avatar billede arne_v Ekspert
01. april 2011 - 14:47 #3
Har du checket at ClickOnce ikke kan klare dit problem??
Avatar billede magic-mouse Novice
01. april 2011 - 14:51 #4
http://en.wikipedia.org/wiki/Web_service <--

Er bedst på XML-RPC da det er det jeg har arbejdet mest med, men det er en gammel teknik. SOAP er mere populært.

Årsagen til at du ikke skal bruge en "PHP" side som behandler dit request er 2 årsager.

1. Sikkerheden er ikke så sikker som ved services. Det er en gammel og gennemprøvet teknik, sikkerheden er derfor i top.
2. Du kan kalde din service fra alt. Dvs. PHP kan snakke med Java, Java kan snakke med apache, C# kan snakke med delphi. Dvs. uanset hvad kan du sende en forspørgsel.

Istedet for at få de filer som findes fra sidste besøg. Så lav en sammenlignig. Hvis der sker en fejl på download eller du ikke fik alle filerne ned, vil updateren mildest talt fucke up.

Tænk istedet sådan her:

CLIENT
Fil1 - version 1.1
Fil2 - version 1.1
Fil3 - version 1.1

SERVER
Fil2 - version 1.1
Fil3 - version 1.2
Fil4 - version 1.0

Så vil din updater se at fil 1 skal slettes fil 2 er up-to-date fil 3 skal opdateres og fil 4 skal downloades.
Avatar billede 2705 Nybegynder
01. april 2011 - 15:18 #5
#3 ClickOnce mener jeg kun understøtter opdatering af selve applikationen og ikke at jeg optionelt skal kunne vælge en nogle filer til/fra. Men kan være jeg tager fejl?

#4 Sikkerheden er jeg som sådan ligeglad med da det ikke er kritiske data.
Men det kunne godt være man skal lave en service. Også fordi jeg skal have mulighed for at sende nogle shared filer til serveren. Der ville alternativet jo være en HTTP POST.

Har du nogle eksempler på hvordan sådan en oprettes og hvordan den tilgås fra C#?
Avatar billede magic-mouse Novice
01. april 2011 - 16:17 #6
Hvis du laver det i C# er det super nemt. Du går bare ind og laver et nyt project. Vælger webservice som det du vil lave og så er du startet.

Du anvender den (consumer) ved at højre klicke på det project som skal consume, og vælg "add web reference".

Der findes 1000 vis af guides på nettet til precist dette.

Hvis du sidder fast så skriv så hjælper jeg gerne.

Jeg bruger selv en service til indlogning på min side. http://service.magic-mouse.net/Service.asmx har du et eksempel på hvordan et funktionelt service ser ud. Får du noget i den stil så er det korrekt.
Avatar billede magic-mouse Novice
01. april 2011 - 16:37 #7
Lægger også lige et svar.

Skulle det gå helt i kage http://www.magic-mouse.net/contact.aspx - Er ked af at presentere dig med en kontakt form men det skaber mindre spam.
Avatar billede 2705 Nybegynder
02. april 2011 - 21:11 #8
Yes, har lavet en web service før. Men den jeg lavede kørte på en server der understøttede asp.net.
Er det det samme med en server der understøttet php?

Men tak for hjælpen. Nu har jeg da noget at gå videre med.
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