Hej, Svårt att svara på då, du dels är rädd för att skicka massor med data på en gång, och dels inte vill göra en request för varje post :) Mycket intressant med MSMQ, har kollat upp lite referenser till det, och det verkar ju vara utmärkt för detta ändamål.Uppdatera databas via Web service
Jag är på jakt efter en bra lösning.
Jag har en server bakom en brandvägg, kallad serverA, med en applikation som hämtar data från en databas på serverA och som sedan skall uppdatera en databas på serverB. Kopplingen till serverB går via Internet.
<code>
| DB | <---> | API | <---> | .EXE | ---> ~~ INTERNET ~~ --> serverB ---> | DB |
</code>
Frågan är bara vilket som är det bästa sättet att uppdatera informationen på serverB.
1) Skall applikationen på serverA generera en XML-fil som skickas via FTP till serverB där den importeras efter ett schema. XML-filen kan dock vara stor med upp till 10 000 poster och att importera detta varje gång skulle ta tid, inte minst vid överföring.
2) Skall jag konsumera en Web Service på serverB som i sin tur uppdaterar databasen? Går det att säkra denna Web Service? Går det att skicka XML-data inne i en webbservice, om jag tex har många poster som skall uppdateras så att jag slipper göra en http-request för varje post.
3) Något annat sätt?
Tacksam för svar och synpunkter!
PS. Tilläggas kan att applikationen på serverA är skriven i VB6. DS.
Mvh DavidSv: Uppdatera databas via Web service
Du kan använda en webservice tillsammans med WSE för att säkra upp den, men jag tror det blir jobbigt för dig att implementerar i VB6 då (enligt min kunskap) inte har stöd för det, utan du måste bygga allt själv..
Du har sedan även problem med "reliable messages" med en webservice, du kan alltså inte garantera att meddelandet kommer fram, och om något går fel, så vet du inte riktigt vart felet ligger, vilket gör att du kanske måste sända om hela requesten och på server sidan implementera en lösning för att hantera detta så du inte uppdaterar samma post 2 gånger, om den bara får uppdateras 1 gång. Ytterligare en aspekt är vad som händer om serverB inte är tillgänglig, skall din applikation kunna köras vidare eller skall den vara beroende av att serverB är online.
Angående XML i webservicen så går det utmärkt, men jag skulle istället använt mig att entiteter och arrays av klasser som skickas till webservicen. Där en entitet motsvara en rad i din databas.
Jag skulle nog ha tittat på MSMQ över HTTP för att lösa det du vill, men en kö så kan din applikation lägga ner meddelandet på kön och när servern sedan har tid/är online så läser den meddelandet från kön och kan processa det. Du får där med även en garanterad levererning av ditt meddelande och om du packar in allt i en transaction, så slipper du även hantera eventuella dubbel uppdateringar av poster till din databas. Detta förutsätter dock att du kan göra det asynkront, alltså du vill inte ha ett svar tillbaka just nu att datan är sparad, bara att du vet att den sparas någon gång i framtiden.
- MSv:Uppdatera databas via Web service
Räcker ju med att jag skriver en windows-service på serverB i C# som ligger och lyssnar efter nya kömeddelanden vid en viss tidpunkt och skickar nya kömeddelanden till serverA när detta behövs.
Har precis lyckats skapa ett kömeddelande i VB6 också så det verkar ju gå bra.
Frågan är bara hur jag enklast för över en post i databasen till serverB. Skall jag skapa en XML-fil på serverA och skicka hela den som ett kömeddelande eller kan jag skicka ett meddelande för varje post?
Finns det några bra resurser om hur man sätter behörigheter och annat i VB6 för MSMQ?
Tack för svaret!
Mvh David