WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Flytta databasgränssnitt från webben till (https://www.wn.se/forum/showthread.php?t=20067)

etanders 2007-03-18 21:05

Jag ansvarar för ett webbaserat orderhanteringssystem åt ett företag. Jag utvecklade det själv för ett par år sedan, och har kontinuerligt utökat och underhållit det. Det är i sin nuvarande version skrivet i php och bygger på databaser i MySQL. Kunderna kan via en hemsida lämna ordrar och företagets personal kan via en annan sida expediera ordrarna och se diverse statistik och information. Så långt inget märkvärdigt på något sätt.

Jag har nu funderat på om det vore möjligt att låta företagets gränssnitt till systemet vara ett fristående program istället för en websida. Eftersom kunderna fortfarande lämnar ordrar via hemsidan skulle databasen ligga kvar på webhotellet, så programmet behöver komma åt den där. Jag har gjort en del i Java och C# tidigare, men inte använt JDBC (som jag tror behövs i det här fallet).

I dagsläget är motiveringen för det hela främst att slippa begränsningen av att det är websidor (antingen behöver man använda sessionsvariabler, eller skicka en massa saker med POST, och det blir lätt väldigt rörigt om man skulle råka klicka på webläsarens bakåtknapp m.m.) samt - inte minst - att själv lära mig mer om databaser tillsammans med fristående applikationer.

Kanske finns det bättre sätt, men i det nuvarande systemet öppnar jag en anslutning till databasen varje gång en php-sida "körs", och utför alla SQL-kommandon, stänger anslutningen, och visar resultatet i html.

Hur skulle det fungera i ett fristående program? Måste man öppna en anslutning och stänga den igen för varje gång programmet vill köra en SQL-fråga? Eller räcker det att öppna en anslutning när programmet startar och stänga denna när programmet avslutas? Eller är det timeout på databasen på servern då?

Krävs det speciella inställningar i databasen för att tillåta SQL-anrop från ett annat ip-nummer än den egna servern? Eller räcker det att logga in som en användare med tillräckliga rättigheter?

Alla tankar och tips som kan leda mig vidare tas tacksamt emot!

Tetsou 2007-03-18 21:30

MSHTML läs mer om det här: http://blog.sc.tri-bit.com/archives/163

Tror detta är den enklaste lösningen

etanders 2007-03-18 21:53

Måste säga att jag inte förstår hur du menar, Tetsou...

Charlie 2007-03-18 22:09

Tetsou pratar om att lägga in en IE-komponent i din applikation. Så att dina användare öppnar en vanlig applikation som i sin tur innehåller ett nedskalat internet explorer som öppnar samma sida som vanligt.

Jag ser inte hur det skulle kunna lösa dina problem.
För att besvara dina andra frågor.
Citat:

Hur skulle det fungera i ett fristående program? Måste man öppna en anslutning och stänga den igen för varje gång programmet vill köra en SQL-fråga? Eller räcker det att öppna en anslutning när programmet startar och stänga denna när programmet avslutas? Eller är det timeout på databasen på servern då?
Du behöver inte öppna en ny anslutning för varje fråga. Du öppnar anslutningen -> Gör vad du vill -> Stänger anslutningen. Jag vet inte hur det fungerar med timeouts, förmodligen beror det på vilken databasmotor och ramverk du använder.

Citat:

Krävs det speciella inställningar i databasen för att tillåta SQL-anrop från ett annat ip-nummer än den egna servern? Eller räcker det att logga in som en användare med tillräckliga rättigheter?
Varje användare i MySQL har en inställning för varifrån de får ansluta.

eg0master 2007-03-18 22:10

Jag tror att han försöker berätta för dig att han tycker du ska köra allt på webben i fortsättningen också och kommunicera via en inbäddad IE i din applikation. Ignorera honom då han uppenbarligen inte läst ditt inlägg och verkar tro att du vill göra en stand-alone app för att kunden vill ha det medans du ju i själva verket vill något annat.

Att du pratar om JDBC tolkar jag som att du tänkt använda Java. Hur det funkar där vet jag inte, men i .Net får du en connectionpooling kopplad till connectionsträngen så du öppnar/stänger förbindelser i din kod precis som om du bara behövde dem just då och .Net frameworket kommer hålla en förbindelse öppen om det behövs. Att ha en öppen förbindelse till databasen är knappast avgörande prestandamässigt så det är bara att jobba "som vanligt".

Ja din MySQL server måste tillåta access för en databasanvändare från ett annat IP än bara localhost. Det kan ju vara samma användare som du använder nu om du vill, men IP:t måste tillåtas. Se GRANT kommandot i mysql.

etanders 2007-03-18 22:34

Citat:

Jag tror att han försöker berätta för dig att han tycker du ska köra allt på webben i fortsättningen också och kommunicera via en inbäddad IE i din applikation. Ignorera honom då han uppenbarligen inte läst ditt inlägg och verkar tro att du vill göra en stand-alone app för att kunden vill ha det medans du ju i själva verket vill något annat.
Precis, weblösningen fungerar bra idag, men jag är nyfiken på andra alternativ.

Förstår att databasanslutningarna ligger i en pool, men antag att jag i min applikation skulle vilja köra en sql-fråga var tionde sekund. Är det rätt uppfattat att bästa sättet är att öppna/hämta anslutningen från poolen, köra frågan och lämna tillbaka anslutningen varje gång? Ska jag göra på samma sätt om frågan skulle köras varje sekund istället?

Är det för övrigt någon som har tips på tutorials eller liknande för att läsa från/skriva till befintliga databaser från Java (eller C#). De tutorials jag har hittat hittills har tagit allt från början och försökt förklara vad en databas är och hur sql-kommandon används. Det blir lite tröttsamt...

knivstawebhotell.se 2007-03-22 09:52

Citat:

Originally posted by etanders@Mar 18 2007, 22:05
I dagsläget är motiveringen för det hela främst att slippa begränsningen av att det är websidor (antingen behöver man använda sessionsvariabler, eller skicka en massa saker med POST, och det blir lätt väldigt rörigt om man skulle råka klicka på webläsarens bakåtknapp m.m.) samt - inte minst - att själv lära mig mer om databaser tillsammans med fristående applikationer.
Om inte dina kunder har efterfrågat en migrering bort från websidor så skulle jag i ditt ställe noga överväga om detta är värt besväret eller inte. Har kunderna behov av dessa program från olika plattformar eller är det bara en plattform? Websidebaserad lösning är ju himla smidig i portabilitetshänseende.

Varför blir det rörigt om man klickar på bakåtknappen? Kan du inte designa det hela så att det inte blir rörigt?

etanders 2007-03-23 19:15

Citat:

Om inte dina kunder har efterfrågat en migrering bort från websidor så skulle jag i ditt ställe noga överväga om detta är värt besväret eller inte. Har kunderna behov av dessa program från olika plattformar eller är det bara en plattform? Websidebaserad lösning är ju himla smidig i portabilitetshänseende.
OK, jag formulerar om mig lite. Det nuvarande systemet fungerar bra och kunden är nöjd. Men det finns lite funktionalitet som ännu inte är implementerad. Det är inte något högprioriterat i stunden, utan mer sådant som eventuellt skulle kunna läggas till inför nästa säsong i verksamheten.

Min tanke var att implementeringen av detta skulle vara enklare för mig som utvecklare om jag slapp allt vad hemsidor heter (sessionsvariabler, html-formulär, POST, och annat jobbigt) och kunde skriva det som ett "vanligt" program. Dock skulle jag fortfarande behöva ha åtkomst till MySQL-databasen på webhotellet.

Detta program skulle användas hos kunden på <10 datorer, och portabilitet är inget som behöver tas särskild hänsyn till i detta specifika fall.

knivstawebhotell.se 2007-03-23 20:22

Citat:

Originally posted by etanders@Mar 23 2007, 20:15
Min tanke var att implementeringen av detta skulle vara enklare för mig som utvecklare om jag slapp allt vad hemsidor heter (sessionsvariabler, html-formulär, POST, och annat jobbigt) och kunde skriva det som ett "vanligt" program. Dock skulle jag fortfarande behöva ha åtkomst till MySQL-databasen på webhotellet.
Det finns en mängd olika API:er för att kommunicera med MySQL. Om brandväggen hos ditt webhotell tillåter åtkomst till databasen samt om användarna på databasen har åtkomsträttigheter från "nätet" så borde implementeringen i det "vanliga" programmet vara det enda återstående jobbet... :)


Alla tider är GMT +2. Klockan är nu 07:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson