Toon posts:

[ASP (.net)] client --> server data insert (upload)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wij hebben een programma waarin gebruikers thuis verzamelde gegevens kunnen invoeren. Vanwege de ingewikkelde aard van de gegevens is er gekozen voor een offline invoer.
De ingevoerde gegevens worden tot nu toe met de email opgestuurd, zodat wij die kunnen inserten in de database.
Dat willen we veranderen. Op de een of andere manier moeten de gegevens direhct in de database gestopt kunnen worden.
We hebben gedacht aan een aantal mogelijkheden, maar die lijken allemaal te mislukken. Kan iemand ons de goede kant opwijzen?

Ideeen tot nu toe:
  • een ODBC verbinding vanuit het client programma. Het probleem is dat het wachtwoord van de server af en toe verandert. Dat kun je moeilijk in je programma stoppen
  • een ASP script dat een verbinding legt met de client en de queries server side uitvoert. We weten alleen niet precies hoe dat zou moeten. Als je het IP nummer van de client hebt (en de gebruiker zijn firewall goed instelt), moet je op zich een connectie kunnen leggen, en je queries uit kunnen voeren. Of niet ???

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 27-04 21:24
Het zal een beetje afhangen van de gegevens en het programma dat je nu gebruikt, maar op zich zou je bijvoorbeeld goed met WebServices kunnen werken: een techniek die standaard in .Net zit.

Of als je niet met .Net werkt dan zou je met een gelijke methode kunnen werken: bijvoorbeeld een ASP (of PHP) script op een server. In je programma roep je dan http://www.website.nl/script.asp aan, waarbij je in de POST alle gegevens doet die je wilt hebben, en in het ASP-script zelf zorg je dan dat die gegevens in je database komen te staan. Om de verwerking makkelijker te maken kun je de gegevens dan ook in XML doorgeven.

Ik zou in geen enkel geval de gebruiker direct toegang geven tot je database, dat vraagt natuurlijk om beveiligingsproblemen.

Verwijderd

Topicstarter
Dat klinkt inderdaad heel logisch
Moeten we alleen nog even nakijken hoe dat met de syntax doen. Van POST had ik nog niet gehoord, dat zal wel een wezenlijk onderdeel zijn, schat ik.... (ASP is niet mijn specialiteit, zoals je merkt.)

Bedankt!

Verwijderd

We werken niet met .Net. Dus WebServices vallen (voor nu) af. Wat je voorstelde (een bestand POSTen en het resultaat opvangen met een ASP) is niet helemaal wat we zoeken. Bij het oploaden van een bestand moet je een input-veld van het type "file" hebben. Dit type kan geen standaard "value" aan. Met de hand selecteren is leuk als je 1 of 2 bestanden wilt doorgeven, maar niet als het gaat om vele bestanden (in ons geval 20). Om fouten te voorkomen zouden we dat het liefst automatisch doen zonder dat door de client bestanden hoeft op te zoeken.

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 27-04 21:24
Het feit dat je geen standaard-value kunt opgegeven is een 'beperking' van je browser (die overigens heel goed is).

Maar je kunt toch ook zelf in je programma een socket openen op poort 80 van de server, en zelf je HTTP-request (POST) samen stellen en over die socket duwen?

P.S.: POST is een manier van 'versturen' van een pagina. Standaard haal je pagina's op met het GET-commando. Maar als je een form naar de server toestuurt doe je dat normaal met POST. Is iets van HTTP dus, niet van ASP

[ Voor 32% gewijzigd door Flard op 18-10-2005 19:10 ]


Verwijderd

Topicstarter
even voor de duidelijkheid, aallie is mijn collega, die het betreffende programma ontwikkeld heeft.
Toen ik hoorde dat hij bestanden wilde proberen te uploaden, vond ik dat het tegenwoordig toch gewoon met een ad-hoc database actie moet kunnen. Maar precies hoe, dat weet ik dus niet.

Wat je beschrijft, met POST, houdt dat in dat we een bestand uploaden naar de server, of kunnen we op die manier een asp aanroepen en de client IP en bestandslocaties aan de server doorgeven, voor de constructie van de juiste connectie string en queries??

Verwijderd

