02. januar 2005 - 16:51Der er
31 kommentarer og 1 løsning
hente data fra en webservice
Hejsa E
Jeg læser og læser og er nu mere forvirret end da jeg startede!
Jeg har lavet en webservice, som giver nogle data og prøver nu på at hente dem over i en PDA. Data skal hentes over, så de kan findes frem igen offline.
Jeg skal finde ud af om der skal laves en DB eller om data skal gemmes i en XML fil. Det kunne være fedt hvis man kunne afskære folk fra direkte adgang til dataene, men kun kan se dem i applikationen. Kan man kryptere en XML/DB så kun app. har adgang ?
Jeg vil gerne have hjælp til at hente data over på PDA'en og hjælp til at vise dem på skærmen fra hvor de nu gemmes.
Jeg er grøn til .net/C# så jeg må bede om nogle eksempler.
arne_v er du sikker på det også gælder compact framework? Jeg mener der er en del begrænsninger også vedr. kryptering...
Mht. at opbevare data lokalt på pda'en: Du kan sagtens opbevare det i XML, men hvis det er store datamængder, så vil jeg anbefale en database i stedet.
Når du skal hente data via en webservice til din PDA, så skal du tilføje en web reference fra din webservice til din PDA applikation. Herefter kan du oprette en instans af din webservice klasse og derefter frit kalde metoderne i din webservice.
Indtil videre har jeg fået lavet en reference til servicen og fået hentet data ind i et dataset, men jeg er ikke helt sikker hvad jeg har i datasettet, da jeg ikke har fundet ud af at skrive noget ud...
Det skal heller ikke krypteres, for det skal jo kunne åbnes igen, men nok nærmere kodes og så dekodes at applikationen. Min fejl med forvekslingen af teknologier.
Jeg sidder stadig og bakser med at vise mine data, og har fundet ud af at der i compact framework ikke er noget der hedder databind...
ikke databind, men du kan sætte displaymember og valuemember
Til at tjekke dit dataset kan du gøre 2 ting: når du har skrevet den, så kør den lokalt og kald den med en testværdi, så kan du se hvad svaret bliver og dermed hvad dit dataset vil indeholde.
Du kan så i dit pda program gøre dette:
DataSet result = ...webservicemetode(variabel); MessageBox.Show(result.table[0].rows[0]["Navnpåkolonne"]);
kan godt være der er en typo idet, men det er princippet (bare for at teste)
mht. kode/dekode vs kryptere: du skal da kunne gå begge veje! Der er da ingen der vil krytere noget, som aldrig kan dekrypteres! :o) Kryptering er jo mest et spørgsmål om at skjule/ulæseliggøre data midlertidigt, så de kun kan læses af dem der har lov, f.eks. i dit program
Åh ja, jeg er lidt forvirret. Sidder på .Net kursus (webservices) og skal skrive lavt (folk klager over de larmende tastaturer).....
Jeg har lagt DS over i en XML fil, som bliver gemt på PDA'en, men måske skal det gemmes i en DB i stedet, Jeg er ikke sikker. Hvad menes med store datamængder når vi snakker PDA ?
Ja ja, det er lagt i en XML indtil videre, og det ser fint ud. Så vi skal bare have lavet en db og lagt det deri i stedet og evt. noget kryptering.
Der kan blive tale om et par tusinde poster, så en DB er nok det rette valg.
Mht kryptering, så skal jeg bare have lavet noget, så der ikke er nogen tvivl om at data'ene er beskyttet, så hvis nogen vil rode med dem, så skal de gøre en indsats for at bryde noget. Jeg er med andre ord klar over at hvis folk vil have mine data, så får de dem, men der skal ikke være tvivl om ophavsretten....
Så med mindre der findes noget smart, der ikke er for langsomt at søge i, så kan jeg nøjes med at bytte rundt på nogle bogstaver og tal...
hvis du vil noget kan du jo beskytte databasen med et password (så vidt jeg husker) eller du kan kryptere alle data, men det er jo lidt mere omstændeligt
Hvad er licensreglerne og priser på SQL server CE Jeg vil gerne lægge programmet op til fri download på en af mine portaler, så folk kan have mine data med på farten.
Fandt det selv og poster det lige så det er til at finde igen http://www.microsoft.com/sql/ce/howtobuy/default.asp : Microsoft SQL Server 2000 Windows® CE Edition (SQL Server CE) is distributed as a downloadable development product for mobile applications. You can deploy SQL Server CE to an unlimited number of mobile devices provided that they operate in stand-alone mode. In stand-alone mode, the device does not connect to or use the resources of any SQL Server system not present on the device.
Der findes da kryptering af data i andre databaser, så det må vel også være muligt i SQL CE ?
Nåh, som jeg lige umiddelbart læser det, så skal man have en fuld SQL Server installeret for at kunne udvikle CE applikationer, og det har jeg ikke og skal heller ikke købe en :-(
OK jeg prøver med XML, men kan det virkelig passe at man skal have SQL server installeret hvis man ikke skal lave remote data access (RDA) eller merge replication ? http://www.microsoft.com/sql/ce/productinfo/sysreq.asp
jeg henter data fra webservicen og gemmer dem på PDA'en DataSet dsTilbud = new DataSet(); vgTilbud.VinGuideXML Tilbud = new vgTilbud.VinGuideXML(); dsTilbud = Tilbud.VinGuideTilbud(); dsTilbud.WriteXml(@"Program Files\VinGuide\vgt.xml");
og henter dem frem igen (offline)
DataSet dsTilbud = new DataSet(); dsTilbud.ReadXml(@"Program Files\VinGuide\myfile.xml");
Hver post i XML'en ser sådan ud: <Tilbud diffgr:id="Tilbud1" msdata:rowOrder="0"> <guid>{B71DBB4E-8BF5-4D46-BBFD-46362B150A96}</guid> <vintype>Rødvin</vintype> <navn>Caliza Tempranillo</navn> <aargang>0</aargang> <klassifikation /> <appellation /> <producent>Felix Solis</producent> <land>Spanien</land> <omraade>Valdepeñas</omraade> <pris>37</pris> <pris2>38</pris2> <karakter>0</karakter> <alkohol>0</alkohol> <garvesyre /> <lagring>Fad</lagring> <startdato>2005-01-01</startdato> <slutdato>2005-01-08</slutdato> <tilbudspris>125.00</tilbudspris> <antal>6</antal> <spar>96.70</spar> <forhandler>Bilka</forhandler> </Tilbud>
Jeg er ikke sikker på du kan lave replikering etc. uden en "professionel" DB, altså en der koster...
Mht. at udskrive...
Du kan da gøre som jeg skrev tidligere, men der er en lille hage ved det (kommer senere)
Tilføj en listbox (lstbx)
DataTable DT = dsTilbud.Tables[0]; lstbx.DataSource = DT; (glemte jeg før, er datakilden for listen) lstbx.DisplayMember = "navn"; (denne angiver navnet på den kolonne der vises) lstbx.ValueMember = "guid"; (denne angiver en "skjult" værdi, som du kan bruge hvis du senere skal identificere en valgt linie)
denne konstruktion burde vise en liste af dine vin navne
Hagen ved det er at du er nødt til at lave en ny tabel med alle ønskede værdier i én kolonne, hvis du vil sie dem kun i en listbox. Du kan dog, med fordel, lave en tabel som indeholder en eller flere nøgle oplysninger og så bruge valuemember til at slå værdier op i dit dataset, hvor du så i labels viser resten af oplysningerne. Disse kan opdateres ved selected index changed eventen
Desuden koster en SQL CE ikke noget, sådan som jeg læser licensbetingelserne, det er kun hvis den skal arbejde sammen med den fulde version. Ellers tillader MS at den udstedes på en udvikler licens, også selvom programmet ikke er udvikling. Altså hvis SQL CE kører uden andre licensberettigede programmer fra MS. Så når det jeg laver er egen (med hjælp :-) udvikling, så kan jeg godt brugen den.
Problemet er at når jeg læser systemkravene til at udvikle til CE så skal man have den fulde SQL Server installeret for at kunne deploye en SQL CE sammen med installationsprogrammet af sit eget program....
jeg er ikke 100% sikker på licens reglerne for SQL Server CE, men jeg håber du finder en god løsning. Der er et stort potentiale i de anvendte teknikker :)
Hvis din applikation med SQL CE feks skal hente data fra en webservice der henter data fra en SQL Server så indgår SQL CE i en enterprice solution og så skal der betales licens.... ellers ikke.
Har du prøvet at lave en PDA applikation med SQL CE på og har kunnet deploye den uden at du havde en fuld SQL Server installeret ?
Jeg tænker at denne formulering fra MS er ligesom deres betingelser med win 2003 webedition, som kun kan køre webapplikationer. Den kan nemlig sagtens køre andre programmer, men så er det ud over licensen...
ladyhawke> Jeg må altså lige have hjælp til at få den SQL server CE til at virke, for der er for mange data til at det kan køre optimalt i XML, ligesom det sikkert er nemmere at kryptere i compact framework med SQL server CE end i XML (Jeg ved det er ligetil i SQL server CE, for jeg har jo læst på det).
Synes godt om
Ny brugerNybegynder
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.