I'm using Powerbuilder 2019 R2 Beta and SnapDevelop.
I migrated a simple application to PB2019R2 and then built a Web API in SnapDevelop following the instructions in
I migrated a datawindow in the application and scaffolded a web api to trial out a datawindow update using the Snapdevelop datastore object.
The main controller code is basically
var result = _id_project_listservice.Update(dataStore);
return Ok(result);
I put a button on a window in the PB application to call the api. I used the existing application to retrieve and change details, then clicked the button to update the database with the datawindow changes using the API. Everything worked perfectly for insert, update and delete and setting up the Web API and scaffolding was very straightforward.
The only drawback was that the response seemed slow at around 2 seconds or more. I put in some code to check timings and the call to the RestClient to submit the request was taking over 2 seconds.
Running an update from Postman with data extracted using ExportJson to do the same update returned in under 0.1 seconds. The snapdevelop console also shows the request finished in under 0.1 seconds. I also checked out update timings in SQL Server Profiler and these were also under 0.1 seconds.
I noticed that sometimes the processing was a lot quicker and can now replicate it at will. If I do an RestClient Submit with no changed data, this takes 2 seconds or more. I then immediately send the submit again, the second one only takes 0.2 seconds. Repeating this consistently shows the same results.
This indicates that the response could potentially be 0.2 seconds - only question is where is the extra 1.8 or more seconds coming from? - any suggestions gratefully received - TIA. Jim
I've included the button code I used to send the update to the API.
//Send updated Datawindow details in dw format.
String ls_ResponseBody
Integer li_SendReturn
SETPOINTER (HourGlass!)
RestClient lrc
lrc = Create RestClient
lrc.SetRequestHeaders( "Content-Type:application/json;charset=UTF-8~r~nAccept-Encoding:gzip" )
//Uses the DataWindow JSON
//Server determines whether to update according to the data state
//DataWindow column name and type must match with that of server
dw_list.accepttext()
string ls_json
string ls_1start, ls_2export, ls_3submit, ls_4submitend, ls_msg
ls_1start = string (Today(), "yyyy-mm-dd hh:mm:ss.fffff")
ls_json = dw_list.ExportJson( true, true)
ls_2export = string (Today(), "yyyy-mm-dd hh:mm:ss.fffff")
ls_3submit = string (Today(), "yyyy-mm-dd hh:mm:ss.fffff")
li_SendReturn = lrc.submit ("http://localhost:5000/api/D_Project_List/Update",ls_Responsebody, dw_list,True, True)
//li_SendReturn = lrc.SendPostRequest("http://localhost:5000/api/D_Project_List/Update", ls_json, ls_Responsebody)
ls_4submitend = string (Today(), "yyyy-mm-dd hh:mm:ss.fffff")
ls_msg = 'Return code ' + STRING (li_sendreturn) + ' Response ' + ls_Responsebody
ls_msg += '. ~r~nSubmit started at ' + ls_3Submit
ls_msg += '. ~r~nSubmit ended at ' + ls_4submitend + '.'
MessageBox('Return ', ls_msg)
RETURN
I don't think it's the web server because I did some testing at the office. I can consistently get the Slow, fast cycle when connected to the network.
If I take the network cable out, I get a response of around 0.25 secs consistently for repeated requests..
If I put it back in, response goes back to 3.5 seconds
If I take it out, it returns to 0.25 secs.
.... above pattern repeats consistently.
The same front end and web server are running locally on my PC while I'm testing and there's no sign of latency when the network is disconnected, so I think something else is causing the problem although I've no idea what is resulting in the slow response.
One good thing is that I know that a 0.25 response is possible.
Cheers
Jim
Unfortunately, I have tested it repeatedly on my end but still can’t reproduce this issue.
No matter whether there are new data updated in the DataWindow or not, it takes about 0.2-0.3s for the Submit function to response.
Are there any special settings between the computer in your office and that in your home?
Regards,