Dit is niet bedoeld om jullie af te zeiken, maar het lijkt me beter als je je eerst verdiept in de verschillende programmeermethoden. Je zou dit kunnen doen met o.a. php, asp, asp.net, die keuze maak je zelf. Als je al niet weet wat POST inhoudt, kom je niet echt heel ver... Deze 3 (en nog meer) werken met forms, je submit een form en serverside haal je de waarden uit de POST, daarna stop je ze bv. in je database (oke ik kan dit krom hebben gezegd, maar het komt eropneer dat je de variabelen verstuurt m.b.v. het form en deze dan in de php/asp pagina beschikbaar zijn). Op een andere manier moet je files uploaden, daar heb ik verder geen verstand van.
Wat je beschrijft, met POST, houdt dat in dat we een bestand uploaden naar de server, of kunnen we op die manier een asp aanroepen en de client IP en bestandslocaties aan de server doorgeven, voor de constructie van de juiste connectie string en queries??
Hoe bedoel je 'een asp aanroepen'? Als je een asp.net pagina bouwt, maak je per pagina 2 bestanden. Een .aspx met o.a. de html-code, deze wordt clientside getoond. Hier staan o.a. knoppen op, de code die moet worden uitgevoerd staat in de server-side .aspx.cs. Je roept het zootje dus aan door bv. knoppen op je .aspx te zetten. Het hele formulier wordt dan naar de server verstuurd en je zou daar de waarden uit kunnen lezen. Maar verwacht niet dat je m.b.v. een ip-adres en een bestandslocatie van de client het bestand zou kunnen uploaden... Zou iets moois worden zeg, als mijn ip dan bekend zou worden, zou iedereen de bestanden van mijn pc kunnen lezen?

Dus verdiep je eerst in de beginselen van webscripting voordat je uberhaupt eraan begint anders kan ik je verklappen dat het een dikke bende wordt. Ik ben al een keer lekker gaan programmeren in php zonder er goed over na te denken. Resultaat: een zooi onleesbare code die zo de prullenbak in kan. Een goed ontwerp is onmisbaar bv. Succes!

[ Voor 32% gewijzigd door Verwijderd op 18-10-2005 20:19 ]


Verwijderd

Topicstarter
Je hebt gelijk, Boland, ik heb er inderdaad geen verstand van, van webscripting dan.
Mijn collega aallie is daar bedrevener in. Maar met bestanden van client PC's in een server database stoppen hebben we dus nog helemaal geen ervaring. Jullie hulp wordt zeer op prijs gesteld.
Het gaat daarbij vooral om de aanpak - blijkbaar vind jij het ook niet echt handig om tabellen te uploaden?
het komt erop neer dat je de variabelen verstuurt m.b.v. het form en deze dan in de php/asp pagina beschikbaar zijn
Wat bevattien die variabelen dan? Alle data uit alle tabellen in xml format of zoiets?
Dan zou de server niets van bestandslocaties hoeven weten.
Is dat de kant die we op moeten/kunnen?

Verwijderd

Ik weet niet wat je wilt gaan uploaden... Wil je complete files uploaden? Dat kan wel hoor...

Nou een klein voorbeeld in php:

index.php:
PHP:
1
2
3
4
5
6
7
8
<form action="/">
<input id=testVar type=text value="Test">
<input type=submit value="Verstuur">
</form>

<?php
$test = $_REQUEST["testVar"]; // de waarde van testVar als op de verstuurknop is gedrukt
?>

Kijk, als je deze basic kennis al niet hebt... Koop een boek of zo, maar wij kunnen je niet alle beginselen van webscripting gaan uitleggen.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
IDD. Als het perse via een webpage moet gaan kan je in ASP/ASP.NET/PHP gewoon bestanden opvragen uit een request. Dit request hoeft echt niet perse door een browser verstuurd te worden.

Je zou ook zelf iets met sockets kunnen maken. Er zijn tig mogenlijkheden.

Een webservice zou hier inderdaad een goede oplossing kunnen zijn ( En nee webservices beperken zich echt niet alleen tot asp.net ).

Verder denk ik dat als je zelf al niet een redelijk idee kunt vormen hoe je het op moet lossen dat je het dan beter uit kunt besteden, aangezien er nogal wat veiligheids problemen aan kleven als je een (web)server hebt staan die vrij beschikbaar is om te benaderen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
@Boland
Ok, dus jij raadt ons aan om alle xml data in textAreas te zetten, en dan te uploaden?

[ Voor 5% gewijzigd door Verwijderd op 18-10-2005 23:59 ]


Verwijderd

Programma aanpassen zodat de gegevens gezipt en daarna met FTP versturud kunnen worden (eventueel secure ftp)... Uitpakken en Importeren in de database d.m.v. een sceduled job lijkt mij een aardige oplossing

Verwijderd

Verwijderd schreef op dinsdag 18 oktober 2005 @ 23:58:
@Boland
Ok, dus jij raadt ons aan om alle xml data in textAreas te zetten, en dan te uploaden?
Zeg ik dat? Je kunt ook kiezen voor gewoon inputboxes. Moet je echt zelf weten, ik ga geen ontwerpbeslissingen voor je maken.

Verwijderd

Topicstarter
@rwb
Als het perse via een webpage moet gaan kan je in ASP/ASP.NET/PHP gewoon bestanden opvragen uit een request. Dit request hoeft echt niet perse door een browser verstuurd te worden.
Dat is eigenlijk helemaal niet wat we willen, maar we denken dat dat de makkelijkste manier is!

