
Fd medlem
Inte tillämpbar
2013-11-21
08:37
- Markera som ny
- Bokmärke
- Prenumerera
- Inaktivera
- Prenumerera på RSS-flöde
- Markera
- Skriv ut
2013-11-21
08:37
"Best practice" ang Visma API (AdkOpen) i Webbmiljö - Visma Integration
Hejsan
Vi håller just nu utveckla ett WebApi som kommer kommunicera med Visma-Api:et. Detta WebAPI kommer fungera som mellanlager till vårt webbaserade kundhanteringssystem (CRM).
Det kommer finnas tillfällen då ett flertal anrop måste ske till Visma och min fråga berör dessa tillfällen.
Vad anser ni är bäst från er sida:
Att öppna och stänga anslutningen till Vismadatabasen för varje webbförfrågan?
Eller
Att låta klienten (vårt CRM) öppna anslutningen genom ett anrop, sedan göra vad ska i flera anrop för att sedan stänga anslutningen i ett sista anrop?
Mvh
Svara
3 SVAR 3

Fd medlem
Inte tillämpbar
2013-11-21
10:38
- Markera som ny
- Bokmärke
- Prenumerera
- Inaktivera
- Prenumerera på RSS-flöde
- Markera
- Skriv ut
2013-11-21
10:38
Hej!
Det beror lite på vad ett anrop innebär. Spontant känns det som det sistnämnda vore bästa sättet att göra det på.
Det är onödigt att göra en Close om man ändå tänker lägga in/läsa ytterligare data från Visma Administration. Så har du en batch med operationer som ska utföras, gör dessa, och stäng företaget när det är klart.
Det beror lite på vad ett anrop innebär. Spontant känns det som det sistnämnda vore bästa sättet att göra det på.
Det är onödigt att göra en Close om man ändå tänker lägga in/läsa ytterligare data från Visma Administration. Så har du en batch med operationer som ska utföras, gör dessa, och stäng företaget när det är klart.

Fd medlem
Inte tillämpbar
2014-10-17
21:10
- Markera som ny
- Bokmärke
- Prenumerera
- Inaktivera
- Prenumerera på RSS-flöde
- Markera
- Skriv ut
2014-10-17
21:10
Hej Dennis,
Nu har frågan ett par månader på nacken men jag passa på att fråga ändå.
Alternativ 1 är dåligt av flera olika skäl, bl.a. att du inte vill skapa belastning på ert ekonomisystem via en webbapplikation (en överbelastningsattack mot er sajt hade kunnat slå ut ekonomisystemet/fylla det med skräpdata). Eftersom Administration använder en flatfilsdatabas så är postlåsning också ett stort problem - Codebase-drivrutinen som används kan inte göra postlåsning / rad utan låser hela .DBF-filen när uppdateringar/nyskapande görs.
Som Johan skriver så är alternativ 2 bättre, men beroende på hur tung belastning det handlar om så hade det förmodligen varit bättre att chacha Visma-databasen i en SQL-databas (t.ex mySQL eller SQL Express) och göra alla läs-operationer mot den istället. Att batcha alla operationer inom ramarna för en anslutning är också att föredra.
Företaget jag representerar har byggt ett eget .Net API ovanpå Vismas API och då kan du göra t.ex. följande:
Ovanstående hade, inom samma öppning mot visma-databasen, lagt upp en ny kund, använt det av Visma tilldelade kundnumret och skapat en faktura på den kunden samt lagt till en fakturarad mot artikel "100" med beställt- och levererat antal satt till "1".
Nu har frågan ett par månader på nacken men jag passa på att fråga ändå.
Alternativ 1 är dåligt av flera olika skäl, bl.a. att du inte vill skapa belastning på ert ekonomisystem via en webbapplikation (en överbelastningsattack mot er sajt hade kunnat slå ut ekonomisystemet/fylla det med skräpdata). Eftersom Administration använder en flatfilsdatabas så är postlåsning också ett stort problem - Codebase-drivrutinen som används kan inte göra postlåsning / rad utan låser hela .DBF-filen när uppdateringar/nyskapande görs.
Som Johan skriver så är alternativ 2 bättre, men beroende på hur tung belastning det handlar om så hade det förmodligen varit bättre att chacha Visma-databasen i en SQL-databas (t.ex mySQL eller SQL Express) och göra alla läs-operationer mot den istället. Att batcha alla operationer inom ramarna för en anslutning är också att föredra.
Företaget jag representerar har byggt ett eget .Net API ovanpå Vismas API och då kan du göra t.ex. följande:
using ( new SpcsConnection()){
var customer = new Customer(){ Name = theNewName };
customer.Save();
var invoice = new Invoice() { CustomerNumber = customer.Number };
invoice.Rows.Add(new Invoice.Row() {ArticleNumber = "100", Quantity1 = 1, Quantity2 = 1 });
invoice.Save();
}
Ovanstående hade, inom samma öppning mot visma-databasen, lagt upp en ny kund, använt det av Visma tilldelade kundnumret och skapat en faktura på den kunden samt lagt till en fakturarad mot artikel "100" med beställt- och levererat antal satt till "1".

Fd medlem
Inte tillämpbar
2015-01-04
20:06
- Markera som ny
- Bokmärke
- Prenumerera
- Inaktivera
- Prenumerera på RSS-flöde
- Markera
- Skriv ut
2015-01-04
20:06
Hejan Benny!
Du får gärna höra av dig till mig och berätta lite mer om ert API. Finns på carl(punkt)palsson(snabela)pumplagret(punkt)se
Du får gärna höra av dig till mig och berätta lite mer om ert API. Finns på carl(punkt)palsson(snabela)pumplagret(punkt)se