Eigenlijk hebben we een programma (Delphi 5) dat 20 xml bestanden genereert op de Client PC. Die moeten in de database op de server komen. Ik zat zelf te spelen met het idee van een ODBC verbinding, maar zoals Flard terecht opmerkt: "Ik zou in geen enkel geval de gebruiker direct toegang geven tot je database, dat vraagt natuurlijk om beveiligingsproblemen."
Daarom was ASP of ASP.Net het volgende idee, alleen jammer dat er een browser tussen moet zitten. Het liefst heb je de feedback direct in het programma zelf.

Files uploaden (ook @Sybesma) met ftp is misschien een mogelijkheid, maar dan zit je met allerlei rommel op je server, moet je creatief gaan worden met bestandsnamen en allerlei mapjes enzo om bestanden van verschillende gebruikers elkaar niet te laten overschrijven.

Kun je een beetje meer uitwijden over de tig mogelijkheden van webservices en "iets met sockets"?

Verwijderd

Topicstarter
@Boland
quote:
wilde_bill schreef op dinsdag 18 oktober 2005 @ 23:58:
@Boland
Ok, dus jij raadt ons aan om alle xml data in textAreas te zetten, en dan te uploaden?

Zeg ik dat? Je kunt ook kiezen voor gewoon inputboxes. Moet je echt zelf weten, ik ga geen ontwerpbeslissingen voor je maken.
Nou ja, detail, zou ik zeggen. Het gaat om het idee. De XMLs in een of andere textbox stoppen, versturen en op de server het binnenkomend formulier verwerken, dus data inserten in de database (na wat controle).
Is dat "common practice"?

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Verwijderd schreef op woensdag 19 oktober 2005 @ 00:16:
@rwb

[...]

Eigenlijk hebben we een programma (Delphi 5) dat 20 xml bestanden genereert op de Client PC. Die moeten in de database op de server komen.
Ik zou gewoon dat Delphi programmaatje zo aanpassen dat ie de xml niet opslaat maar via een webservice direct in de database stopt.

Zie bijvoorbeeld:

http://samples.gotdotnet....doc/webservicesintro.aspx
en
http://msdn.microsoft.com...et/html/vbnet10232001.asp

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 27-04 21:24
Verwijderd schreef op woensdag 19 oktober 2005 @ 00:16:
..

Daarom was ASP of ASP.Net het volgende idee, alleen jammer dat er een browser tussen moet zitten. Het liefst heb je de feedback direct in het programma zelf.

..
Ik probeer het nog één keer ;) :+

Wat denk je dat een browser doet? Nou die opent een socket, en spreekt daarna via het HTTP-protocol de webserver aan. In dit protocol voert hij een 'POST'-commando uit, waarbij je dus al jouw XML-files zou kunnen opnemen. Daarna verwerkt de webserver (bijvoorbeeld met ASP) deze request, en geeft nog een tekst terug. De browser toont die tekst die terugkomt grafisch op het scherm.

Lijkt het je dan geen strak plan om gewoon zelf een soort van browser te maken? Gewoon lekker zelf die HTTP-request uitvoeren, waarbij je gewoon zelf die files eraan hangt? Op de server maak je een ASP-script wat dat HTTP-request verwerkt, en dus de XML-files verwerkt in de database, en daarna geef je gewoon een simpele "OK" terug als melding. In je programma weet je dan als er "OK" terug komt op je HTTP-request, dat de gegevens succesvol zijn verstuurd.

Echt, dit is (naar mijn mening althans) zéér basic, dus ga eens wat rondbladeren op internet (zoeken op 'RFC HTTP' zal je wel wat leuks opleveren), want de oplossing is dus ook redelijk gemakkelijk.

[edit]
Wat meneer boven mij zegt, met webservices werken, gaat ook wel (ik zou dan eens gaan zoeken op SOAP, dat werkt voor zover ik weet ook gewoon samen met .Net), en is wellicht een stapje moeilijker om te implementeren, maar daarvoor krijg je wel wat extra functionaliteit terug in de vorm van directere feedback.

[ Voor 13% gewijzigd door Flard op 19-10-2005 00:37 ]


Verwijderd

Verwijderd schreef op woensdag 19 oktober 2005 @ 00:22:
@Boland

[...]


Nou ja, detail, zou ik zeggen. Het gaat om het idee. De XMLs in een of andere textbox stoppen, versturen en op de server het binnenkomend formulier verwerken, dus data inserten in de database (na wat controle).
Is dat "common practice"?
Zo zou je het kunnen doen ja, maar ik begrijp dat je geen webpagina wilt maken. Dan zou je het op de andere aangegeven manieren kunnen doen. Echter, je kunt het testen door eerst een webpagina te maken en server side de gegevens in de database stoppen. Later kun je dan de webpagina vervangen door een zelf geschreven programma.

Verwijderd

We zullen ons een gaan verdiepen in het gebruik van sockets en webservices.

Verwijderd

Topicstarter
Kijk! Dit zijn allemaal uitstekende tips. Daar kunnen we onze kennishonger weer lekker op botvieren.
Bedankt mensen, we gaan er wat moois van maken. 8)
Pagina: 1